Preventing preemption of 'protected' symbols in GNU ld 2.26
Alan Modra
amodra@gmail.com
Wed Mar 30 01:44:00 GMT 2016
On Tue, Mar 29, 2016 at 12:54:36PM -0700, H.J. Lu wrote:
> Protected symbol never worked correctly on x86 before. My
> change closed a few long-standing bugs. There is no going-back.
The swift bug report and this thread should be telling you that
protected visibility symbols don't work correctly *now* on x86.
They did in fact work correctly before your changes, but had many
annoying restrictions. Those restrictions, all due to non-PIC, can be
overcome in a number of ways without breaking shared libraries.
eg. ppc32 is non-PIC by default just like x64, but see bfd/elf32-ppc.c
/* Convert lis;addi or lis;load/store accessing a protected
variable defined in a shared library to PIC. */
Yes, this makes ppc32 executables slower. I'd rather that than making
shared libraries slower.
FWIW, I agree with all the points Cary makes in
https://sourceware.org/ml/binutils/2016-03/msg00331.html.
--
Alan Modra
Australia Development Lab, IBM
More information about the Binutils
mailing list