Implement printf (very simple version)
This commit is contained in:
+7
-16
@@ -10,27 +10,17 @@ extern crate stdlib;
|
||||
extern crate string;
|
||||
extern crate 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(())
|
||||
}
|
||||
}
|
||||
|
||||
#[lang = "eh_personality"]
|
||||
#[no_mangle]
|
||||
pub extern "C" fn rust_eh_personality() {}
|
||||
|
||||
#[lang = "panic_fmt"]
|
||||
#[no_mangle]
|
||||
pub extern "C" fn rust_begin_unwind(fmt: fmt::Arguments, file: &str, line: u32) -> ! {
|
||||
use fmt::Write;
|
||||
pub extern "C" fn rust_begin_unwind(fmt: ::core::fmt::Arguments, file: &str, line: u32) -> ! {
|
||||
use core::fmt::Write;
|
||||
|
||||
let _ = PanicWriter.write_fmt(format_args!("{}:{}: {}\n", file, line, fmt));
|
||||
let mut w = platform::FileWriter(2);
|
||||
let _ = w.write_fmt(format_args!("{}:{}: {}\n", file, line, fmt));
|
||||
|
||||
platform::exit(1);
|
||||
}
|
||||
@@ -38,9 +28,10 @@ pub extern "C" fn rust_begin_unwind(fmt: fmt::Arguments, file: &str, line: u32)
|
||||
#[allow(non_snake_case)]
|
||||
#[no_mangle]
|
||||
pub extern "C" fn _Unwind_Resume() -> ! {
|
||||
use fmt::Write;
|
||||
use core::fmt::Write;
|
||||
|
||||
let _ = PanicWriter.write_str("_Unwind_Resume\n");
|
||||
let mut w = platform::FileWriter(2);
|
||||
let _ = w.write_str("_Unwind_Resume\n");
|
||||
|
||||
platform::exit(1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user