Merge branch 'objtool/core' into x86/entry
authorThomas Gleixner <tglx@linutronix.de>
Wed, 10 Feb 2021 20:16:44 +0000 (21:16 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 10 Feb 2021 20:16:44 +0000 (21:16 +0100)
to base the irq stack modifications on.

Documentation/asm-annotations.rst
arch/x86/entry/thunk_64.S
include/linux/linkage.h

index 32ea574..76424e0 100644 (file)
@@ -100,6 +100,11 @@ Instruction Macros
 ~~~~~~~~~~~~~~~~~~
 This section covers ``SYM_FUNC_*`` and ``SYM_CODE_*`` enumerated above.
 
+``objtool`` requires that all code must be contained in an ELF symbol. Symbol
+names that have a ``.L`` prefix do not emit symbol table entries. ``.L``
+prefixed symbols can be used within a code region, but should be avoided for
+denoting a range of code via ``SYM_*_START/END`` annotations.
+
 * ``SYM_FUNC_START`` and ``SYM_FUNC_START_LOCAL`` are supposed to be **the
   most frequent markings**. They are used for functions with standard calling
   conventions -- global and local. Like in C, they both align the functions to
index ccd3287..496b11e 100644 (file)
@@ -10,7 +10,7 @@
 #include <asm/export.h>
 
        /* rdi: arg1 ... normal C conventions. rax is saved/restored. */
-       .macro THUNK name, func, put_ret_addr_in_rdi=0
+       .macro THUNK name, func
 SYM_FUNC_START_NOALIGN(\name)
        pushq %rbp
        movq %rsp, %rbp
@@ -25,13 +25,8 @@ SYM_FUNC_START_NOALIGN(\name)
        pushq %r10
        pushq %r11
 
-       .if \put_ret_addr_in_rdi
-       /* 8(%rbp) is return addr on stack */
-       movq 8(%rbp), %rdi
-       .endif
-
        call \func
-       jmp  .L_restore
+       jmp  __thunk_restore
 SYM_FUNC_END(\name)
        _ASM_NOKPROBE(\name)
        .endm
@@ -44,7 +39,7 @@ SYM_FUNC_END(\name)
 #endif
 
 #ifdef CONFIG_PREEMPTION
-SYM_CODE_START_LOCAL_NOALIGN(.L_restore)
+SYM_CODE_START_LOCAL_NOALIGN(__thunk_restore)
        popq %r11
        popq %r10
        popq %r9
@@ -56,6 +51,6 @@ SYM_CODE_START_LOCAL_NOALIGN(.L_restore)
        popq %rdi
        popq %rbp
        ret
-       _ASM_NOKPROBE(.L_restore)
-SYM_CODE_END(.L_restore)
+       _ASM_NOKPROBE(__thunk_restore)
+SYM_CODE_END(__thunk_restore)
 #endif
index 5bcfbd9..dbf8506 100644 (file)
  * Objtool generates debug info for both FUNC & CODE, but needs special
  * annotations for each CODE's start (to describe the actual stack frame).
  *
+ * Objtool requires that all code must be contained in an ELF symbol. Symbol
+ * names that have a  .L prefix do not emit symbol table entries. .L
+ * prefixed symbols can be used within a code region, but should be avoided for
+ * denoting a range of code via ``SYM_*_START/END`` annotations.
+ *
  * ALIAS -- does not generate debug info -- the aliased function will
  */