Skip to content
Snippets Groups Projects
lib.rs 613 B
Newer Older
Jeremy Soller's avatar
Jeremy Soller committed
#![no_std]
Jeremy Soller's avatar
Jeremy Soller committed
#![feature(lang_items)]
Jeremy Soller's avatar
Jeremy Soller committed

extern crate compiler_builtins;
extern crate platform;

extern crate fcntl;
extern crate unistd;

pub use fcntl::*;
pub use unistd::*;
use core::fmt;

struct PanicWriter;

impl fmt::Write for PanicWriter {
    fn write_str(&mut self, s: &str) -> fmt::Result {
        platform::write(2, s.as_bytes());
        Ok(())
    }
}

Jeremy Soller's avatar
Jeremy Soller committed
#[lang = "panic_fmt"]
#[no_mangle]
pub extern "C" fn rust_begin_unwind(fmt: fmt::Arguments, file: &str, line: u32) -> ! {
    use fmt::Write;

    let _ = PanicWriter.write_fmt(format_args!("{}:{}: {}\n", file, line, fmt));

    platform::exit(1);