This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Multiarch interpreter names for traditional architectures


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]