Commit 305c8dc4 authored by Josh Poimboeuf's avatar Josh Poimboeuf Committed by Ingo Molnar
Browse files

objtool: Consolidate annotation macros



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: default avatarJosh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: https://patch.msgid.link/c05ff40d3383e85c3b59018ef0b3c7aaf993a60d.1764694625.git.jpoimboe@kernel.org
parent f387d0e1
Loading
Loading
Loading
Loading
+15 −21
Original line number Diff line number Diff line
@@ -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__ */