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.

Reply via email to