29 lines
620 B
Rust
29 lines
620 B
Rust
#![no_std]
|
|
#![no_main]
|
|
|
|
use core::ffi::{c_char, CStr};
|
|
|
|
extern "C" {
|
|
pub fn print(message: *const c_char);
|
|
fn panic(panic_message: *const c_char) -> !;
|
|
fn test_layered() -> *const c_char;
|
|
}
|
|
|
|
#[no_mangle]
|
|
pub extern "C" fn rust_main() {
|
|
unsafe {
|
|
print(
|
|
CStr::from_bytes_with_nul(b"Hello from Rust!\n\0")
|
|
.unwrap()
|
|
.as_ptr(),
|
|
);
|
|
print(test_layered());
|
|
}
|
|
}
|
|
|
|
|
|
#[panic_handler]
|
|
unsafe fn panic_wrapper(_panic_info: &core::panic::PanicInfo) -> ! {
|
|
panic(CStr::from_bytes_with_nul(b"panic from rust\0").unwrap_or_default().as_ptr())
|
|
}
|