public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Triplet for ARM Linux HardFP ABI, again
@ 2011-02-21 15:02 Guillem Jover
  2011-02-21 20:53 ` Joseph S. Myers
  2011-03-01 15:27 ` Andrew Stubbs
  0 siblings, 2 replies; 7+ messages in thread
From: Guillem Jover @ 2011-02-21 15:02 UTC (permalink / raw)
  To: gcc

[-- Attachment #1: Type: text/plain, Size: 1447 bytes --]

Hi!

This was already discussed in this list some time ago [0]. But it came
up again when restarting the discussion for the proposed new armhf port
for Debian.

  [0] <http://gcc.gnu.org/ml/gcc/2010-07/msg00179.html>

My arguments for why a distinct triplet is needed can be found in [1],
it's a big long though. Most of the points there revolve around the
fact that we rely on the toolchains as configured by _default_ to
produce the expected output targetting a concrete architecture, it
also has implications for the file system paths.

  [1] <http://lists.debian.org/debian-dpkg/2011/02/msg00039.html>

It seems from reading the past discussion on this list that the main
objection was that the triplet should not be used to decide what
floating point ABI to use in gcc. No problem with that!

So, given the arguments put forward in [1], which I think are quite
compelling (but then I guess I'm obviously biased), I was wondering
if you'd consider accepting something ressembling the attached patch
(completely untested, though), which would seem like a compromise we
all might be able to live with, and which would allows us to use a
unique triplet, w/o needing to abuse the vendor field, while gcc would
not need to do anything based on that, our Debian gcc packaging
would choose the floating point ABI depending on the target Debian
architecture, in the same way we do other ABI selections independently
from the triplet.

thanks,
guillem

[-- Attachment #2: gcc-eabi-supermatch.patch --]
[-- Type: text/x-diff, Size: 6392 bytes --]

diff --git a/configure b/configure
index 501c6ff..0bdf69a 100755
--- a/configure
+++ b/configure
@@ -3236,7 +3236,7 @@ case "${target}" in
     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
     libgloss_dir=arm
     ;;
-  arm*-*-linux-gnueabi)
+  arm*-*-linux-gnueabi*)
     noconfigdirs="$noconfigdirs target-qthreads"
     case ${with_newlib} in
       no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
diff --git a/configure.ac b/configure.ac
index 9121d65..89514f5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -682,7 +682,7 @@ case "${target}" in
     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
     libgloss_dir=arm
     ;;
-  arm*-*-linux-gnueabi)
+  arm*-*-linux-gnueabi*)
     noconfigdirs="$noconfigdirs target-qthreads"
     case ${with_newlib} in
       no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in
index b64ba55..642b317 100644
--- a/gcc/ada/gcc-interface/Makefile.in
+++ b/gcc/ada/gcc-interface/Makefile.in
@@ -1841,7 +1841,7 @@ ifeq ($(strip $(filter-out powerpc% linux%,$(arch) $(osys))),)
   LIBRARY_VERSION := $(LIB_VERSION)
 endif
 
-ifeq ($(strip $(filter-out arm% linux-gnueabi,$(arch) $(osys)-$(word 4,$(targ)))),)
+ifeq ($(strip $(filter-out arm% linux-gnueabi%,$(arch) $(osys)-$(word 4,$(targ)))),)
   LIBGNAT_TARGET_PAIRS = \
   a-intnam.ads<a-intnam-linux.ads \
   s-inmaop.adb<s-inmaop-posix.adb \
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 54b822e..1a47343 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -820,13 +820,13 @@ arm*-*-linux*)			# ARM GNU/Linux with ELF
 	esac
 	tmake_file="${tmake_file} t-linux arm/t-arm"
 	case ${target} in
-	arm*-*-linux-*eabi)
+	arm*-*-linux-*eabi*)
 	    tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
 	    tm_file="$tm_file ../../libgcc/config/arm/bpabi-lib.h"
 	    tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"
 	    # Define multilib configuration for arm-linux-androideabi.
 	    case ${target} in
-	    *-androideabi)
+	    *-androideabi*)
 		tmake_file="$tmake_file arm/t-linux-androideabi"
 		;;
 	    esac
@@ -848,7 +848,7 @@ arm*-*-uclinux*)		# ARM ucLinux
 	tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
 	tmake_file="arm/t-arm arm/t-arm-elf"
 	case ${target} in
-	arm*-*-uclinux*eabi)
+	arm*-*-uclinux*eabi*)
 	    tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h"
 	    tm_file="$tm_file ../../libgcc/config/arm/bpabi-lib.h"
 	    tmake_file="$tmake_file arm/t-bpabi"
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 02cb7ac..fbd5e78 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -3219,7 +3219,7 @@ proc check_effective_target_sync_int_long { } {
 	     || [istarget i?86-*-*]
 	     || [istarget x86_64-*-*]
 	     || [istarget alpha*-*-*] 
-	     || [istarget arm*-*-linux-gnueabi] 
+	     || [istarget arm*-*-linux-gnueabi*]
 	     || [istarget bfin*-*linux*]
 	     || [istarget hppa*-*linux*]
 	     || [istarget s390*-*-*] 
@@ -3250,7 +3250,7 @@ proc check_effective_target_sync_char_short { } {
 	     || [istarget i?86-*-*]
 	     || [istarget x86_64-*-*]
 	     || [istarget alpha*-*-*] 
-	     || [istarget arm*-*-linux-gnueabi] 
+	     || [istarget arm*-*-linux-gnueabi*]
 	     || [istarget hppa*-*linux*]
 	     || [istarget s390*-*-*] 
 	     || [istarget powerpc*-*-*]
diff --git a/libjava/configure b/libjava/configure
index f79e53b..2084c68 100755
--- a/libjava/configure
+++ b/libjava/configure
@@ -20527,7 +20527,7 @@ case "${host}" in
     # on Darwin -single_module speeds up loading of the dynamic libraries.
     extra_ldflags_libjava=-Wl,-single_module
     ;;
-arm*linux*eabi)
+arm*linux*eabi*)
     # Some of the ARM unwinder code is actually in libstdc++.  We
     # could in principle replicate it in libgcj, but it's better to
     # have a dependency on libstdc++.
diff --git a/libjava/configure.ac b/libjava/configure.ac
index 8187eec..8d56a79 100644
--- a/libjava/configure.ac
+++ b/libjava/configure.ac
@@ -919,7 +919,7 @@ case "${host}" in
     # on Darwin -single_module speeds up loading of the dynamic libraries.
     extra_ldflags_libjava=-Wl,-single_module
     ;;
-arm*linux*eabi)
+arm*linux*eabi*)
     # Some of the ARM unwinder code is actually in libstdc++.  We
     # could in principle replicate it in libgcj, but it's better to
     # have a dependency on libstdc++.
diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host
index e29404c..a2e58a9 100644
--- a/libstdc++-v3/configure.host
+++ b/libstdc++-v3/configure.host
@@ -322,7 +322,7 @@ case "${host}" in
         fi
     esac
     case "${host}" in
-      arm*-*-linux-*eabi)
+      arm*-*-linux-*eabi*)
 	port_specific_symbol_files="\$(srcdir)/../config/os/gnu-linux/arm-eabi-extra.ver"
 	;;
     esac
diff --git a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
index cb40b7b..ae63bd8 100644
--- a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
+++ b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
@@ -1,5 +1,5 @@
 // { dg-options "-std=gnu++0x -funsigned-char -fshort-enums" }
-// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } }
+// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi* } }
 
 // 2007-05-03  Benjamin Kosnik  <bkoz@redhat.com>
 //
diff --git a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
index d71c012..1b9f6c7 100644
--- a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
+++ b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
@@ -1,5 +1,5 @@
 // { dg-options "-std=gnu++0x -funsigned-char -fshort-enums" }
-// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } }
+// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi* } }
 
 // 2007-05-03  Benjamin Kosnik  <bkoz@redhat.com>
 //

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Triplet for ARM Linux HardFP ABI, again
  2011-02-21 15:02 Triplet for ARM Linux HardFP ABI, again Guillem Jover
@ 2011-02-21 20:53 ` Joseph S. Myers
  2011-02-22  7:08   ` Guillem Jover
  2011-03-01 15:27 ` Andrew Stubbs
  1 sibling, 1 reply; 7+ messages in thread
From: Joseph S. Myers @ 2011-02-21 20:53 UTC (permalink / raw)
  To: Guillem Jover; +Cc: gcc

On Mon, 21 Feb 2011, Guillem Jover wrote:

> if you'd consider accepting something ressembling the attached patch

A pre-existing condition, but in general where the code you're changing 
hardcodes "gnu" that's wrong - arm*-*-linux-uclibceabi is also meant to be 
valid.  So if you allow a suffix here, the general form to accept 
consistently would be arm*-*-linux-*eabi*.

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Triplet for ARM Linux HardFP ABI, again
  2011-02-21 20:53 ` Joseph S. Myers
@ 2011-02-22  7:08   ` Guillem Jover
  2011-02-22 10:05     ` Mikael Pettersson
  0 siblings, 1 reply; 7+ messages in thread
From: Guillem Jover @ 2011-02-22  7:08 UTC (permalink / raw)
  To: Joseph S. Myers; +Cc: gcc

[-- Attachment #1: Type: text/plain, Size: 795 bytes --]

On Mon, 2011-02-21 at 17:59:06 +0000, Joseph S. Myers wrote:
> On Mon, 21 Feb 2011, Guillem Jover wrote:
> > if you'd consider accepting something ressembling the attached patch
> 
> A pre-existing condition, but in general where the code you're changing 
> hardcodes "gnu" that's wrong - arm*-*-linux-uclibceabi is also meant to be 
> valid.  So if you allow a suffix here, the general form to accept 
> consistently would be arm*-*-linux-*eabi*.

Ok, so something like the attached then (again completely untested)?

I've changed the ada part to just match on arm% linux% in the same way
the other targets do, as there didn't seem anything GNU EABI specific
in commit 8f0372dd2b828c0a0ee05dee4496a021da9cee40 (r155808).

And should probably not be touching the uclinux match.

thanks,
guillem

[-- Attachment #2: gcc-arm-eabi-matches.patch --]
[-- Type: text/x-diff, Size: 6368 bytes --]

diff --git a/configure b/configure
index 501c6ff..43ff04f 100755
--- a/configure
+++ b/configure
@@ -3236,7 +3236,7 @@ case "${target}" in
     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
     libgloss_dir=arm
     ;;
-  arm*-*-linux-gnueabi)
+  arm*-*-linux-*eabi*)
     noconfigdirs="$noconfigdirs target-qthreads"
     case ${with_newlib} in
       no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
diff --git a/configure.ac b/configure.ac
index 9121d65..e1a42e0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -682,7 +682,7 @@ case "${target}" in
     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
     libgloss_dir=arm
     ;;
-  arm*-*-linux-gnueabi)
+  arm*-*-linux-*eabi*)
     noconfigdirs="$noconfigdirs target-qthreads"
     case ${with_newlib} in
       no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in
index b64ba55..cbe6b70 100644
--- a/gcc/ada/gcc-interface/Makefile.in
+++ b/gcc/ada/gcc-interface/Makefile.in
@@ -1841,7 +1841,7 @@ ifeq ($(strip $(filter-out powerpc% linux%,$(arch) $(osys))),)
   LIBRARY_VERSION := $(LIB_VERSION)
 endif
 
-ifeq ($(strip $(filter-out arm% linux-gnueabi,$(arch) $(osys)-$(word 4,$(targ)))),)
+ifeq ($(strip $(filter-out arm% linux%,$(arch) $(osys))),)
   LIBGNAT_TARGET_PAIRS = \
   a-intnam.ads<a-intnam-linux.ads \
   s-inmaop.adb<s-inmaop-posix.adb \
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 54b822e..1a47343 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -820,13 +820,13 @@ arm*-*-linux*)			# ARM GNU/Linux with ELF
 	esac
 	tmake_file="${tmake_file} t-linux arm/t-arm"
 	case ${target} in
-	arm*-*-linux-*eabi)
+	arm*-*-linux-*eabi*)
 	    tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
 	    tm_file="$tm_file ../../libgcc/config/arm/bpabi-lib.h"
 	    tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"
 	    # Define multilib configuration for arm-linux-androideabi.
 	    case ${target} in
-	    *-androideabi)
+	    *-androideabi*)
 		tmake_file="$tmake_file arm/t-linux-androideabi"
 		;;
 	    esac
@@ -848,7 +848,7 @@ arm*-*-uclinux*)		# ARM ucLinux
 	tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
 	tmake_file="arm/t-arm arm/t-arm-elf"
 	case ${target} in
-	arm*-*-uclinux*eabi)
+	arm*-*-uclinux*eabi*)
 	    tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h"
 	    tm_file="$tm_file ../../libgcc/config/arm/bpabi-lib.h"
 	    tmake_file="$tmake_file arm/t-bpabi"
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 02cb7ac..885c0e0 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -3219,7 +3219,7 @@ proc check_effective_target_sync_int_long { } {
 	     || [istarget i?86-*-*]
 	     || [istarget x86_64-*-*]
 	     || [istarget alpha*-*-*] 
-	     || [istarget arm*-*-linux-gnueabi] 
+	     || [istarget arm*-*-linux-*eabi*]
 	     || [istarget bfin*-*linux*]
 	     || [istarget hppa*-*linux*]
 	     || [istarget s390*-*-*] 
@@ -3250,7 +3250,7 @@ proc check_effective_target_sync_char_short { } {
 	     || [istarget i?86-*-*]
 	     || [istarget x86_64-*-*]
 	     || [istarget alpha*-*-*] 
-	     || [istarget arm*-*-linux-gnueabi] 
+	     || [istarget arm*-*-linux-*eabi*]
 	     || [istarget hppa*-*linux*]
 	     || [istarget s390*-*-*] 
 	     || [istarget powerpc*-*-*]
diff --git a/libjava/configure b/libjava/configure
index f79e53b..47e3f23 100755
--- a/libjava/configure
+++ b/libjava/configure
@@ -20527,7 +20527,7 @@ case "${host}" in
     # on Darwin -single_module speeds up loading of the dynamic libraries.
     extra_ldflags_libjava=-Wl,-single_module
     ;;
-arm*linux*eabi)
+arm*-*-linux-*eabi*)
     # Some of the ARM unwinder code is actually in libstdc++.  We
     # could in principle replicate it in libgcj, but it's better to
     # have a dependency on libstdc++.
diff --git a/libjava/configure.ac b/libjava/configure.ac
index 8187eec..b59abb3 100644
--- a/libjava/configure.ac
+++ b/libjava/configure.ac
@@ -919,7 +919,7 @@ case "${host}" in
     # on Darwin -single_module speeds up loading of the dynamic libraries.
     extra_ldflags_libjava=-Wl,-single_module
     ;;
-arm*linux*eabi)
+arm*-*-linux-*eabi*)
     # Some of the ARM unwinder code is actually in libstdc++.  We
     # could in principle replicate it in libgcj, but it's better to
     # have a dependency on libstdc++.
diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host
index e29404c..a2e58a9 100644
--- a/libstdc++-v3/configure.host
+++ b/libstdc++-v3/configure.host
@@ -322,7 +322,7 @@ case "${host}" in
         fi
     esac
     case "${host}" in
-      arm*-*-linux-*eabi)
+      arm*-*-linux-*eabi*)
 	port_specific_symbol_files="\$(srcdir)/../config/os/gnu-linux/arm-eabi-extra.ver"
 	;;
     esac
diff --git a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
index cb40b7b..6147d66 100644
--- a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
+++ b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
@@ -1,5 +1,5 @@
 // { dg-options "-std=gnu++0x -funsigned-char -fshort-enums" }
-// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } }
+// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux-*eabi* } }
 
 // 2007-05-03  Benjamin Kosnik  <bkoz@redhat.com>
 //
diff --git a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
index d71c012..1086a18 100644
--- a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
+++ b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
@@ -1,5 +1,5 @@
 // { dg-options "-std=gnu++0x -funsigned-char -fshort-enums" }
-// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } }
+// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux-*eabi* } }
 
 // 2007-05-03  Benjamin Kosnik  <bkoz@redhat.com>
 //

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Triplet for ARM Linux HardFP ABI, again
  2011-02-22  7:08   ` Guillem Jover
@ 2011-02-22 10:05     ` Mikael Pettersson
  2011-03-01  0:13       ` Steve Langasek
  0 siblings, 1 reply; 7+ messages in thread
From: Mikael Pettersson @ 2011-02-22 10:05 UTC (permalink / raw)
  To: Guillem Jover; +Cc: Joseph S. Myers, gcc

Guillem Jover writes:
 > On Mon, 2011-02-21 at 17:59:06 +0000, Joseph S. Myers wrote:
 > > On Mon, 21 Feb 2011, Guillem Jover wrote:
 > > > if you'd consider accepting something ressembling the attached patch
 > > 
 > > A pre-existing condition, but in general where the code you're changing 
 > > hardcodes "gnu" that's wrong - arm*-*-linux-uclibceabi is also meant to be 
 > > valid.  So if you allow a suffix here, the general form to accept 
 > > consistently would be arm*-*-linux-*eabi*.
 > 
 > Ok, so something like the attached then (again completely untested)?
 > 
 > I've changed the ada part to just match on arm% linux% in the same way
 > the other targets do, as there didn't seem anything GNU EABI specific
 > in commit 8f0372dd2b828c0a0ee05dee4496a021da9cee40 (r155808).

Incorrect, the ARM Ada support (which I contributed) is emphatically
only for linux-gnueabi.  Ada on OABI is known to have non-trivial
problems (or did last time I bootstrapped it before gcc-4.4), so that
combination is unsupported.  Besides, OABI is obsolete.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Triplet for ARM Linux HardFP ABI, again
  2011-02-22 10:05     ` Mikael Pettersson
@ 2011-03-01  0:13       ` Steve Langasek
  2011-03-01  4:13         ` Guillem Jover
  0 siblings, 1 reply; 7+ messages in thread
From: Steve Langasek @ 2011-03-01  0:13 UTC (permalink / raw)
  To: gcc; +Cc: Guillem Jover, Joseph S. Myers, Mikael Pettersson

[-- Attachment #1: Type: text/plain, Size: 7007 bytes --]

Here is an amended patch that handles Ada as EABI-only on ARM.

Are there any other comments on the appropriateness of this globbing change?

Thanks,
-- 
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
Ubuntu Developer                                    http://www.debian.org/
slangasek@ubuntu.com                                     vorlon@debian.org

diff --git a/configure b/configure
index 501c6ff..43ff04f 100755
--- a/configure
+++ b/configure
@@ -3236,7 +3236,7 @@ case "${target}" in
     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
     libgloss_dir=arm
     ;;
-  arm*-*-linux-gnueabi)
+  arm*-*-linux-*eabi*)
     noconfigdirs="$noconfigdirs target-qthreads"
     case ${with_newlib} in
       no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
diff --git a/configure.ac b/configure.ac
index 9121d65..e1a42e0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -682,7 +682,7 @@ case "${target}" in
     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
     libgloss_dir=arm
     ;;
-  arm*-*-linux-gnueabi)
+  arm*-*-linux-*eabi*)
     noconfigdirs="$noconfigdirs target-qthreads"
     case ${with_newlib} in
       no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in
index b64ba55..7559efb 100644
--- a/gcc/ada/gcc-interface/Makefile.in
+++ b/gcc/ada/gcc-interface/Makefile.in
@@ -1841,7 +1841,7 @@ ifeq ($(strip $(filter-out powerpc% linux%,$(arch) $(osys))),)
   LIBRARY_VERSION := $(LIB_VERSION)
 endif
 
-ifeq ($(strip $(filter-out arm% linux-gnueabi,$(arch) $(osys)-$(word 4,$(targ)))),)
+ifeq ($(strip $(filter-out arm% linux-%eabi%,$(arch) $(osys))),)
   LIBGNAT_TARGET_PAIRS = \
   a-intnam.ads<a-intnam-linux.ads \
   s-inmaop.adb<s-inmaop-posix.adb \
diff --git a/gcc/config.gcc b/gcc/config.gcc
index d1baea0..e748188 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -822,13 +822,13 @@ arm*-*-linux*)			# ARM GNU/Linux with ELF
 	esac
 	tmake_file="${tmake_file} t-linux arm/t-arm"
 	case ${target} in
-	arm*-*-linux-*eabi)
+	arm*-*-linux-*eabi*)
 	    tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
 	    tm_file="$tm_file ../../libgcc/config/arm/bpabi-lib.h"
 	    tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"
 	    # Define multilib configuration for arm-linux-androideabi.
 	    case ${target} in
-	    *-androideabi)
+	    *-androideabi*)
 		tmake_file="$tmake_file arm/t-linux-androideabi"
 		;;
 	    esac
@@ -850,7 +850,7 @@ arm*-*-uclinux*)		# ARM ucLinux
 	tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
 	tmake_file="arm/t-arm arm/t-arm-elf"
 	case ${target} in
-	arm*-*-uclinux*eabi)
+	arm*-*-uclinux*eabi*)
 	    tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h"
 	    tm_file="$tm_file ../../libgcc/config/arm/bpabi-lib.h"
 	    tmake_file="$tmake_file arm/t-bpabi"
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 36cab54..81742a1 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -3235,7 +3235,7 @@ proc check_effective_target_sync_int_long { } {
 	     || [istarget i?86-*-*]
 	     || [istarget x86_64-*-*]
 	     || [istarget alpha*-*-*] 
-	     || [istarget arm*-*-linux-gnueabi] 
+	     || [istarget arm*-*-linux-*eabi*] 
 	     || [istarget bfin*-*linux*]
 	     || [istarget hppa*-*linux*]
 	     || [istarget s390*-*-*] 
@@ -3266,7 +3266,7 @@ proc check_effective_target_sync_char_short { } {
 	     || [istarget i?86-*-*]
 	     || [istarget x86_64-*-*]
 	     || [istarget alpha*-*-*] 
-	     || [istarget arm*-*-linux-gnueabi] 
+	     || [istarget arm*-*-linux-*eabi*] 
 	     || [istarget hppa*-*linux*]
 	     || [istarget s390*-*-*] 
 	     || [istarget powerpc*-*-*]
diff --git a/libjava/configure b/libjava/configure
index f79e53b..47e3f23 100755
--- a/libjava/configure
+++ b/libjava/configure
@@ -20527,7 +20527,7 @@ case "${host}" in
     # on Darwin -single_module speeds up loading of the dynamic libraries.
     extra_ldflags_libjava=-Wl,-single_module
     ;;
-arm*linux*eabi)
+arm*-*-linux-*eabi*)
     # Some of the ARM unwinder code is actually in libstdc++.  We
     # could in principle replicate it in libgcj, but it's better to
     # have a dependency on libstdc++.
diff --git a/libjava/configure.ac b/libjava/configure.ac
index 8187eec..b59abb3 100644
--- a/libjava/configure.ac
+++ b/libjava/configure.ac
@@ -919,7 +919,7 @@ case "${host}" in
     # on Darwin -single_module speeds up loading of the dynamic libraries.
     extra_ldflags_libjava=-Wl,-single_module
     ;;
-arm*linux*eabi)
+arm*-*-linux-*eabi*)
     # Some of the ARM unwinder code is actually in libstdc++.  We
     # could in principle replicate it in libgcj, but it's better to
     # have a dependency on libstdc++.
diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host
index e29404c..a2e58a9 100644
--- a/libstdc++-v3/configure.host
+++ b/libstdc++-v3/configure.host
@@ -322,7 +322,7 @@ case "${host}" in
         fi
     esac
     case "${host}" in
-      arm*-*-linux-*eabi)
+      arm*-*-linux-*eabi*)
 	port_specific_symbol_files="\$(srcdir)/../config/os/gnu-linux/arm-eabi-extra.ver"
 	;;
     esac
diff --git a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
index cb40b7b..6147d66 100644
--- a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
+++ b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
@@ -1,5 +1,5 @@
 // { dg-options "-std=gnu++0x -funsigned-char -fshort-enums" }
-// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } }
+// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux-*eabi* } }
 
 // 2007-05-03  Benjamin Kosnik  <bkoz@redhat.com>
 //
diff --git a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
index d71c012..1086a18 100644
--- a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
+++ b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
@@ -1,5 +1,5 @@
 // { dg-options "-std=gnu++0x -funsigned-char -fshort-enums" }
-// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } }
+// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux-*eabi* } }
 
 // 2007-05-03  Benjamin Kosnik  <bkoz@redhat.com>
 //
-- 
1.7.1


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Triplet for ARM Linux HardFP ABI, again
  2011-03-01  0:13       ` Steve Langasek
@ 2011-03-01  4:13         ` Guillem Jover
  0 siblings, 0 replies; 7+ messages in thread
From: Guillem Jover @ 2011-03-01  4:13 UTC (permalink / raw)
  To: Steve Langasek; +Cc: gcc, Joseph S. Myers, Mikael Pettersson

Hi!

On Mon, 2011-02-28 at 16:12:32 -0800, Steve Langasek wrote:
> Here is an amended patch that handles Ada as EABI-only on ARM.

> diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in
> index b64ba55..7559efb 100644
> --- a/gcc/ada/gcc-interface/Makefile.in
> +++ b/gcc/ada/gcc-interface/Makefile.in
> @@ -1841,7 +1841,7 @@ ifeq ($(strip $(filter-out powerpc% linux%,$(arch) $(osys))),)
>    LIBRARY_VERSION := $(LIB_VERSION)
>  endif
>  
> -ifeq ($(strip $(filter-out arm% linux-gnueabi,$(arch) $(osys)-$(word 4,$(targ)))),)
> +ifeq ($(strip $(filter-out arm% linux-%eabi%,$(arch) $(osys))),)
>    LIBGNAT_TARGET_PAIRS = \
>    a-intnam.ads<a-intnam-linux.ads \
>    s-inmaop.adb<s-inmaop-posix.adb \

Actually this should not work, %-patterns only recognize one '%'. That's
one of the reasons I just switched to linux%, it was the easy way out. :)

thanks,
guillem

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Triplet for ARM Linux HardFP ABI, again
  2011-02-21 15:02 Triplet for ARM Linux HardFP ABI, again Guillem Jover
  2011-02-21 20:53 ` Joseph S. Myers
@ 2011-03-01 15:27 ` Andrew Stubbs
  1 sibling, 0 replies; 7+ messages in thread
From: Andrew Stubbs @ 2011-03-01 15:27 UTC (permalink / raw)
  To: Guillem Jover; +Cc: gcc

On 21/02/11 10:12, Guillem Jover wrote:
> This was already discussed in this list some time ago [0]. But it came
> up again when restarting the discussion for the proposed new armhf port
> for Debian.
>
>    [0]<http://gcc.gnu.org/ml/gcc/2010-07/msg00179.html>
>
> My arguments for why a distinct triplet is needed can be found in [1],
> it's a big long though. Most of the points there revolve around the
> fact that we rely on the toolchains as configured by_default_  to
> produce the expected output targetting a concrete architecture, it
> also has implications for the file system paths.
>
>    [1]<http://lists.debian.org/debian-dpkg/2011/02/msg00039.html>
>
> It seems from reading the past discussion on this list that the main
> objection was that the triplet should not be used to decide what
> floating point ABI to use in gcc. No problem with that!

Up front, let me say I disagree with the previous finding that the 
triplet isn't the right place for this kind of thing. It's clear to me 
that there's plenty of prior art here, and it would work for us very 
nicely, thank you very much. That said, there are down-sides to 
target-triplets (not least that once you've chosen one, you find 
yourself stuck with it for backward compatibility, even after it makes 
no sense any more), and many people seem to believe it would be better 
if they had never been invented, so .....

I fail to see how abusing the OS/ABI field is any better than abusing 
the vendor field?

The patch you posted is surely just the tip of the iceberg - there are 
thousands of packages in Debian, and any one of them might need 
adjustment to cope with this change.

When I proposed a new triplet before, in the thread you referenced 
above, I proposed having an 'official' name that everyone would agree 
on. That would have been disruptive. Your triplet would be unofficial, 
so I would say it would be hard to justify all that disruption. In the 
worst case, third parties would start to use your unofficial triplet 
inconditionally, and would need fixing up to work with anything that is 
not Debian.

In July's thread, it was decided (sort of) that the compiler should not 
choose its (micro-)configuration based on the triplet. I didn't really 
agree with that, but there it is. You've decided to stick with that, and 
have the triplet influence only your build-system. Surely that's exactly 
what the 'vendor' field is for? It seems like (it has to be) a 
vendor-specific configuration to me.

Adjusting the vendor field should not break any of those thousands of 
packages (although, no doubt there'll be the odd one or two). It will 
give you your differentiated pathnames. It will tell your build-system 
what to do. Why do it the hard way if there is no advantage?

Andrew

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-03-01 15:27 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-21 15:02 Triplet for ARM Linux HardFP ABI, again Guillem Jover
2011-02-21 20:53 ` Joseph S. Myers
2011-02-22  7:08   ` Guillem Jover
2011-02-22 10:05     ` Mikael Pettersson
2011-03-01  0:13       ` Steve Langasek
2011-03-01  4:13         ` Guillem Jover
2011-03-01 15:27 ` Andrew Stubbs

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).