xref: /aosp_15_r20/external/bazelbuild-rules_rust/test/no_std/main.rs (revision d4726bddaa87cc4778e7472feed243fa4b6c267f)
1 #![no_std]
2 #![no_main]
3 #![feature(lang_items)]
4 
5 use core::arch::asm;
6 use core::arch::global_asm;
7 use core::panic::PanicInfo;
8 
9 #[panic_handler]
panic(_info: &PanicInfo) -> !10 fn panic(_info: &PanicInfo) -> ! {
11     exit(1);
12 }
13 
14 global_asm! {
15     ".global _start",
16     "_start:",
17     "mov rdi, rsp",
18     "call start_main"
19 }
20 
exit(status: i32) -> !21 fn exit(status: i32) -> ! {
22     unsafe {
23         asm!(
24             "syscall",
25             in("rax") 60,
26             in("rdi") status,
27             options(noreturn)
28         );
29     }
30 }
31 
32 #[no_mangle]
start_main(_stack_top: *const u8) -> !33 unsafe fn start_main(_stack_top: *const u8) -> ! {
34     exit(0);
35 }
36 
37 #[lang = "eh_personality"]
eh_personality()38 extern "C" fn eh_personality() {}
39