https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119386
--- Comment #47 from Alexander Monakov <amonakov at gcc dot gnu.org> --- (In reply to Ard Biesheuvel from comment #43) > Non-PIC might be more efficient, but there are cases where we cannot use it. > The early startup code on x86 runs from a different virtual mapping than it > was linked at, and this has been causing lots of issues. Grep for > RIP_REL_REF() in the Linux source tree and weep :-) So unless I botched my grep, there's only a handful of files that employ RIP_REL_REF, all for position-independent addressing at early startup as you explain. Considering the macro is effectively used for writing PIE code by hand, why not compile those files with -fpie in the first place? (not -fpic, which would emit GOT-indirect references to global variables with default, not hidden, visibility)