diff options
author | 2017-06-30 11:22:56 -0500 | |
---|---|---|
committer | 2017-06-30 11:22:56 -0500 | |
commit | cfe8c2aad28327b3698dc02abe70b10ddc25b05c (patch) | |
tree | b24101c4c8a53debd46f72ed5d08cd8c2e48eee5 /cortex-m-rt/src | |
parent | a81bb98141eb8b629da4bfde7109f75177d215af (diff) | |
download | cortex-m-cfe8c2aad28327b3698dc02abe70b10ddc25b05c.tar.gz cortex-m-cfe8c2aad28327b3698dc02abe70b10ddc25b05c.tar.zst cortex-m-cfe8c2aad28327b3698dc02abe70b10ddc25b05c.zip |
opt-in panic_fmt implementation
that just calls intrinsics::abort
Diffstat (limited to 'cortex-m-rt/src')
-rw-r--r-- | cortex-m-rt/src/lang_items.rs | 22 | ||||
-rw-r--r-- | cortex-m-rt/src/lib.rs | 6 |
2 files changed, 7 insertions, 21 deletions
diff --git a/cortex-m-rt/src/lang_items.rs b/cortex-m-rt/src/lang_items.rs index b154b5f..236b2bd 100644 --- a/cortex-m-rt/src/lang_items.rs +++ b/cortex-m-rt/src/lang_items.rs @@ -1,28 +1,14 @@ /// Default panic handler +#[cfg(feature = "abort-on-panic")] #[lang = "panic_fmt"] -#[linkage = "weak"] unsafe extern "C" fn panic_fmt( - _args: ::core::fmt::Arguments, - _file: &'static str, - _line: u32, + _: ::core::fmt::Arguments, + _: &'static str, + _: u32, ) -> ! { ::core::intrinsics::abort() } -#[macro_export] -macro_rules! panic_fmt { - ($f:expr) => { - #[export_name = "rust_begin_unwind"] - pub unsafe extern "C" fn _panic_fmt( - args: ::core::fmt::Arguments, - file: &'static str, - line: u32, - ) -> ! { - $f(args, file, line) - } - } -} - /// 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 diff --git a/cortex-m-rt/src/lib.rs b/cortex-m-rt/src/lib.rs index 1908c50..4e10b59 100644 --- a/cortex-m-rt/src/lib.rs +++ b/cortex-m-rt/src/lib.rs @@ -145,11 +145,11 @@ //! 8000404: b084 sub sp, #16 //! ``` +#![cfg_attr(feature = "abort-on-panic", feature(core_intrinsics))] #![deny(missing_docs)] #![deny(warnings)] #![feature(asm)] #![feature(compiler_builtins_lib)] -#![feature(core_intrinsics)] #![feature(lang_items)] #![feature(linkage)] #![feature(used)] @@ -186,8 +186,8 @@ extern "C" { /// This is the entry point of all programs #[link_section = ".reset_handler"] unsafe extern "C" fn reset_handler() -> ! { - ::r0::zero_bss(&mut _sbss, &mut _ebss); - ::r0::init_data(&mut _sdata, &mut _edata, &_sidata); + r0::zero_bss(&mut _sbss, &mut _ebss); + r0::init_data(&mut _sdata, &mut _edata, &_sidata); // Neither `argc` or `argv` make sense in bare metal context so we just // stub them |