This is the mail archive of the
mailing list for the binutils project.
Re: [RFC] [MIPS] Enable non-executable PT_GNU_STACK support v2
On Thu, 22 Dec 2016, Joseph Myers wrote:
> > I thought 4 was reserved for IFUNC, meaning that support for 5 implied
> > support for IFUNC (because a simple comparison is all that's available to
> > tell whether glibc supports the features required by an executable /
> > shared library; it's a single ABI version number, not a bitmask of
> > features used) and so the ordering was forced. Certainly the patch here
> > lists IFUNC before MIPS_GNU_STACK, and I don't think the libc-abis system
> > supports gaps in the numbering (you'd need to put in a dummy name if 4 is
> > now to be unused, but then the dummy name would be visible when you run
> > libc.so.6, which it shouldn't be).
> The natural way to address that issue, incidentally, would be to reassign
> number 4 to MIPS_GNU_STACK and say that IFUNC will get number 5 when
> ready. (All the other comments about patch proposals that are explicitly
> for review not RFC, with rationale, architecture-independent pieces split
> out etc., still apply.)
Unfortunately binutils 2.27 have been released which already set ABI
version to 5 despite that they do not support IFUNC. So we cannot
retroactively make version 5 imply IFUNC support, and consequently we
cannot make version 4 imply IFUNC support either, as we work under the
assumption that any given ABI version supports all the previous
(lower-numbered) ABI versions' features.
We can make version 4 imply MIPS_GNU_STACK because it will not break the
said assumption, and I suppose it may help with chosing reasonable ABI
names for versions 4 and 5 if we cannot support gaps (why?). However
IFUNC will have to use version 6 or higher.
Have I missed anything?
Regrettably I haven't realised I need to veto the binutils change before
it was upstreamed, or at least back it out before 2.27 went out; sorry