objtool: Use relative pointers for annotations
authorJosh Poimboeuf <jpoimboe@kernel.org>
Wed, 1 Mar 2023 15:13:08 +0000 (07:13 -0800)
committerPeter Zijlstra <peterz@infradead.org>
Thu, 23 Mar 2023 22:18:56 +0000 (23:18 +0100)
They produce the needed relocations while using half the space.

Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/bed05c64e28200220c9b1754a2f3ce71f73076ea.1677683419.git.jpoimboe@kernel.org
arch/x86/include/asm/nospec-branch.h
include/linux/objtool.h

index 3ef70e54a858a5baf88b1711abefa833a53f882b..78ed1546b7750d096fa46f18d85bb5b3c6169aa6 100644 (file)
  * builds.
  */
 .macro ANNOTATE_RETPOLINE_SAFE
-       .Lannotate_\@:
+.Lhere_\@:
        .pushsection .discard.retpoline_safe
-       _ASM_PTR .Lannotate_\@
+       .long .Lhere_\@ - .
        .popsection
 .endm
 
 #define ANNOTATE_RETPOLINE_SAFE                                        \
        "999:\n\t"                                              \
        ".pushsection .discard.retpoline_safe\n\t"              \
-       _ASM_PTR " 999b\n\t"                                    \
+       ".long 999b - .\n\t"                                    \
        ".popsection\n\t"
 
 typedef u8 retpoline_thunk_t[RETPOLINE_THUNK_SIZE];
index 8375792acfc0757db4162a59c9726ef238061b58..2b0258d273fcbc2007f53918e73f6fd29c4690eb 100644 (file)
@@ -49,7 +49,7 @@
 #define ANNOTATE_NOENDBR                                       \
        "986: \n\t"                                             \
        ".pushsection .discard.noendbr\n\t"                     \
-       _ASM_PTR " 986b\n\t"                                    \
+       ".long 986b - .\n\t"                                    \
        ".popsection\n\t"
 
 #define ASM_REACHABLE                                                  \
@@ -67,7 +67,7 @@
 #define ANNOTATE_INTRA_FUNCTION_CALL                           \
        999:                                                    \
        .pushsection .discard.intra_function_calls;             \
-       .long 999b;                                             \
+       .long 999b - .;                                         \
        .popsection;
 
 /*
  * inconsistencies.
  */
 .macro UNWIND_HINT type:req sp_reg=0 sp_offset=0 signal=0 end=0
-.Lunwind_hint_ip_\@:
+.Lhere_\@:
        .pushsection .discard.unwind_hints
                /* struct unwind_hint */
-               .long .Lunwind_hint_ip_\@ - .
+               .long .Lhere_\@ - .
                .short \sp_offset
                .byte \sp_reg
                .byte \type
 
 .macro STACK_FRAME_NON_STANDARD func:req
        .pushsection .discard.func_stack_frame_non_standard, "aw"
-       _ASM_PTR \func
+       .long \func - .
        .popsection
 .endm
 
 .macro ANNOTATE_NOENDBR
 .Lhere_\@:
        .pushsection .discard.noendbr
-       .quad   .Lhere_\@
+       .long   .Lhere_\@ - .
        .popsection
 .endm