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, Maciej W. Rozycki wrote:
> 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.
It's only if a version was released in glibc that you can't reassign it.
I don't see why you can't change binutils to use version 4 for GNU_STACK
(and then 5 for IFUNC), probably including on 2.27 branch - binaries built
to use version 5 for GNU_STACK just won't work with glibc until it gets
IFUNC support. The relevant rule is: glibc doesn't claim to support a
version unless it supports all ABIs <= that version (that is, all ABIs
used by binaries that give a version <= that version).
It's OK for binaries to specify an ABI version higher than they require
(which would, effectively, be the case for binaries built now that use
version 5 for GNU_STACK - version 5 meaning, under the reassigned numbers,
that you need a glibc supporting all of MIPS_PLT, UNIQUE, MIPS_O32_FP64,
GNU_STACK and IFUNC - which is a stricter requirement than necessary, but
it's OK for binaries to specify stricter requirements than necessary).
Joseph S. Myers