mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-04 04:04:19 +00:00
A single fix for objtool to generate proper unwind info for newer
toolchains which do not generate section symbols anymore. And a cleanup ontop. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEzv7L6UO9uDPlPSfHEsHwGGHeVUoFAmAWi8EACgkQEsHwGGHe VUrZhBAAmbaEBdU05+ah24r+XHLsCJBQwlwHAr71YfNnEpq/KRHXLtc3QJLAdOVf ku0536gDJvMUX7d7ap2ooSVAD9Ed1h4N7BvOn8eLFiaPc6NG9Tw6FZc/X6OKtyLd DyFOsNAa9JnjjeqT7TTYdqbcJUzPSqd3Ufg5V4UZcVwvGTkbc+k1TktnteTMXWUI t99wXCOfw2accdUrr3MIkdvSGNo099VZa/DBZQVmpjCcMSOfe/0KQIoeVagEpAew T0WxONdM62Nz4Tv03N6m6EqVpIOc8BueRuOWlX/c5XVCmYx8BDSdFb6EY9sEh10i hLU1U36BCUT1uAA/ZAuw/I22fy5MXqbrGvWJrcW8Wav1fQfaDYkDyGNE+aBjXysQ uZGTzbfAdAS2B8XTElzYJZwh1WW7Je7b2pZhL5/6kwoa8E82NsR7a2inl6pdkKin LcrLlxrSZYbAjhYuA3Da4iErvtu/UloQwfDhga7NasGdVQzlwUQBX67Tgt1PA9B2 JWoeY1NKBGboNEQa3NWq37yCtfcpx2hL4wWgyUbj0TMOXO06V/ZhrPzIQDrMmVGx g52NrYnH/CujrKgWH3+Q+kBWA/BSVP5p3UnhLCDM1X7dyZiimuLOJNDUQ9WldENV rsGgKyW3/6F4UzmqLr0oOB6X9/2v15LSktN9BJtv3UWUCl/PfXU= =VV7d -----END PGP SIGNATURE----- Merge tag 'x86_entry_for_v5.11_rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull x86 fix from Borislav Petkov: "A single fix for objtool to generate proper unwind info for newer toolchains which do not generate section symbols anymore. And a cleanup ontop. This was originally going to go during the next merge window but people can already trigger a build error with binutils-2.36 which doesn't emit section symbols - something which objtool relies on - so let's expedite it" * tag 'x86_entry_for_v5.11_rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/entry: Remove put_ret_addr_in_rdi THUNK macro argument x86/entry: Emit a symbol for register restoring thunk
This commit is contained in:
commit
f5a376edde
@ -100,6 +100,11 @@ Instruction Macros
|
|||||||
~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~
|
||||||
This section covers ``SYM_FUNC_*`` and ``SYM_CODE_*`` enumerated above.
|
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
|
* ``SYM_FUNC_START`` and ``SYM_FUNC_START_LOCAL`` are supposed to be **the
|
||||||
most frequent markings**. They are used for functions with standard calling
|
most frequent markings**. They are used for functions with standard calling
|
||||||
conventions -- global and local. Like in C, they both align the functions to
|
conventions -- global and local. Like in C, they both align the functions to
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
#include <asm/export.h>
|
#include <asm/export.h>
|
||||||
|
|
||||||
/* rdi: arg1 ... normal C conventions. rax is saved/restored. */
|
/* 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)
|
SYM_FUNC_START_NOALIGN(\name)
|
||||||
pushq %rbp
|
pushq %rbp
|
||||||
movq %rsp, %rbp
|
movq %rsp, %rbp
|
||||||
@ -25,13 +25,8 @@ SYM_FUNC_START_NOALIGN(\name)
|
|||||||
pushq %r10
|
pushq %r10
|
||||||
pushq %r11
|
pushq %r11
|
||||||
|
|
||||||
.if \put_ret_addr_in_rdi
|
|
||||||
/* 8(%rbp) is return addr on stack */
|
|
||||||
movq 8(%rbp), %rdi
|
|
||||||
.endif
|
|
||||||
|
|
||||||
call \func
|
call \func
|
||||||
jmp .L_restore
|
jmp __thunk_restore
|
||||||
SYM_FUNC_END(\name)
|
SYM_FUNC_END(\name)
|
||||||
_ASM_NOKPROBE(\name)
|
_ASM_NOKPROBE(\name)
|
||||||
.endm
|
.endm
|
||||||
@ -44,7 +39,7 @@ SYM_FUNC_END(\name)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_PREEMPTION
|
#ifdef CONFIG_PREEMPTION
|
||||||
SYM_CODE_START_LOCAL_NOALIGN(.L_restore)
|
SYM_CODE_START_LOCAL_NOALIGN(__thunk_restore)
|
||||||
popq %r11
|
popq %r11
|
||||||
popq %r10
|
popq %r10
|
||||||
popq %r9
|
popq %r9
|
||||||
@ -56,6 +51,6 @@ SYM_CODE_START_LOCAL_NOALIGN(.L_restore)
|
|||||||
popq %rdi
|
popq %rdi
|
||||||
popq %rbp
|
popq %rbp
|
||||||
ret
|
ret
|
||||||
_ASM_NOKPROBE(.L_restore)
|
_ASM_NOKPROBE(__thunk_restore)
|
||||||
SYM_CODE_END(.L_restore)
|
SYM_CODE_END(__thunk_restore)
|
||||||
#endif
|
#endif
|
||||||
|
@ -178,6 +178,11 @@
|
|||||||
* Objtool generates debug info for both FUNC & CODE, but needs special
|
* Objtool generates debug info for both FUNC & CODE, but needs special
|
||||||
* annotations for each CODE's start (to describe the actual stack frame).
|
* 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
|
* ALIAS -- does not generate debug info -- the aliased function will
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user