Re: [PATCH] ARM: Use different linker path for hardfloat ABI

2012-04-09 Thread Adam Conrad
On Thu, Apr 05, 2012 at 10:50:50AM +1200, Michael Hope wrote:
 On 4 April 2012 18:54, Jakub Jelinek ja...@redhat.com wrote:
 
  If the agreement is that arm 32-bit softfp really needs to be installable
  alongside 32-bit hardfp (and alongside aarch64), then IMHO it should do it
  like all other multilib ports (x86_64/i?86/x32, s390/s390x, ppc/ppc64, the
  various MIPS variants) and what FSB says, e.g. use
  /lib/ld-linux.so.3 and */lib dirs for softfp,
  /libhf/ld-linux.so.3 and */libhf dirs for hardfp and
  /lib64/ld-linux.so.3 and */lib64 dirs for aarch64, have 32-bit
  arm-linux-gnueabi gcc configured for softfp/hardfp multilib with
  MULTILIB_OSDIRNAMES, etc., have it configured in glibc
 
 OK.  This gives a different path for the hard float loader and lets
 the Debian guys add on top of that.  I'll ping them and see what they
 think.

The problem here that everyone !Debian isn't taking into account is that
multilib paths don't solve our use-case.  Multilib paths only solve the
case of multiple ABIs on the same base processor family.  As soon as you
combine x86, arm, power, etc, you end up with overlaps (or, the potential
for overlaps; the fact that various arches accidentally have different
majors keeps those overlaps to a minimum right now, but that's not by
design).

Honestly, this is something we should have solved two decades ago, but the
very idea that someone would want to do what Debian is now doing didn't
occur to any of us.  That's cool.  We didn't think of it back then.  That's
no excuse to continue with the status quo just because it's the status quo.

To be perfectly clear here, we don't care where the linker goes (really, we
don't), we just want it to be both arch and ABI unique.  If that means
taking a crc32 of a rot-13 of the compiler flags used to define the ABI,
and then stuffing the linker in /lib/gobbledygook/ld-linux.so, so be it.

If this means setting up a (very) lightweight process with the LSB, where
everytime a new distro proposes a shiny new arch/ABI, they submit it, and
the LSB assigns them an ABI serial, and we all then agree to toss the
linker in /lib/abi-2345/ld-linux, that works too.  Don't care.  Really
don't care.

This isn't about trying to force people to switch from multilib to multi-
arch, where the former is clearly working fine for them.  It's not.  This
is purely about people bikeshedding about paths they consider un-pretty,
while (I hope not maliciously or knowingly?) causing potential overlap and
breakage for those of us for whom this actually matters and isn't purely
a color selection exercise.

In the short term, due to sheer luck, /libhf/ld-linux.so.3 would work for
us, purely because that doesn't overlap with any other linkers that Debian
currently ships.  The fact that the multilib path happens to work doesn't
make it correct for our use-case, and certainly doesn't make it correct
ongoing.

Ultimately, however, I want this solved.  We thought we had this solved at
Plumbers last fall.  To hear now that we didn't involve everyone is
disheartening, given that we (we being Debian and Ubuntu) were well
outnumbered in that room by people from RedHat, Fedora, ChromeOS, and
Gentoo.  We all agreed on something back then, and now that I'm three
weeks away from shipping an armhf distro, it's all exploded yet again into
Bikeshed Part III: The Revenge of Purple Paint.

I really want to ship a compiler than stuffs the correct and agreed
upon linker in headers.  I don't want to see third parties build binaries
on Ubuntu that don't run on Fedora.  No one wants to see that, I think.

Obviously, conversely (though this is much less hassle), I need to be
able to ship a linker symlink that matches expectations, so that binaries
built on Fedora will run on Ubuntu.  Again, I'm sure we all want that.

So, pretty please, can we (A) address the concerns here without people
putting up the Unique paths are Debian trying to force multi-arch on us
straw man, and (B) agree to *something*, before I ship something that
conforms to a standard agreed upon more than half a year ago that is now
a cause for contention?  Pretty please?  With sugar on top?  Kthx.

  (of course, aarch64 is going to be new, talking now about the 32-bit softfp 
  vs. hardfp).
 
 Yip.  I assume something like /lib64 to stay consistent with other
 architectures.  aarch64 is hard float only.

I expect that most distros will probably ship their aarch64 libraries
in /lib64 (Debian and Ubuntu won't, but that's fine) to keep consistent
with their other 64-bit ports, but where you put libraries is entirely
unrelated to where the linker lives.  You could have all your libraries
in /root/.trash/ and if the linker lives in a canonical location and
can resolve that, that's fine.  I will still (obviously, I think, from
my comments above) argue that the linker should live in a guaranteed
unique location.  Overlap with other arches in /lib64 is certainly far
more likely than overlap in /libhf.

... Adam Conrad



Re: [PATCH] ARM: Use different linker path for hardfloat ABI

2012-04-09 Thread Adam Conrad
On Mon, Apr 09, 2012 at 07:14:45PM -0400, Mike Frysinger wrote:
 
 again, saying /lib/tuple/ldso isn't multiarch is bunk.  but it sounds 
 like you're fine with /libhf/, so there isn't anything left to thrash about 
 there.

I appreciate your careful reading of my email and the issues I outlined,
and I look forward to your new urbandictionary definition of the common
colloquialism fine with.

A path for one file isn't multi-arch.  A unique path for linkers does help
facilitate multi-arch, but we're not forcing you to put libraries some
place you don't want to, implement new ideas you don't want to, or any
other such bunk, as you so obviously impartially put it.

I realize that most people can't see past their own use case to understand
why a unique location for linkers is helpful, useful, and important for
some other people's use cases, but you either didn't read or chose to
ignore why using multilib paths just plain doesn't scale past a single
base architecture, and why that's a problem for people who aren't you.

This isn't about pushing multi-arch on others.  This isn't about pushing
multi-arch on others.  Also, this.  Isn't.  About.  Pushing.  Multi-arch.
On.  Others.  I don't know how much more clear I can make that.

If the QT guys filed a bug/feature request on libstdc++ asking to change
something that didn't break C++ standards, but facilitated some fancy
thing they were working on, my response wouldn't be dude, I use GTK,
what do I care about your weird needs, screw you and your QT agenda, it
would be to ask them why they need the thing they need, evaluate how, if
in any way, that would impact other users, and work with them.

Using unique linker paths (for new architectures) hurts exactly zero
users, and this discussion has taken up FAR MORE developer time than
implementation ever would have.  Arguing against unique linker paths for
the reason that we've never done that before is not helpful, and it's
blatantly ignoring technical arguments and hiding them behind some bizarre
inter-distro conspiracy theory.

Maybe the conspiracy theory is fun for you.  I don't know.  It's not for
me.  We were told by GCC upstream that we needed distro consensus.  We
got that over half a year ago.  Now I'm told by distros that the patch
not being upstream is why they are backing out of said consensus.  Fun.

 Adam Conrad


Re: [PATCH] ARM: Use different linker path for hardfloat ABI

2012-04-09 Thread Adam Conrad
On Tue, Apr 10, 2012 at 12:01:57AM -0400, Mike Frysinger wrote:
 On Monday 09 April 2012 19:31:40 Adam Conrad wrote:
  I realize that most people can't see past their own use case to understand
  why a unique location for linkers is helpful, useful, and important for
  some other people's use cases, but you either didn't read or chose to
  ignore why using multilib paths just plain doesn't scale past a single
  base architecture, and why that's a problem for people who aren't you.
 
 and as already stated, the proposed paths here, free of multiarch subpaths, 
 satisfy the requirements that you've put forth

Like I said, then, you didn't actually read or understand why proposing
multilib paths doesn't work.  You realize conceptually, I hope, that
there's no guarantee of uniqueness in lib/lib64/lib32/libsf/libhf once
you cross the base CPU architecture boundary, right?

Sure, I said that /libhf/ld-linux.so.3 would *accidentally* work for
us right now, due to sheer luck, and you're running with that as saying
that we clearly have no problem here worth solving.  When the next
architecture clashes with linkers on another (hint: it almost certainly
will), do we get to argue about this all over again in six months,
instead of codifying a new and saner practice now?

... Adam Conrad