From 790e42477ca21d6d0a07270049c3747c7c316f4b Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sat, 27 Oct 2018 14:19:28 +0200 Subject: [PATCH] rename UserHardFault to HardFault so it matches the exception name (`#[exception] fn HardFault(..`) --- asm.s | 10 +++++----- bin/thumbv6m-none-eabi.a | Bin 882 -> 920 bytes bin/thumbv7em-none-eabi.a | Bin 882 -> 920 bytes bin/thumbv7em-none-eabihf.a | Bin 882 -> 920 bytes bin/thumbv7m-none-eabi.a | Bin 882 -> 920 bytes link.x.in | 8 ++++---- macros/src/lib.rs | 4 ++-- src/lib.rs | 18 +++++++++--------- 8 files changed, 20 insertions(+), 20 deletions(-) diff --git a/asm.s b/asm.s index 4636bc3d..1f0e74d3 100644 --- a/asm.s +++ b/asm.s @@ -1,10 +1,10 @@ # LLD requires that the section flags are explicitly set here - .section .HardFault, "ax" - .global HardFault + .section .HardFaultTrampoline, "ax" + .global HardFaultTrampoline # .type and .thumb_func are both required; otherwise its Thumb bit does not # get set and an invalid vector table is generated - .type HardFault,%function + .type HardFaultTrampoline,%function .thumb_func -HardFault: +HardFaultTrampoline: mrs r0, MSP - b UserHardFault + b HardFault diff --git a/bin/thumbv6m-none-eabi.a b/bin/thumbv6m-none-eabi.a index 9857abca73c3d904adfda9674a166a08a7374293..5938e993d78c01056064fa970bed13f5a6dbb8f9 100644 GIT binary patch delta 201 zcmeywHiLbFg}RZ20u&^0F)%PN0&#*zVo{1)VrfoENKs;LL4HnVUh2e9BPKJGiJh8^ zITJT8w_t%P1yT$`3@i*1AO;i&fM}Hx1}vs9Om1TI<3gA^`2wTWWDcfHk~~0rIe^;O jff!^q2!r^plP@zRGb&9sXI7RF0jdcFiopQLsUQFVoDU{@ delta 164 zcmbQi{)ugZg{+~40u&^0F)%PN0&$o}Vo{1)Vrfpv#CRhnW3!2qH5mgY?p?0I0aXB` z7=##DfDi!$KunbqhS1{FqRDd@{U(25w3=+dv_bL@P#mO@9f(01Kp4cgp8S(3nNetR TEVHr%3(#6`pco8*Tmb?A)~6YJ diff --git a/bin/thumbv7em-none-eabi.a b/bin/thumbv7em-none-eabi.a index 3f8b8fedf4a4df63466ad196a68d3dfd5abfc582..fc426f9d234b104b96843d64fc1b22b854596f06 100644 GIT binary patch delta 201 zcmeywHiLbFg}RZ20u&^0F)%PN0&#*zVo{1)VrfoENKs;LL4HnVUh2e9BPKJGiJh8^ zITJT8w_t%P1yT$`3@i*1AO;i&fM}Hx1}vs9Om1TI<3gA^`2wTWWDcfHk~~0rIe^;O jff!^q2!r^plP@zRGb&9sXI7RF0jdcFiopQLsUQFVoDU{@ delta 164 zcmbQi{)ugZg{+~40u&^0F)%PN0&$o}Vo{1)Vrfpv#CRhnW3!2qH5mgY?p?0I0aXB` z7=##DfDi!$KunbqhS1{FqRDd@{U(25w3=+dv_bL@P#mO@9f(01Kp4cgp8S(3nNetR TEVHr%3(#6`pco8*Tmb?A)~6YJ diff --git a/bin/thumbv7em-none-eabihf.a b/bin/thumbv7em-none-eabihf.a index 3f8b8fedf4a4df63466ad196a68d3dfd5abfc582..fc426f9d234b104b96843d64fc1b22b854596f06 100644 GIT binary patch delta 201 zcmeywHiLbFg}RZ20u&^0F)%PN0&#*zVo{1)VrfoENKs;LL4HnVUh2e9BPKJGiJh8^ zITJT8w_t%P1yT$`3@i*1AO;i&fM}Hx1}vs9Om1TI<3gA^`2wTWWDcfHk~~0rIe^;O jff!^q2!r^plP@zRGb&9sXI7RF0jdcFiopQLsUQFVoDU{@ delta 164 zcmbQi{)ugZg{+~40u&^0F)%PN0&$o}Vo{1)Vrfpv#CRhnW3!2qH5mgY?p?0I0aXB` z7=##DfDi!$KunbqhS1{FqRDd@{U(25w3=+dv_bL@P#mO@9f(01Kp4cgp8S(3nNetR TEVHr%3(#6`pco8*Tmb?A)~6YJ diff --git a/bin/thumbv7m-none-eabi.a b/bin/thumbv7m-none-eabi.a index 43c843e547c870f87debea8bd313b757a944b2c5..3359875647be4a5bfdefe55eb1f2ad29d22cdec7 100644 GIT binary patch delta 201 zcmeywHiLbFg}RZ20u&^0F)%PN0&#*zVo{1)VrfoENKs;LL4HnVUh2e9BPKJGiJh8^ zITJT8w_t%P1yT$`3@i*1AO;i&fM}Hx1}vs9Om1TI<3gA^`2wTWWDcfHk~~0rIe^;O jff!^q2!r^plP@zRGb&9sXI7RF0jdcFiopQLsUQFVoDU{@ delta 164 zcmbQi{)ugZg{+~40u&^0F)%PN0&$o}Vo{1)Vrfpv#CRhnW3!2qH5mgY?p?0I0aXB` z7=##DfDi!$KunbqhS1{FqRDd@{U(25w3=+dv_bL@P#mO@9f(01Kp4cgp8S(3nNetR TEVHr%3(#6`pco8*Tmb?A)~6YJ diff --git a/link.x.in b/link.x.in index e6e0d3ba..dff43e05 100644 --- a/link.x.in +++ b/link.x.in @@ -35,7 +35,7 @@ EXTERN(__EXCEPTIONS); /* depends on all the these PROVIDED symbols */ EXTERN(DefaultHandler); PROVIDE(NonMaskableInt = DefaultHandler); -EXTERN(HardFault); +EXTERN(HardFaultTrampoline); PROVIDE(MemoryManagement = DefaultHandler); PROVIDE(BusFault = DefaultHandler); PROVIDE(UsageFault = DefaultHandler); @@ -46,7 +46,7 @@ PROVIDE(PendSV = DefaultHandler); PROVIDE(SysTick = DefaultHandler); PROVIDE(DefaultHandler = DefaultHandler_); -PROVIDE(UserHardFault = UserHardFault_); +PROVIDE(HardFault = HardFault_); /* # Interrupt vectors */ EXTERN(__INTERRUPTS); /* `static` variable similar to `__EXCEPTIONS` */ @@ -86,8 +86,8 @@ SECTIONS .text _stext : { *(.text .text.*); - *(.HardFault); - *(.UserHardFault); + *(.HardFaultTrampoline); + *(.HardFault.*); } > FLASH /* ### .rodata */ diff --git a/macros/src/lib.rs b/macros/src/lib.rs index dfa936b2..1013f5e1 100644 --- a/macros/src/lib.rs +++ b/macros/src/lib.rs @@ -397,8 +397,8 @@ pub fn exception(args: TokenStream, input: TokenStream) -> TokenStream { let pat = &arg.pat; quote!( - #[export_name = "UserHardFault"] - #[link_section = ".UserHardFault"] + #[export_name = "HardFault"] + #[link_section = ".HardFault.user"] #(#attrs)* pub #unsafety extern "C" fn #hash(#arg) -> ! { extern crate cortex_m_rt; diff --git a/src/lib.rs b/src/lib.rs index f418e7f3..9f2a20ae 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -203,12 +203,12 @@ //! - `DefaultHandler`. This is the default handler. If not overridden using `#[exception] fn //! DefaultHandler(..` this will be an infinite loop. //! -//! - `HardFault`. This is the hard fault handler. This function is simply a trampoline that jumps -//! into the user defined hard fault handler named `UserHardFault`. The trampoline is required to -//! set up the pointer to the stacked exception frame. +//! - `HardFaultTrampoline`. This is the real hard fault handler. This function is simply a +//! trampoline that jumps into the user defined hard fault handler named `HardFault`. The +//! trampoline is required to set up the pointer to the stacked exception frame. //! -//! - `UserHardFault`. This is the user defined hard fault handler. If not overridden using -//! `#[exception] fn HardFault(..` this will be an infinite loop. +//! - `HardFault`. This is the user defined hard fault handler. If not overridden using +//! `#[exception] fn HardFault(..` it will default to an infinite loop. //! //! - `__STACK_START`. This is the first entry in the `.vector_table` section. This symbol contains //! the initial value of the stack pointer; this is where the stack will be located -- the stack @@ -534,9 +534,9 @@ pub unsafe extern "C" fn Reset() -> ! { #[allow(unused_variables)] #[doc(hidden)] -#[link_section = ".UserHardFault"] +#[link_section = ".HardFault.default"] #[no_mangle] -pub unsafe extern "C" fn UserHardFault_(ef: &ExceptionFrame) -> ! { +pub unsafe extern "C" fn HardFault_(ef: &ExceptionFrame) -> ! { loop { // add some side effect to prevent this from turning into a UDF instruction // see rust-lang/rust#28728 for details @@ -590,7 +590,7 @@ pub enum Exception { extern "C" { fn NonMaskableInt(); - fn HardFault(); + fn HardFaultTrampoline(); #[cfg(not(armv6m))] fn MemoryManagement(); @@ -629,7 +629,7 @@ pub static __EXCEPTIONS: [Vector; 14] = [ handler: NonMaskableInt, }, // Exception 3: Hard Fault Interrupt. - Vector { handler: HardFault }, + Vector { handler: HardFaultTrampoline }, // Exception 4: Memory Management Interrupt [not on Cortex-M0 variants]. #[cfg(not(armv6m))] Vector {