https://sourceware.org/bugzilla/show_bug.cgi?id=32443
--- Comment #8 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to H.J. Lu from comment #7) > (In reply to Stephen Kell from comment #5) > > > When compiler sees a hidden undefined symbol, it assumes that > > > it is defined somewhere else and it isn't an ABS symbol. As > > > the result, you won't get 0x2a. > > > > I see. In what way does the "not an ABS symbol" assumption affect the > > compiler output? > > Compiler generates > > leaq value(%rip), %rax > > for hidden symbol reference without GOT and you won't get 0x2a > at run-time. [hjl@gnu-tgl-3 pr32443]$ cat pie.c #include <stdio.h> #include <stdint.h> extern int value __attribute__ ((visibility("hidden"))); void lib_func (void) { printf ("value: %p\n", &value); } int main(void) { lib_func(); return 0; } [hjl@gnu-tgl-3 pr32443]$ gcc -pie -g -Wl,-R,. -Wl,--defsym,value=42 -o pie pie.o [hjl@gnu-tgl-3 pr32443]$ ./pie value: 0x556f3cbdb02a [hjl@gnu-tgl-3 pr32443]$ -- You are receiving this mail because: You are on the CC list for the bug.