The current x86_64 setjmp helpers incur a reloc, so fix that up.
$ readelf -r lib/libc.so.0
...
Relocation section '.rela.plt' at offset 0xb058 contains 10 entries:
Offset Info Type Sym. Value Sym. Name + Addend
000000236010 02a400000007 R_X86_64_JUMP_SLO
000000000000b3c4 __sigsetjmp + 0
...
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
We cannot do it in C because it must be a tail-call, so frame-unwinding
in setjmp doesn't clobber the state restored by longjmp. */
+#include <sysdep.h>
+
.global _setjmp
.type _setjmp,%function
_setjmp:
xorq %rsi, %rsi
- jmp __sigsetjmp@PLT
+ jmp HIDDEN_JUMPTARGET(__sigsetjmp)
.size _setjmp,.-_setjmp
#define _ASM
#define _SETJMP_H
#include <bits/setjmp.h>
+#include <sysdep.h>
.global setjmp
.type setjmp,%function
setjmp:
movq $1, %rsi
- jmp __sigsetjmp@PLT
+ jmp HIDDEN_JUMPTARGET(__sigsetjmp)
.size setjmp,.-setjmp
#define _ASM
#define _SETJMP_H
#include <bits/setjmp.h>
+#include <sysdep.h>
.global __sigsetjmp
.type __sigsetjmp,%function
jmp __sigjmp_save
#endif
.size __sigsetjmp,.-__sigsetjmp
+libc_hidden_def(__sigsetjmp)