On Mon, Apr 09, 2012 at 10:38:17PM -0600, Jeff Law wrote:
On 04/09/2012 10:33 PM, Mike Frysinger wrote:
his point is you can't install multiple architectures into the same root. alpha, arm oabi, and m32r for example have ldso set to /lib/ld-linux.so.2. a quick grep of GLIBC_DYNAMIC_LINKER in gcc's config/ tree shows other collisions.
Hmmm, why would anyone want to install distinct architectures in the same root... I must admit I don't recall that being discussed at Plumbers.
It's one of the things we're trying to achieve with multi-arch. We can support mixed-ABI, mixed-OS, mixed-architecture environments cleanly on one system, using a consistent set of packages for all. Setting up a cross-compilation environment suddenly becomes easy - install the cross-compiler and the libs for the target platform straight from a normal Debian mirror as binary packages.
See http://wiki.debian.org/Multiarch/TheCaseForMultiarch for more rationale.
We understand that not everybody may want or see the need for this for themselves. We *really* get that. But we want it to be possible for *us* to do it, and an ultra-important part of that is to have unique loader paths wherever possible. Hence the discussion over the location for the arm hard-float linker. We've built our systems using the multi-arch path as that worked well for us and doesn't hurt anybody else. There are problems with some of the other options here:
* /lib/ld-linux.so.3 - it already clashes with the soft-float ABI linker, and we 100% want to support both of those on the same system in parallel (e.g. supporting older soft-float proprietary binaries on newer hard-float systems)
* /libhf/ld-linux.so.3 - it could readily clash with a future hard-float platform; look how /lib64/* could clash with amd64/ARMv8/ppc64/sparc64 all populating it in the near future
* /lib/ld-linux-hf.so.3 - similar problem
The options I've seen enumerated that can't clash are:
* /lib/<uuid>/ld-linux.so.3 - just a joke suggestion, ignore it (please!)
* /lib/ld-linux-$triplet.so.3 - could work fine, so long as we can agree on triplets
* /lib/$triplet/ld-linux.so.3 - ditto
In Debian and Ubuntu, we have implemented the last one of these three and it's working fine for us. We had understood that in previous cross-distro discussions (e.g. at Plumbers last year) there was agreement on this, but we're now seeing dissent. Ubuntu are expecting (by the end of this month) to be the first distro to ship a stable release using the hard-float ABI on ARM, so it's unfortunate that this argument is happening now.
We have to agree on a standard path if we're ever going to have working cross-distro binaries, and that's increasingly important to us in the ARM world. By all means ignore the multi-arch route that the Debian world is following, but please accept our reasoning for the linker location.
Cheers,