From c5dd983949796d8bdfbbf146be29acaf6af0052c Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Mon, 19 Dec 2016 11:32:20 +0100 Subject: [PATCH] Mark `panic_fmt` as `no_mangle` to work around rust-lang/rust#38281 (#262) --- blog/post/03-set-up-rust.md | 2 +- blog/post/05-allocating-frames.md | 2 ++ src/lib.rs | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/blog/post/03-set-up-rust.md b/blog/post/03-set-up-rust.md index bf150fd3..3f7b078a 100644 --- a/blog/post/03-set-up-rust.md +++ b/blog/post/03-set-up-rust.md @@ -57,7 +57,7 @@ Now we place our root source file in `src/lib.rs`: pub extern fn rust_main() {} #[lang = "eh_personality"] extern fn eh_personality() {} -#[lang = "panic_fmt"] extern fn panic_fmt() -> ! {loop{}} +#[lang = "panic_fmt"] #[no_mangle] extern fn panic_fmt() -> ! {loop{}} ``` Let's break it down: diff --git a/blog/post/05-allocating-frames.md b/blog/post/05-allocating-frames.md index f9eec739..f6de3ad9 100644 --- a/blog/post/05-allocating-frames.md +++ b/blog/post/05-allocating-frames.md @@ -103,6 +103,7 @@ We used `expect` in the code above, which will panic if there is no memory map t ```rust #[lang = "panic_fmt"] +#[no_mangle] extern fn panic_fmt() -> ! { println!("PANIC"); loop{} @@ -112,6 +113,7 @@ Now we get a `PANIC` message. But we can do even better. The `panic_fmt` functio ```rust #[lang = "panic_fmt"] +#[no_mangle] extern fn panic_fmt(fmt: core::fmt::Arguments, file: &'static str, line: u32) -> ! { diff --git a/src/lib.rs b/src/lib.rs index b026eb18..2fc109cf 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -86,6 +86,7 @@ extern "C" fn eh_personality() {} #[cfg(not(test))] #[lang = "panic_fmt"] +#[no_mangle] extern "C" fn panic_fmt(fmt: core::fmt::Arguments, file: &'static str, line: u32) -> ! { println!("\n\nPANIC in {} at line {}:", file, line); println!(" {}", fmt);