https://sourceware.org/bugzilla/show_bug.cgi?id=27169
Bug ID: 27169 Summary: i386: Emit R_386_PLT32 instead of R_386_PC32 for `call/jmp foo` Product: binutils Version: unspecified Status: UNCONFIRMED Severity: normal Priority: P2 Component: gas Assignee: unassigned at sourceware dot org Reporter: i at maskray dot me Target Milestone: --- gcc i386 -fno-pic emits `call/jmp foo`, which produces an R_386_PC32 relocation, which is indistinguishable from an address taken operation. If the symbol turns out to be external, the linker has to employ a tricky called "canonical PLT entry" (st_shndx=0, st_value!=0), which is similar to a copy relocation. If a shared object is linked with -Bsymbolic or --dynamic-list and defines a function symbol which needs to be interposed by a canonical PLT entry, the linker could error (the address of the symbol may be different in the shared object and in the executable). i386 needs a change similar to https://sourceware.org/bugzilla/show_bug.cgi?id=22791 -- You are receiving this mail because: You are on the CC list for the bug.