]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
objtool: Consolidate annotation macros
authorJosh Poimboeuf <jpoimboe@kernel.org>
Tue, 2 Dec 2025 17:59:38 +0000 (09:59 -0800)
committerIngo Molnar <mingo@kernel.org>
Wed, 3 Dec 2025 18:40:44 +0000 (19:40 +0100)
Consolidate __ASM_ANNOTATE into a single macro which is used by both C
and asm.  This also makes the code generation a bit more palatable by
putting it all on a single line.

Turn this:

911:
       .pushsection .discard.annotate_insn,"M", @progbits, 8
       .long 911b - .
       .long 1
       .popsection
       jmp __x86_return_thunk

Into:

911: .pushsection ".discard.annotate_insn", "M", @progbits, 8; .long 911b - .; .long 1; .popsection
jmp __x86_return_thunk

Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: https://patch.msgid.link/c05ff40d3383e85c3b59018ef0b3c7aaf993a60d.1764694625.git.jpoimboe@kernel.org
include/linux/annotate.h

index 7c10d34d198cf7418f8087b3c84a9abde90a3614..996126f5f9ecba47cf027d8b2e2a74b6c5d79daf 100644 (file)
@@ -6,41 +6,35 @@
 
 #ifdef CONFIG_OBJTOOL
 
-#ifndef __ASSEMBLY__
-
 #define __ASM_ANNOTATE(section, label, type)                           \
-       ".pushsection " section ",\"M\", @progbits, 8\n\t"              \
-       ".long " __stringify(label) " - .\n\t"                          \
-       ".long " __stringify(type) "\n\t"                               \
-       ".popsection\n\t"
+       .pushsection section, "M", @progbits, 8;                        \
+       .long label - .;                                                \
+       .long type;                                                     \
+       .popsection
+
+#ifndef __ASSEMBLY__
 
 #define ASM_ANNOTATE_LABEL(label, type)                                        \
-       __ASM_ANNOTATE(".discard.annotate_insn", label, type)
+       __stringify(__ASM_ANNOTATE(".discard.annotate_insn", label, type)) "\n\t"
 
 #define ASM_ANNOTATE(type)                                             \
-       "911:\n\t"                                                      \
-       ASM_ANNOTATE_LABEL(911b, type)
+       "911: "                                                         \
+       __stringify(__ASM_ANNOTATE(".discard.annotate_insn", 911b, type)) "\n\t"
 
 #define ASM_ANNOTATE_DATA(type)                                                \
-       "912:\n\t"                                                      \
-       __ASM_ANNOTATE(".discard.annotate_data", 912b, type)
+       "912: "                                                         \
+       __stringify(__ASM_ANNOTATE(".discard.annotate_data", 912b, type)) "\n\t"
 
 #else /* __ASSEMBLY__ */
 
-.macro __ANNOTATE section, type
-.Lhere_\@:
-       .pushsection \section, "M", @progbits, 8
-       .long   .Lhere_\@ - .
-       .long   \type
-       .popsection
-.endm
-
 .macro ANNOTATE type
-       __ANNOTATE ".discard.annotate_insn", \type
+.Lhere_\@:
+       __ASM_ANNOTATE(".discard.annotate_insn", .Lhere_\@, \type)
 .endm
 
 .macro ANNOTATE_DATA type
-       __ANNOTATE ".discard.annotate_data", \type
+.Lhere_\@:
+       __ASM_ANNOTATE(".discard.annotate_data", .Lhere_\@, \type)
 .endm
 
 #endif /* __ASSEMBLY__ */