x86/asm/entry: Annotate THUNKs
authorJiri Slaby <jslaby@suse.cz>
Fri, 11 Oct 2019 11:50:44 +0000 (13:50 +0200)
committerBorislav Petkov <bp@suse.de>
Fri, 18 Oct 2019 07:58:59 +0000 (09:58 +0200)
Place SYM_*_START_NOALIGN and SYM_*_END around the THUNK macro body.
Preserve @function by FUNC (64bit) and CODE (32bit). Given it was not
marked as aligned, use NOALIGN.

The result:
 Value  Size Type    Bind   Vis      Ndx Name
  0000    28 FUNC    GLOBAL DEFAULT    1 trace_hardirqs_on_thunk
  001c    28 FUNC    GLOBAL DEFAULT    1 trace_hardirqs_off_thunk
  0038    24 FUNC    GLOBAL DEFAULT    1 lockdep_sys_exit_thunk
  0050    24 FUNC    GLOBAL DEFAULT    1 ___preempt_schedule
  0068    24 FUNC    GLOBAL DEFAULT    1 ___preempt_schedule_notra

The annotation of .L_restore does not generate anything (at the moment).
Here, it just serves documentation purposes (as opening and closing
brackets of functions).

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: linux-arch@vger.kernel.org
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: x86-ml <x86@kernel.org>
Link: https://lkml.kernel.org/r/20191011115108.12392-5-jslaby@suse.cz
arch/x86/entry/thunk_32.S
arch/x86/entry/thunk_64.S

index 2713490..e010d4a 100644 (file)
@@ -10,8 +10,7 @@
 
        /* put return address in eax (arg1) */
        .macro THUNK name, func, put_ret_addr_in_eax=0
-       .globl \name
-\name:
+SYM_CODE_START_NOALIGN(\name)
        pushl %eax
        pushl %ecx
        pushl %edx
@@ -27,6 +26,7 @@
        popl %eax
        ret
        _ASM_NOKPROBE(\name)
+SYM_CODE_END(\name)
        .endm
 
 #ifdef CONFIG_TRACE_IRQFLAGS
index ea5c416..c5c3b6e 100644 (file)
@@ -12,7 +12,7 @@
 
        /* rdi: arg1 ... normal C conventions. rax is saved/restored. */
        .macro THUNK name, func, put_ret_addr_in_rdi=0
-       ENTRY(\name)
+SYM_FUNC_START_NOALIGN(\name)
        pushq %rbp
        movq %rsp, %rbp
 
@@ -33,7 +33,7 @@
 
        call \func
        jmp  .L_restore
-       ENDPROC(\name)
+SYM_FUNC_END(\name)
        _ASM_NOKPROBE(\name)
        .endm
 
@@ -56,7 +56,7 @@
 #if defined(CONFIG_TRACE_IRQFLAGS) \
  || defined(CONFIG_DEBUG_LOCK_ALLOC) \
  || defined(CONFIG_PREEMPTION)
-.L_restore:
+SYM_CODE_START_LOCAL_NOALIGN(.L_restore)
        popq %r11
        popq %r10
        popq %r9
@@ -69,4 +69,5 @@
        popq %rbp
        ret
        _ASM_NOKPROBE(.L_restore)
+SYM_CODE_END(.L_restore)
 #endif