In preparation for the objtool klp diff subcommand, replace the custom
unique symbol name generation in ELFNOTE() with __UNIQUE_ID().

This standardizes the naming format for all "unique" symbols, which will
allow objtool to properly correlate them.  Note this also removes the
"one ELF note per line" limitation.

Signed-off-by: Josh Poimboeuf <jpoim...@kernel.org>
---
 include/linux/elfnote.h | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/include/linux/elfnote.h b/include/linux/elfnote.h
index 69b136e4dd2b..bb3dcded055f 100644
--- a/include/linux/elfnote.h
+++ b/include/linux/elfnote.h
@@ -60,23 +60,21 @@
 
 #else  /* !__ASSEMBLER__ */
 #include <uapi/linux/elf.h>
+#include <linux/compiler.h>
 /*
  * Use an anonymous structure which matches the shape of
  * Elf{32,64}_Nhdr, but includes the name and desc data.  The size and
  * type of name and desc depend on the macro arguments.  "name" must
- * be a literal string, and "desc" must be passed by value.  You may
- * only define one note per line, since __LINE__ is used to generate
- * unique symbols.
+ * be a literal string, and "desc" must be passed by value.
  */
-#define _ELFNOTE_PASTE(a,b)    a##b
-#define _ELFNOTE(size, name, unique, type, desc)                       \
+#define ELFNOTE(size, name, type, desc)                                        
\
        static const struct {                                           \
                struct elf##size##_note _nhdr;                          \
                unsigned char _name[sizeof(name)]                       \
                __attribute__((aligned(sizeof(Elf##size##_Word))));     \
                typeof(desc) _desc                                      \
                             
__attribute__((aligned(sizeof(Elf##size##_Word)))); \
-       } _ELFNOTE_PASTE(_note_, unique)                                \
+       } __UNIQUE_ID(note)                                             \
                __used                                                  \
                __attribute__((section(".note." name),                  \
                               aligned(sizeof(Elf##size##_Word)),       \
@@ -89,11 +87,10 @@
                name,                                                   \
                desc                                                    \
        }
-#define ELFNOTE(size, name, type, desc)                \
-       _ELFNOTE(size, name, __LINE__, type, desc)
 
 #define ELFNOTE32(name, type, desc) ELFNOTE(32, name, type, desc)
 #define ELFNOTE64(name, type, desc) ELFNOTE(64, name, type, desc)
+
 #endif /* __ASSEMBLER__ */
 
 #endif /* _LINUX_ELFNOTE_H */
-- 
2.49.0


Reply via email to