Use the __ADDRESSABLE() macro to make entries and lists declared by
ll_entry_declare() and ll_entry_declare_list() addressable so that when
building with LTO the compiler does not optimize this data away.

Signed-off-by: Marek Behún <marek.be...@nic.cz>
---
 include/linker_lists.h | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/include/linker_lists.h b/include/linker_lists.h
index 815a90691a..c9c3b3c2ad 100644
--- a/include/linker_lists.h
+++ b/include/linker_lists.h
@@ -88,7 +88,9 @@
  *           .y = 4,
  *   };
  */
-#define ll_entry_declare(_type, _name, _list) \
+#define ll_entry_declare(_type, _name, _list)  \
+       __lldecl(_type, _name, _list);          \
+       __ADDRESSABLE(__llname(_name, _list));  \
        __lldecl(_type, _name, _list)
 
 /**
@@ -109,7 +111,9 @@
  *        { .x = 1, .y = 7 }
  *   };
  */
-#define ll_entry_declare_list(_type, _name, _list) \
+#define ll_entry_declare_list(_type, _name, _list)     \
+       __lldecl(_type, _name, _list)[];                \
+       __ADDRESSABLE(__llname(_name, _list));          \
        __lldecl(_type, _name, _list)[]
 
 /*
-- 
2.26.2

Reply via email to