Multiarch interpreter names for traditional architectures
Joseph Myers
joseph@codesourcery.com
Mon Feb 5 18:04:00 GMT 2018
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
More information about the Libc-alpha
mailing list