Commit c03e2750 authored by Andi Kleen's avatar Andi Kleen Committed by Thomas Gleixner

x86/asm: Mark all top level asm statements as .text

With gcc toplevel assembler statements that do not mark themselves as .text
may end up in other sections. This causes LTO boot crashes because various
assembler statements ended up in the middle of the initcall section. It's
also a latent problem without LTO, although it's currently not known to
cause any real problems.

According to the gcc team it's expected behavior.

Always mark all the top level assembler statements as text so that they
switch to the right section.
Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20190330004743.29541-1-andi@firstfloor.org
parent 3c454f47
...@@ -83,7 +83,8 @@ static inline int wrmsrl_amd_safe(unsigned msr, unsigned long long val) ...@@ -83,7 +83,8 @@ static inline int wrmsrl_amd_safe(unsigned msr, unsigned long long val)
*/ */
extern __visible void vide(void); extern __visible void vide(void);
__asm__(".globl vide\n" __asm__(".text\n"
".globl vide\n"
".type vide, @function\n" ".type vide, @function\n"
".align 4\n" ".align 4\n"
"vide: ret\n"); "vide: ret\n");
......
...@@ -715,6 +715,7 @@ NOKPROBE_SYMBOL(kprobe_int3_handler); ...@@ -715,6 +715,7 @@ NOKPROBE_SYMBOL(kprobe_int3_handler);
* calls trampoline_handler() runs, which calls the kretprobe's handler. * calls trampoline_handler() runs, which calls the kretprobe's handler.
*/ */
asm( asm(
".text\n"
".global kretprobe_trampoline\n" ".global kretprobe_trampoline\n"
".type kretprobe_trampoline, @function\n" ".type kretprobe_trampoline, @function\n"
"kretprobe_trampoline:\n" "kretprobe_trampoline:\n"
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
asmlinkage void just_return_func(void); asmlinkage void just_return_func(void);
asm( asm(
".text\n"
".type just_return_func, @function\n" ".type just_return_func, @function\n"
".globl just_return_func\n" ".globl just_return_func\n"
"just_return_func:\n" "just_return_func:\n"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment