Hi Kai, this patch also mis-compiles binuitls-2.24 on x86_64.
In the function walk_wild_consider_section (ld/ldlang.c) a tail-call gets miscompiled: The stack frame is cleaned up, but now the jump target is invalid. 0x000000000040c801 <+193>: add $0x28,%rsp 0x000000000040c805 <+197>: mov %r13,%rsi 0x000000000040c808 <+200>: pop %rbx 0x000000000040c809 <+201>: mov %r14,%rdi 0x000000000040c80c <+204>: pop %rbp 0x000000000040c80d <+205>: pop %r12 0x000000000040c80f <+207>: pop %r13 0x000000000040c811 <+209>: pop %r14 0x000000000040c813 <+211>: pop %r15 0x000000000040c815 <+213>: jmpq *0x10(%rsp) before the patch the sequence did save the jump target in rax: 0x000000000040c801 <+193>: mov 0x10(%rsp),%rax 0x000000000040c806 <+198>: add $0x28,%rsp 0x000000000040c80a <+202>: pop %rbx 0x000000000040c80b <+203>: mov %r13,%rsi 0x000000000040c80e <+206>: mov %r14,%rdi 0x000000000040c811 <+209>: pop %rbp 0x000000000040c812 <+210>: pop %r12 0x000000000040c814 <+212>: pop %r13 0x000000000040c816 <+214>: pop %r14 0x000000000040c818 <+216>: pop %r15 0x000000000040c81a <+218>: jmpq *%rax Regards Bernd.