This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Multiarch interpreter names for traditional architectures
- From: Joseph Myers <joseph at codesourcery dot com>
- To: <javier--CbphpPOVok9WFxGWvC7CbkqlsxDZyT at jasp dot net>
- Cc: <libc-alpha at sourceware dot org>, Javier Serrano Polo <jasp-outbox at ono dot com>
- Date: Mon, 5 Feb 2018 16:53:11 +0000
- Subject: Re: Multiarch interpreter names for traditional architectures
- Authentication-results: sourceware.org; auth=none
- References: <1517756479.29018.96.camel@sempati.menos4>
On Sun, 4 Feb 2018, Javier Serrano Polo wrote:
> Simpler systems use multiarch interpreter names. I am looking for
> consensus since I would like to avoid, e.g., having ld-linux-i386.so.2,
> ld-linux-i686.so.2, ld-linux-x86.so.2, and ld-linux-x86-32.so.2 for x86.
> What would be the proper multiarch names for the following
> architectures? I present suggestions:
As discussed, changing the interpreter name is an ABI break (apart from
making new binaries gratuitously not work on old systems, the dynamic
linker can get confused when a reference to the old name ends up being
resolved to a symlink to the new path with the new SONAME; this is an
actual issue that arose with the change to have ARM hard-float ABI use a
different dynamic linker name from soft-float ABI). I think doing so for
any existing ABI has costs that outweigh any benefits.
> m68k ld-linux-m68k.so.1
Under-specified, since you have classic m68k, ColdFire hard-float and
ColdFire soft-float. See <https://sourceware.org/glibc/wiki/ABIList>.
> mips,classic NaN,o32,BE ld-linux-mips.so.1
> mips,classic NaN,o32,LE ld-linux-mipsle.so.1
> mips,classic NaN,n64,LE ld-linux-mips64le.so.1
Under-specified, since you have hard-float and soft-float.
> powerpc,32-bit ld-linux-powerpc.so.1
> powerpc SPE ld-linux-powerpcspe.so.1
The actual distinction at the glibc ABI level is between the hard-float
and soft-float ABIs; SPE uses the same glibc ABI as soft-float.
This illustrates an issue with expecting unique interpreter paths in such
cases. It's entirely reasonable to have different distribution variants
for powerpc soft-float and SPE, which might thus use different multiarch
directory names - but because there isn't a separate ABI, anything which
is part of the ABI (including the interpreter path) should not be
different between them.
> powerpc,64-bit,BE ld-linux-powerpc64.so.1
> powerpc,64-bit,LE ld-linux-powerpc64le.so.2
The existing paths are /lib64/ld64.so.1 and /lib64/ld64.so.2. Those paths
are unique to those ABIs - it's only the path that needs to be unique,
there should be no problem with one ABI having ld64.so.1 in /lib64
(powerpc64 BE) and another having it in /lib (s390x).
> s390,64-bit ld-linux-s390-64.so.1
Again, the path is already unique (/lib/ld64.so.1).
> sh,SH4 ld-linux-sh4.so.2
Under-specified, there are four SH4 ABIs.
> sparc,64-bit ld-linux-sparc64.so.2
Path already unique, /lib64/ld-linux.so.2.
--
Joseph S. Myers
joseph@codesourcery.com