[PATCH 3/4] objtool: Consolidate annotation macros

Josh Poimboeuf
2025-11-26T06:07:36Z

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.

Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
---
include/linux/annotate.h | 36 +++++++++++++++---------------------
1 file changed, 15 insertions(+), 21 deletions(-)

diff --git a/include/linux/annotate.h b/include/linux/annotate.h
index 7c10d34d198c..996126f5f9ec 100644
--- a/include/linux/annotate.h
+++ b/include/linux/annotate.h
@@ -6,41 +6,35 @@

#ifdef CONFIG_OBJTOOL

+#define __ASM_ANNOTATE(section, label, type) \
+ .pushsection section, "M", @progbits, 8; \
+ .long label - .; \
+ .long type; \
+ .popsection
+
#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"
-
#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__ */
--
2.51.1