aboutsummaryrefslogtreecommitdiff
path: root/macros/src/codegen
diff options
context:
space:
mode:
Diffstat (limited to 'macros/src/codegen')
-rw-r--r--macros/src/codegen/local_resources.rs9
-rw-r--r--macros/src/codegen/shared_resources.rs11
2 files changed, 17 insertions, 3 deletions
diff --git a/macros/src/codegen/local_resources.rs b/macros/src/codegen/local_resources.rs
index 50621c32..087967f2 100644
--- a/macros/src/codegen/local_resources.rs
+++ b/macros/src/codegen/local_resources.rs
@@ -27,8 +27,15 @@ pub fn codegen(
let mangled_name = util::static_local_resource_ident(name);
let attrs = &res.attrs;
+
// late resources in `util::link_section_uninit`
- let section = util::link_section_uninit();
+ // unless user specifies custom link section
+ let section = if attrs.iter().any(|attr| attr.path.is_ident("link_section")) {
+ None
+ }
+ else {
+ Some(util::link_section_uninit())
+ };
// For future use
// let doc = format!(" RTIC internal: {}:{}", file!(), line!());
diff --git a/macros/src/codegen/shared_resources.rs b/macros/src/codegen/shared_resources.rs
index 47f8faf0..010b27ae 100644
--- a/macros/src/codegen/shared_resources.rs
+++ b/macros/src/codegen/shared_resources.rs
@@ -23,10 +23,17 @@ pub fn codegen(
let ty = &res.ty;
let mangled_name = &util::static_shared_resource_ident(name);
- // late resources in `util::link_section_uninit`
- let section = util::link_section_uninit();
let attrs = &res.attrs;
+ // late resources in `util::link_section_uninit`
+ // unless user specifies custom link section
+ let section = if attrs.iter().any(|attr| attr.path.is_ident("link_section")) {
+ None
+ }
+ else {
+ Some(util::link_section_uninit())
+ };
+
// For future use
// let doc = format!(" RTIC internal: {}:{}", file!(), line!());
mod_app.push(quote!(