blob: ba0d0558652f33ed45134ec47c3e46e2f0f933a3 [file] [log] [blame]
/// Lang item required to make the normal `main` work in applications
// This is how the `start` lang item works:
// When `rustc` compiles a binary crate, it creates a `main` function that looks
// like this:
//
// ```
// #[export_name = "main"]
// pub extern "C" fn rustc_main(argc: isize, argv: *const *const u8) -> isize {
// start(main)
// }
// ```
//
// Where `start` is this function and `main` is the binary crate's `main`
// function.
//
// The final piece is that the entry point of our program, _start, has to call
// `rustc_main`. That's covered by the `_start` function in the root of this
// crate.
#[lang = "start"]
extern "C" fn start(
main: fn(),
_argc: isize,
_argv: *const *const u8,
) -> isize {
main();
0
}
#[lang = "eh_personality"]
extern "C" fn eh_personality() {}
#[lang = "panic_fmt"]
unsafe extern "C" fn rust_begin_unwind() {
loop {}
}