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,
-- 
Steve McIntyre                                steve.mcint...@linaro.org
<http://www.linaro.org/> Linaro.org | Open source software for ARM SoCs


_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to