| #![feature(start, core_intrinsics, alloc_error_handler, lang_items)] |
| #![no_std] |
| #![allow(internal_features)] |
| |
| extern crate alloc; |
| extern crate alloc_system; |
| |
| use alloc::boxed::Box; |
| |
| use alloc_system::System; |
| |
| #[global_allocator] |
| static ALLOC: System = System; |
| |
| #[link(name = "c")] |
| extern "C" { |
| fn puts(s: *const u8) -> i32; |
| } |
| |
| #[panic_handler] |
| fn panic_handler(_: &core::panic::PanicInfo<'_>) -> ! { |
| core::intrinsics::abort(); |
| } |
| |
| #[alloc_error_handler] |
| fn alloc_error_handler(_: alloc::alloc::Layout) -> ! { |
| core::intrinsics::abort(); |
| } |
| |
| #[lang = "eh_personality"] |
| fn eh_personality() -> ! { |
| loop {} |
| } |
| |
| #[no_mangle] |
| unsafe extern "C" fn _Unwind_Resume() { |
| core::intrinsics::unreachable(); |
| } |
| |
| #[start] |
| fn main(_argc: isize, _argv: *const *const u8) -> isize { |
| let world: Box<&str> = Box::new("Hello World!\0"); |
| unsafe { |
| puts(*world as *const str as *const u8); |
| } |
| |
| 0 |
| } |