Triplet for ARM Linux HardFP ABI, again

2011-02-21 Thread Guillem Jover
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] 

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] 

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
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
 //
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  
 //


Re: Triplet for ARM Linux HardFP ABI, again

2011-02-21 Thread Guillem Jover
On Mon, 2011-02-21 at 17:59:06 +, 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
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
 //
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  
 //


Re: Triplet for ARM Linux HardFP ABI, again

2011-02-28 Thread Guillem Jover
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.adss-inmaop.adb