[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: OSABI on Linux Distros



On 18-Jun-2016 10:41 AM, Carlos O'Donell wrote:
On 06/10/2016 05:22 PM, Roland McGrath wrote:
What is the reason why we emit OSABI value as "UNIX - System V"
(ELFOSABI_SYSV) even on GNU/Linux systems? Shouldn't it be just "GNU"
(ELFOSABI_GNU)?

In GNU systems the use of this field is specifically to indicate that
certain GNU extensions to ELF are used in the particular object.  In
particular, if any .dynsym entries use STT_GNU_IFUNC o STB_GNU_UNIQUE,
then e_ident[EI_OSABI] must be ELFOSABI_GNU.  Otherwise, it can be
ELFOSABI_NONE (aka ELFOSABI_SYSV).  In fact, it should be, and the
tools (linkers) implement that distinction.  This makes it possible
for current tools (without special switches or whatnot) to produce
binaries that are compatible with older dynamic linker implementations
that did not support these GNU extensions to ELF.

This is arguably a bad overloading of the original instead of
EI_OSABI, but it's what's been done for GNU systems and so now it's an
unchangeable part of the GNU ELF gABI.

Sure we might have to document this in the GNU ELF gABI, but nothing
stops us from changing it and moving forward?

Change binutils to generate ELFOSABI_GNU by default, with a
"special switch" to allow people to generate pre-2009 glibc ld.so
compatible binaries if they need it. You would need a sysroot to build
with so they'd be using probably similar vintage tools anyway and don't
have to worry. Then all binaries going forward are marked as being
ELFOSABI_GNU binaries.

The use case of being able to use ELFOSABI_GNU to determine how to decode
values between PT_LOOS/PT_HIOS is the most relevant I've seen.

Today with ELFOSABI_NONE you don't know how to decode those values, only
though if one assumes that PT_LOOS/PT_HIOS values can overlap between
any OS.

Thats absolutely what I think. I have a patch. I shall post it here soon.

And if we have good consensus, I shall talk to H.J to get this added to GNU-gABI.

--
Supra