Skip to content

Commit 0180258

Browse files
committed
entry/exception/interrupt: forward static mut attributes
this is required to implement safe interfaces to things like writable Flash (e.g. EEPROM emulation) which require the `#[link_section]` attribute.
1 parent 58cdad2 commit 0180258

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

cortex-m-rt/macros/src/lib.rs

+6
Original file line numberDiff line numberDiff line change
@@ -113,13 +113,15 @@ pub fn entry(args: TokenStream, input: TokenStream) -> TokenStream {
113113
let vars = statics
114114
.into_iter()
115115
.map(|var| {
116+
let attrs = var.attrs;
116117
let ident = var.ident;
117118
let ty = var.ty;
118119
let expr = var.expr;
119120

120121
quote!(
121122
#[allow(non_snake_case)]
122123
let #ident: &'static mut #ty = unsafe {
124+
#(#attrs)*
123125
static mut #ident: #ty = #expr;
124126

125127
&mut #ident
@@ -398,13 +400,15 @@ pub fn exception(args: TokenStream, input: TokenStream) -> TokenStream {
398400
let vars = statics
399401
.into_iter()
400402
.map(|var| {
403+
let attrs = var.attrs;
401404
let ident = var.ident;
402405
let ty = var.ty;
403406
let expr = var.expr;
404407

405408
quote!(
406409
#[allow(non_snake_case)]
407410
let #ident: &mut #ty = unsafe {
411+
#(#attrs)*
408412
static mut #ident: #ty = #expr;
409413

410414
&mut #ident
@@ -539,13 +543,15 @@ pub fn interrupt(args: TokenStream, input: TokenStream) -> TokenStream {
539543
let vars = statics
540544
.into_iter()
541545
.map(|var| {
546+
let attrs = var.attrs;
542547
let ident = var.ident;
543548
let ty = var.ty;
544549
let expr = var.expr;
545550

546551
quote!(
547552
#[allow(non_snake_case)]
548553
let #ident: &mut #ty = unsafe {
554+
#(#attrs)*
549555
static mut #ident: #ty = #expr;
550556

551557
&mut #ident

0 commit comments

Comments
 (0)