Thomas Garnier wrote: > - "pushq $1f\n\t" > + "movabsq $1f, %q0\n\t" > + "pushq %q0\n\t" > "iretq\n\t" > UNWIND_HINT_RESTORE > "1:"
Fake PIE. True PIE looks like this: ffffffff81022d70 <do_sync_core>: ffffffff81022d70: 8c d0 mov eax,ss ffffffff81022d72: 50 push rax ffffffff81022d73: 54 push rsp ffffffff81022d74: 48 83 04 24 08 add QWORD PTR [rsp],0x8 ffffffff81022d79: 9c pushf ffffffff81022d7a: 8c c8 mov eax,cs ffffffff81022d7c: 50 push rax ffffffff81022d7d: ===> 48 8d 05 03 00 00 00 lea rax,[rip+0x3] # ffffffff81022d87 <do_sync_core+0x17> ffffffff81022d84: 50 push rax ffffffff81022d85: 48 cf iretq ffffffff81022d87: c3 ret Signed-off-by: Alexey Dobriyan <adobri...@gmail.com> --- a/arch/x86/include/asm/processor.h +++ b/arch/x86/include/asm/processor.h @@ -710,7 +710,8 @@ static inline void sync_core(void) "pushfq\n\t" "mov %%cs, %0\n\t" "pushq %q0\n\t" - "pushq $1f\n\t" + "leaq 1f(%%rip), %q0\n\t" + "pushq %q0\n\t" "iretq\n\t" UNWIND_HINT_RESTORE "1:"