[opensuse-arm] Fwd: ARM hard-float linker path - consensus
FYI, Adrian asked me to participate in the call and here's the result. Once we have a glibc patch, let's fix both gcc and glibc - and add a compatibility symlink for now until rebuilding of the whole distro succeeded... Andreas -------- Original Message -------- Subject: ARM hard-float linker path - consensus Date: Fri, 13 Apr 2012 18:37:11 +0100 From: Steve McIntyre <steve.mcintyre@linaro.org> To: cross-distro@lists.linaro.org CC: gcc-patches@gcc.gnu.org, libc-ports@sourceware.org Hi folks, As promised, here's minutes from the call we had this afternoon. Spoiler: the result we've agreed is /lib/ld-linux-armhf.so.3 And here's a transcription of the minutes from https://wiki.linaro.org/OfficeofCTO/HardFloat/LinkerPathCallApr2012 ======================================== Meeting: 13th April 2012, 15:00 UTC Agenda ------ * Debian/Ubuntu have so far built using /lib/arm-linux-gnueabihf/ld-linux.so.3 * Some other distros (Fedora, OpenSUSE) are still using /lib/ld-linux.so.3 option which matches the older soft-float ABI * Some people are proposing /libhf/ld-linux.so.3 or /libhfp/ld-linux.so.3 (multilib) * Some people proposed /lib/ld-arm-linux-gnueabihf.so.3 (similar to x86_64, libs still in /lib, from Michael Hope) * What should we do as a community? Present ------- Name Affiliations Steve McIntyre ARM, Debian, Linaro Wookey ARM, Debian, Linaro Richard Earnshaw ARM, gcc Jeff Law Fedora, Red Hat, gcc, glibc Jon Masters Fedora, Red Hat Andrew Haley Fedora, Red Hat, gcc Andreas Jaeger SUSE, openSUSE, glibc Carlos O'Donnell Mentor, gcc Steve Langasek Canonical, Ubuntu, Debian Dann Frazier Canonical, Ubuntu, Debian Adam Conrad Canonical, Ubuntu, Debian Matthias Klose Canonical, Ubuntu, Debian Mike Frysinger Gentoo Dennis Gilmore Fedora, Red Hat Discussion ---------- We started with a couple of questions up front to establish the grounds for discussion: * We believed that decision makers were present for all the important parties, i.e. all the arm hard-float distros, plus toolchain developers. This meant that a decision taken at the meeting could be implemented without needing further arguments/negotiations. * All the people present understood the importance of cross-distro binary compatibility, and they all wanted it. This led to agreement that we needed to agree on a standard path for the runtime linker for ARM hard-float Linux binaries. Debian and Ubuntu had so far been using the "multi-arch" path of /lib/arm-linux-gnueabihf/ld-linux.so.3. Fedora and OpenSUSE were thus far using /lib/ld-linux.so.3, the same as the soft-float ABI. Others had proposed alternative paths such as /libhf/ld-linux.so.3 or /libhfp/ld-linux.so.3 (multilib) or /lib/ld-arm-linux-gnueabihf.so.3. Discussion showed that none of these were found to be universally acceptable. Two parties were likely to be soon affected by an agreement here: 1. Ubuntu 12.04 (releasing with armhf in ~2 weeks) Adam/Steve L agreed that all efforts would be put in to switch the compilers in Ubuntu to a new path before release. Default things like gcc would be correct, but less common tools might still be targetting the old path /lib/arm-linux-gnueabihf/ld-linux.so. at release. They could be fixed in the longer term and would not stop progress here. 2. Mentor (Codebench due for release in ~1 week) Carlos mentioned this - Codebench has been using /lib/ld-linux.so.3 for hard-float binaries for some time and it was too late to change that for this upcoming release. Next release due in October. Suggested and accepted that this should be mentioned in release notes: if people want to use Codebench on some systems (Debian/Ubuntu and derivatives), they'll need to tweak their system setup. He may be able to do the linker change and rebuild in a point release in a few weeks. It was briefly suggested that the soft-float linker should be renamed away from /lib/ld-linux.so.3 as well at this time, but that idea was quickly shot down. Proposal #1: /lib/ld-armhf.so.3 (not generally liked) Proposal #2: /lib/ld-linux-armhf.so.3 (not favourite, but considered an acceptable compromise by all) No need to go any further. Conclusion ---------- All the people in the meeting agreed: the new runtime linker path for ARM hard-float Linux binaries was to be /lib/ld-linux-armhf.so.3 ACTION: People at the meeting to present this decision to their companies / communities and get the appropriate changes made. Further discussion ------------------ General unhappiness with the mess that led to this meeting. Future planning needs to be better between the various groups for the next time we have a new CPU/ABI/whatever. ACTION: Jon Masters to talk to the Linux Foundation about setting up a forum for such discussions. In the meantime, strong consensus to use the cross-distro@lists.linaro.org mailing list for any more conversations now we have people in contact. ACTION: Steve McIntyre to write up the minutes and circulate. Include an updated linker path patch for gcc to match the decision made here. More discussion about triplets and naming, but nothing came of it in the end. Distro folks have already decided what they're using and have patched various software to build appropriately. Richard wants to move gcc's config.guess to use arm-linux-gnueabihf; no strong objections to that. Linker path patch for gcc ------------------------- Adapted from earlier work by Dann Frazier <dann.frazier@canonical.com> and Michael Hope <michael.hope@linaro.org> 2012-04-13 Steve McIntyre <steve.mcintyre@linaro.org> * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define. (GLIBC_DYNAMIC_LINKER): Redefine to use the hard float path. diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h index 80bd825..8c9d2e7 100644 --- a/gcc/config/arm/linux-eabi.h +++ b/gcc/config/arm/linux-eabi.h @@ -62,7 +62,11 @@ /* Use ld-linux.so.3 so that it will be possible to run "classic" GNU/Linux binaries on an EABI system. */ #undef GLIBC_DYNAMIC_LINKER -#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3" +#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3" +#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3" +#define GLIBC_DYNAMIC_LINKER \ + "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \ + %{!mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "}" /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to use the GNU/Linux version, not the generic BPABI version. */ Post-meeting on IRC ------------------- Suggested that Richard should push the change into gcc trunk ASAP. Steve McIntyre agreed to work on that with Richard. Also suggested that we want to get a patch into glibc too to change the installation path for ARM hard-float. Andrew agreed to push glibc upstream for that. Cheers, -- Steve McIntyre steve.mcintyre@linaro.org <http://www.linaro.org/> Linaro.org | Open source software for ARM SoCs _______________________________________________ cross-distro mailing list cross-distro@lists.linaro.org http://lists.linaro.org/mailman/listinfo/cross-distro -- Andreas Jaeger aj@{suse.com,opensuse.org} Twitter/Identica: jaegerandi SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn,Jennifer Guild,Felix Imendörffer,HRB16746 (AG Nürnberg) GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126 -- To unsubscribe, e-mail: opensuse-arm+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-arm+owner@opensuse.org
Am Freitag, 13. April 2012, 20:40:20 schrieb Andreas Jaeger:
FYI, Adrian asked me to participate in the call and here's the result.
Once we have a glibc patch, let's fix both gcc and glibc - and add a compatibility symlink for now until rebuilding of the whole distro succeeded...
Thanks a lot Andreas, it is really great that you all were able to find a common agreement just in the first call :) -- Adrian Schroeter SUSE Linux Products GmbH email: adrian@suse.de -- To unsubscribe, e-mail: opensuse-arm+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-arm+owner@opensuse.org
On Saturday, April 14, 2012 09:47:46 Adrian Schröter wrote:
Am Freitag, 13. April 2012, 20:40:20 schrieb Andreas Jaeger:
FYI, Adrian asked me to participate in the call and here's the result.
Once we have a glibc patch, let's fix both gcc and glibc - and add a compatibility symlink for now until rebuilding of the whole distro succeeded...
Thanks a lot Andreas, it is really great that you all were able to find a common agreement just in the first call :)
Wasn't that hard, I only had to say loud "Yes" at the right time ;) I think the mailing list discussion on the cross-distro list was good enough so that the consensus was clear. Andreas -- Andreas Jaeger aj@{suse.com,opensuse.org} Twitter/Identica: jaegerandi SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn,Jennifer Guild,Felix Imendörffer,HRB16746 (AG Nürnberg) GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126 -- To unsubscribe, e-mail: opensuse-arm+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-arm+owner@opensuse.org
Btw. I'd like to move in glibc the linker to /lib/ld-linux-armhf.so.3 and provide a compatibility symlink. Any objections? How can I check in the glibc.spec file that I'm on such an ARM platform? What's the proper %ifarch armXX variable? Btw. wnce this is in, we can patch gcc for the new path (take it from http://sourceware.org/ml/libc-ports/2012-04/msg00060.html) Andreas -- Andreas Jaeger aj@{suse.com,opensuse.org} Twitter/Identica: jaegerandi SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn,Jennifer Guild,Felix Imendörffer,HRB16746 (AG Nürnberg) GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126 -- To unsubscribe, e-mail: opensuse-arm+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-arm+owner@opensuse.org
On 16.04.2012, at 09:43, Andreas Jaeger wrote:
Btw. I'd like to move in glibc the linker to /lib/ld-linux-armhf.so.3 and provide a compatibility symlink.
Any objections?
How can I check in the glibc.spec file that I'm on such an ARM platform? What's the proper %ifarch armXX variable?
IIRC our arch for armhf is armv7l, since arch-wise every armv7 is hf capable. There were pretty long discussions around how to name the arch fields to make sense, but from a "this code runs in that CPU" compatibility point of view, which IIUC the rpm arch is about, hf and sf don't make a difference for armv7l. It's only the ABI that's different. Alex -- To unsubscribe, e-mail: opensuse-arm+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-arm+owner@opensuse.org
On Monday, April 16, 2012 09:47:53 you wrote:
On 16.04.2012, at 09:43, Andreas Jaeger wrote:
Btw. I'd like to move in glibc the linker to /lib/ld-linux-armhf.so.3 and provide a compatibility symlink.
Any objections?
How can I check in the glibc.spec file that I'm on such an ARM platform? What's the proper %ifarch armXX variable?
IIRC our arch for armhf is armv7l, since arch-wise every armv7 is hf capable.
So, I'll use: %ifarch armv7l Andreas -- Andreas Jaeger aj@{suse.com,opensuse.org} Twitter/Identica: jaegerandi SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn,Jennifer Guild,Felix Imendörffer,HRB16746 (AG Nürnberg) GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126 -- To unsubscribe, e-mail: opensuse-arm+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-arm+owner@opensuse.org
Am Montag, 16. April 2012, 09:43:47 schrieb Andreas Jaeger:
Btw. I'd like to move in glibc the linker to /lib/ld-linux-armhf.so.3 and provide a compatibility symlink.
Any objections?
How can I check in the glibc.spec file that I'm on such an ARM platform? What's the proper %ifarch armXX variable?
I think we will need to go to "armv7hl" here again. For now, you may also do it for "armv7l" because it is our hard fpu architecture. You should not use %arm, because it would also include armv5l which is soft fp in our distro.
Btw. wnce this is in, we can patch gcc for the new path (take it from http://sourceware.org/ml/libc-ports/2012-04/msg00060.html)
Andreas
-- Adrian Schroeter SUSE Linux Products GmbH email: adrian@suse.de -- To unsubscribe, e-mail: opensuse-arm+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-arm+owner@opensuse.org
participants (3)
-
Adrian Schröter
-
Alexander Graf
-
Andreas Jaeger