https://sourceware.org/bugzilla/show_bug.cgi?id=25749
Bug ID: 25749
Summary: PC relocation against SHN_ABS symbol in PIE or shared
library should be disallowed
Product: binutils
Version: 2.35 (HEAD)
Status: NEW
Severity: normal
Priority: P2
Component: ld
Assignee: unassigned at sourceware dot org
Reporter: hjl.tools at gmail dot com
Target Milestone: ---
[hjl@gnu-cfl-2 pr94391]$ cat a.c
extern unsigned long _binary_a_c_size __attribute__ ((visibility ("hidden")));
unsigned long
foo (void)
{
return (unsigned long) &_binary_a_c_size;
}
[hjl@gnu-cfl-2 pr94391]$ make
gcc -B./ -g -fpic -c -o a.o a.c
objcopy -B i386:x86-64 -I binary -O elf64-x86-64 a.c x.o
./ld -shared -o liba.so a.o x.o
[hjl@gnu-cfl-2 pr94391]$
There is no way to correctly resolve PC relocation against SHN_ABS symbol
in PIE or shared library without introducing new special PC relocation.
[hjl@gnu-cfl-2 pr94391]$ ld.lld -shared -o liba.so a.o x.o
ld.lld: error: relocation R_X86_64_PC32 cannot refer to absolute symbol:
_binary_a_c_size
>>> defined in x.o
>>> referenced by a.c:5
>>> a.o:(foo)
[hjl@gnu-cfl-2 pr94391]$
--
You are receiving this mail because:
You are on the CC list for the bug.