This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Question about EI_ABIVERSION handling
- From: Szabolcs Nagy <Szabolcs dot Nagy at arm dot com>
- To: Florian Weimer <fweimer at redhat dot com>, Dragan Mladjenovic <dmladjenovic at wavecomp dot com>
- Cc: nd <nd at arm dot com>, "libc-alpha at sourceware dot org" <libc-alpha at sourceware dot org>, "joseph at codesourcery dot com" <joseph at codesourcery dot com>, "Maciej W . Rozycki" <macro at linux-mips dot org>, Alan Modra <amodra at gmail dot com>, Carlos O'Donell <carlos at redhat dot com>, Faraz Shahbazker <fshahbazker at wavecomp dot com>
- Date: Wed, 26 Jun 2019 13:13:07 +0000
- Subject: Re: Question about EI_ABIVERSION handling
- References: <CY4PR22MB011905F40D52E703EB0F121CB3E20@CY4PR22MB0119.namprd22.prod.outlook.com> <875zoso8re.fsf@oldenburg2.str.redhat.com>
On 26/06/2019 13:01, Florian Weimer wrote:
> * Dragan Mladjenovic:
>
>> It seems that ld.so does not validate EI_ABIVERSION of main executable
>> when the said executable is loaded directly by the kernel.
>
> Hmm. I think this may be an oversight. I can confirm this behavior on
> x86-64.
>
>> Is this behavior intended? If I would wish to ensure that executable
>> with newer ABI version get rejected by the old loaders, am I expected
>> to add some other incompatible change like new dynamic tag?
>
> Unknown dynamic tags are ignored (like unknown program headers). Only
> unknown relocation types result in errors.
unknown dynamic relocation can be an intrusive change,
it requires a location (which can cause problems if the
same location has multiple relocations) and many tools
may need to be updated, not just the dynamic linker to
support it.
an alternative is a known dynamic relocation with undefined
symbol reference. (a new libc provides the symbol, an old
libc fails), unfortunately this seems hard to do for linker
features (hard coding magic symbol refs at link-time seems
wrong, conditionally linking a .o provided by the libc when
a particular link feature is used would work, but there is
no such mechanism currently)