[binutils-gdb] MIPS: Use N64 by default for mips*64*-*-linux-gnuabi64

YunQiang Su syq@sourceware.org
Fri Jul 12 10:19:59 GMT 2024


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=d49f2dd78b08efa4e1ee51f5df5058846c2eb4fa

commit d49f2dd78b08efa4e1ee51f5df5058846c2eb4fa
Author: YunQiang Su <syq@gcc.gnu.org>
Date:   Fri Jul 12 18:18:59 2024 +0800

    MIPS: Use N64 by default for mips*64*-*-linux-gnuabi64
    
    the ABI section of the triple explicitly asks for N64,
    and in fact GCC also does so.
    
    It can fix the test failure:
      FAIL: libdep test: did not get expected output from the linker
    with Debian's mipsisa64r6el-linux-gnuabi64 toolchain.

Diff:
---
 gas/configure                   | 2 +-
 gas/configure.ac                | 2 +-
 ld/configure.tgt                | 4 ++--
 ld/testsuite/config/default.exp | 9 +++++++--
 4 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/gas/configure b/gas/configure
index 0cebc4e0fa9..4a6d4721cc4 100755
--- a/gas/configure
+++ b/gas/configure
@@ -12280,7 +12280,7 @@ _ACEOF
 	esac
 	# Decide which ABI to target by default.
 	case ${target} in
-	  mips64*-openbsd* | mips64*-linux-gnuabi64)
+	  mips64*-openbsd* | mips*64*-linux-gnuabi64)
 	    mips_default_abi=N64_ABI
 	    ;;
 	  mips64*-linux* | mips-sgi-irix6* | mips64*-freebsd* \
diff --git a/gas/configure.ac b/gas/configure.ac
index 6b978aae3f7..20939b660c2 100644
--- a/gas/configure.ac
+++ b/gas/configure.ac
@@ -399,7 +399,7 @@ changequote([,])dnl
 	esac
 	# Decide which ABI to target by default.
 	case ${target} in
-	  mips64*-openbsd* | mips64*-linux-gnuabi64)
+	  mips64*-openbsd* | mips*64*-linux-gnuabi64)
 	    mips_default_abi=N64_ABI
 	    ;;
 	  mips64*-linux* | mips-sgi-irix6* | mips64*-freebsd* \
diff --git a/ld/configure.tgt b/ld/configure.tgt
index f937f78b876..44079ae2792 100644
--- a/ld/configure.tgt
+++ b/ld/configure.tgt
@@ -592,7 +592,7 @@ mips*-*-vxworks*)	targ_emul=elf32ebmipvxworks
 			;;
 mips*-*-windiss)	targ_emul=elf32mipswindiss
 			;;
-mips64*el-*-linux-gnuabi64)
+mips*64*el-*-linux-gnuabi64)
 			targ_emul=elf64ltsmip
 			targ_extra_emuls="elf64btsmip elf32ltsmipn32 elf32btsmipn32 elf32ltsmip elf32btsmip"
 			targ_extra_libpath=$targ_extra_emuls
@@ -601,7 +601,7 @@ mips64*el-*-linux-*)	targ_emul=elf32ltsmipn32
 			targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip"
 			targ_extra_libpath=$targ_extra_emuls
 			;;
-mips64*-*-linux-gnuabi64)
+mips*64*-*-linux-gnuabi64)
 			targ_emul=elf64btsmip
 			targ_extra_emuls="elf64ltsmip elf32btsmipn32 elf32ltsmipn32 elf32btsmip elf32ltsmip"
 			targ_extra_libpath=$targ_extra_emuls
diff --git a/ld/testsuite/config/default.exp b/ld/testsuite/config/default.exp
index 8374920c775..d60f6290083 100644
--- a/ld/testsuite/config/default.exp
+++ b/ld/testsuite/config/default.exp
@@ -177,11 +177,16 @@ if {! [info exists env(CCC_OVERRIDE_OPTIONS)]} {
 # installed, but to the O32 ABI in the build tree, because of some
 # specs-file hacks.  Make sure we use an ABI that is compatible with
 # the one we expect.
-if {[istarget mips64*-*-linux*] &&
+# mips*64*-*linux-gnuabi64 compiler defaults to N64 ABI.
+if {([istarget mips64*-*-linux*] || [istarget mips*64*-*-linux-gnuabi64]) &&
     (![board_info [target_info name] exists multilib_flags] ||
      ![string match "*-mabi" [board_info [target_info name] multilib_flags]])
    } {
-    append gcc_B_opt " -mabi=n32"
+    if { [istarget *-*-gnuabi64] } {
+      append gcc_B_opt " -mabi=64"
+    } else {
+      append gcc_B_opt " -mabi=n32"
+    }
 }
 
 if { [istarget rx-*-*] } {


More information about the Binutils-cvs mailing list