https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108106
--- Comment #7 from H.J. Lu <hjl.tools at gmail dot com> ---
It is about -mshared:
[hjl@gnu-cfl-3 tmp]$ cat foo.s
jmp __interceptor_sigsetjmp
.globl __interceptor_sigsetjmp
__interceptor_sigsetjmp:
nop
[hjl@gnu-cfl-3 tmp]$ as -o foo.o foo.s
[hjl@gnu-cfl-3 tmp]$ readelf -rW foo.o
There are no relocations in this file.
[hjl@gnu-cfl-3 tmp]$ as -o foo.o foo.s -mshared
[hjl@gnu-cfl-3 tmp]$ readelf -rW foo.o
Relocation section '.rela.text' at offset 0xc8 contains 1 entry:
Offset Info Type Symbol's Value
Symbol's Name + Addend
0000000000000001 0000000100000004 R_X86_64_PLT32 0000000000000005
__interceptor_sigsetjmp - 4
[hjl@gnu-cfl-3 tmp]$
The assembler option:
'-mno-shared'
On ELF target, the assembler normally optimizes out non-PLT
relocations against defined non-weak global branch targets with
default visibility. The '-mshared' option tells the assembler to
generate code which may go into a shared library where all non-weak
global branch targets with default visibility can be preempted.
The resulting code is slightly bigger. This option only affects
the handling of branch instructions.
The older assembler generates R_X86_64_PC32 relocation.