https://sourceware.org/bugzilla/show_bug.cgi?id=33260
Fangrui Song <i at maskray dot me> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |i at maskray dot me --- Comment #9 from Fangrui Song <i at maskray dot me> --- I believe binding protected symbols locally should be the default behavior, without requiring an ld -z option. For clarity, other linkers or ports of GNU ld should avoid introducing -z [no]indirect-extern-access or the .note.gnu.property complexity. That said, I'm pleased there's a way to address the previous problematic behavior for x86-64. `cc -fPIC -DUSE_PROTECTED -O2 -fvisibility=hidden -mno-direct-extern-access -shared -o a.so a.c b.c -fuse-ld=lld` doesn't have the extra R_X86_64_64 dynamic relocations. On the GCC side, we should drop `HAVE_LD_PIE_COPYRELOC` and the x86-64 default to GOT indirection for external data symbols in -fpie mode. (https://maskray.me/blog/2021-01-09-copy-relocations-canonical-plt-entries-and-protected) gold is known to miss some protected preemptibility https://sourceware.org/bugzilla/show_bug.cgi?id=19823 -- You are receiving this mail because: You are on the CC list for the bug.