| #![feature(start, box_syntax, core_intrinsics, alloc_error_handler)] |
| #![no_std] |
| |
| 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) -> ! { |
| unsafe { |
| core::intrinsics::abort(); |
| } |
| } |
| |
| #[alloc_error_handler] |
| fn alloc_error_handler(_: alloc::alloc::Layout) -> ! { |
| unsafe { |
| core::intrinsics::abort(); |
| } |
| } |
| |
| #[start] |
| fn main(_argc: isize, _argv: *const *const u8) -> isize { |
| let world: Box<&str> = box "Hello World!\0"; |
| unsafe { |
| puts(*world as *const str as *const u8); |
| } |
| |
| 0 |
| } |