This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] MIPS/LD/testsuite: Correct comm-data.exp test ABI/emul/endian arrangement


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

commit 86b24e15c45bfe5085ed88280e1a5479120edce6
Author: Maciej W. Rozycki <macro@mips.com>
Date:   Mon Jan 29 12:10:19 2018 -0800

    MIPS/LD/testsuite: Correct comm-data.exp test ABI/emul/endian arrangement
    
    Update the ld-mips-elf/comm-data.exp test script to correctly select
    emulations for targets using non-traditional MIPS emulation and also
    correctly select ABIs for targets that do not support all of them, and
    finally use the default endianness selection to benefit targets which
    support only one, complementing commit 05a5feafdd38 ("Rewrite
    check_shared_lib_support") and removing numerous test failures such as:
    
    FAIL: MIPS o32/copyreloc common symbol override test (auxiliary shared object build)
    FAIL: MIPS o32/copyreloc common symbol override test
    FAIL: MIPS o32/nocopyreloc common symbol override test (auxiliary shared objectbuild)
    FAIL: MIPS o32/nocopyreloc common symbol override test
    FAIL: MIPS n32/copyreloc common symbol override test (auxiliary shared object build)
    FAIL: MIPS n32/copyreloc common symbol override test
    FAIL: MIPS n32/nocopyreloc common symbol override test (auxiliary shared objectbuild)
    FAIL: MIPS n32/nocopyreloc common symbol override test
    
    due to:
    
    .../ld/ld-new: unrecognised emulation mode: elf32btsmip
    Supported emulations: elf64btsmip elf64ltsmip
    
    or:
    
    .../ld/ld-new: unrecognised emulation mode: elf32btsmip
    Supported emulations: elf32ebmip
    
    or:
    
    .../ld/ld-new: unrecognised emulation mode: elf32btsmip
    Supported emulations: elf32l4300
    
    etc., and:
    
    ERROR: -n32 -march=mips3 -EB -call_shared .../ld/testsuite/ld-mips-elf/../ld-elf/comm-data1.s: assembly failed
    UNRESOLVED: MIPS n32/copyreloc common symbol override test (auxiliary shared object build)
    ERROR: -n32 -march=mips3 -EB -call_nonpic .../ld/testsuite/ld-mips-elf/../ld-elf/comm-data2.s: assembly failed
    UNRESOLVED: MIPS n32/copyreloc common symbol override test
    ERROR: -n32 -march=mips3 -EB -call_shared .../ld/testsuite/ld-mips-elf/../ld-elf/comm-data1.s: assembly failed
    UNRESOLVED: MIPS n32/nocopyreloc common symbol override test (auxiliary shared object build)
    ERROR: -n32 -march=mips3 -EB -call_nonpic .../ld/testsuite/ld-mips-elf/../ld-elf/comm-data2.s: assembly failed
    UNRESOLVED: MIPS n32/nocopyreloc common symbol override test
    
    due to:
    
    Assembler messages:
    Fatal error: selected target format 'elf32-nbigmips' unknown
    
    and:
    
    ERROR: -64 -march=mips3 -EB -call_shared .../ld/testsuite/ld-mips-elf/../ld-elf/comm-data1.s: assembly failed
    UNRESOLVED: MIPS n64/copyreloc common symbol override test (auxiliary shared object build)
    ERROR: -64 -march=mips3 -EB --defsym ELF64=1 -call_nonpic .../ld/testsuite/ld-mips-elf/../ld-elf/comm-data2.s:assembly failed
    UNRESOLVED: MIPS n64/copyreloc common symbol override test
    ERROR: -64 -march=mips3 -EB -call_shared .../ld/testsuite/ld-mips-elf/../ld-elf/comm-data1.s: assembly failed
    UNRESOLVED: MIPS n64/nocopyreloc common symbol override test (auxiliary shared object build)
    ERROR: -64 -march=mips3 -EB --defsym ELF64=1 -call_nonpic .../ld/testsuite/ld-mips-elf/../ld-elf/comm-data2.s:assembly failed
    UNRESOLVED: MIPS n64/nocopyreloc common symbol override test
    
    due to:
    
    Assembler messages:
    Fatal error: no compiled in support for 64 bit object file format
    
    	ld/
    	* testsuite/ld-mips-elf/comm-data.exp: Correct support for
    	targets using non-traditional MIPS emulation or having a limited
    	selection of ABIs available.  Don't force big endianness, use
    	defaults.

Diff:
---
 ld/ChangeLog                           |  7 +++
 ld/testsuite/ld-mips-elf/comm-data.exp | 84 +++++++++++++++++++++++++++++++++-
 2 files changed, 89 insertions(+), 2 deletions(-)

diff --git a/ld/ChangeLog b/ld/ChangeLog
index fe0e8ff..d9e0c4f 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,10 @@
+2018-01-29  Maciej W. Rozycki  <macro@mips.com>
+
+	* testsuite/ld-mips-elf/comm-data.exp: Correct support for
+	targets using non-traditional MIPS emulation or having a limited
+	selection of ABIs available.  Don't force big endianness, use
+	defaults.
+
 2018-01-29  H.J. Lu  <hongjiu.lu@intel.com>
 
 	PR ld/22732
diff --git a/ld/testsuite/ld-mips-elf/comm-data.exp b/ld/testsuite/ld-mips-elf/comm-data.exp
index 7926f60..28ee3b8 100644
--- a/ld/testsuite/ld-mips-elf/comm-data.exp
+++ b/ld/testsuite/ld-mips-elf/comm-data.exp
@@ -31,13 +31,84 @@ if { ![istarget mips*-*-*]
     return
 }
 
+set has_o32abi [expr ![istarget *-*-openbsd*] \
+		     && ![istarget mips64*-ps2-elf*]]
+set has_n32abi [expr [istarget *-img-elf*] \
+		     || [istarget *-mti-elf*] \
+		     || [istarget *-ps2-elf*] \
+		     || [istarget *-sde-elf*] \
+		     || [istarget *-*-freebsd*] \
+		     || [istarget *-*-irix6*] \
+		     || [istarget *-*-linux*]]
+set has_n64abi [expr [istarget *-*-freebsd*] \
+		     || [istarget *-*-irix6*] \
+		     || [istarget *-*-linux*] \
+		     || [istarget *-*-netbsd*] \
+		     || [istarget *-*-openbsd*]]
+
+if {[istarget *-img-elf*] \
+     || [istarget *-mti-elf*] \
+     || [istarget *-sde-elf*] \
+     || [istarget *-*-netbsd*] \
+     || [istarget *-*-linux*] \
+     || [istarget *-*-openbsd*] \
+     || [istarget *-*-sysv4*] } {
+    if [istarget *el-*-*] {
+	set abi_ldemul(o32) elf32ltsmip
+	set abi_ldemul(n32) elf32ltsmipn32
+	set abi_ldemul(n64) elf64ltsmip
+    } else {
+	set abi_ldemul(o32) elf32btsmip
+	set abi_ldemul(n32) elf32btsmipn32
+	set abi_ldemul(n64) elf64btsmip
+    }
+} elseif { [istarget *-*-freebsd*] } {
+    if [istarget *el-*-*] {
+	set abi_ldemul(o32) elf32ltsmip_fbsd
+	set abi_ldemul(n32) elf32ltsmipn32_fbsd
+	set abi_ldemul(n64) elf64ltsmip_fbsd
+    } else {
+	set abi_ldemul(o32) elf32btsmip_fbsd
+	set abi_ldemul(n32) elf32btsmipn32_fbsd
+	set abi_ldemul(n64) elf64btsmip_fbsd
+    }
+} elseif { [istarget *vr4100*-*-elf*] \
+	   || [istarget *vr4300*-*-elf*] \
+	   || [istarget *vr5000*-*-elf*] } {
+    if [istarget *el-*-*] {
+	set abi_ldemul(o32) elf32l4300
+    } else {
+	set abi_ldemul(o32) elf32b4300
+    }
+} elseif { [istarget *-ps2-elf*] } {
+    set abi_ldemul(o32) elf32lr5900
+    set abi_ldemul(n32) elf32lr5900n32
+} elseif { [istarget *-*-elf*] \
+	   || [istarget *-*-rtems*] } {
+    if [istarget *el-*-*] {
+	set abi_ldemul(o32) elf32elmip
+    } else {
+	set abi_ldemul(o32) elf32ebmip
+    }
+} else {
+    if [istarget *el-*-*] {
+	set abi_ldemul(o32) elf32lsmip
+	set abi_ldemul(n32) elf32lmipn32
+	set abi_ldemul(n64) elf64lmip
+    } else {
+	set abi_ldemul(o32) elf32bsmip
+	set abi_ldemul(n32) elf32bmipn32
+	set abi_ldemul(n64) elf64bmip
+    }
+}
+
 proc mips_comm_data_test { abi flag emul reloc } {
 
     set testname "MIPS $abi/$reloc common symbol override test"
 
     # There's no "-z copyreloc" option, deal with it.
     set ZFLAG [string map [list copyreloc "" nocopyreloc "-z $reloc"] $reloc]
-    set AFLAGS "$flag -EB"
+    set AFLAGS "$flag"
     set LDFLAGS "-m$emul"
 
     # Define a global symbol.
@@ -81,7 +152,16 @@ proc mips_comm_data_test { abi flag emul reloc } {
 # For targets that default to a specific ISA (instead of "from-abi"),
 # the 64-bit -march option is required to override it, like for
 # "mipsisa32r2el-*-*".
-set abis { o32 -32 elf32btsmip n32 "-n32 -march=mips3" elf32btsmipn32 n64 "-64 -march=mips3" elf64btsmip }
+set abis ""
+if $has_o32abi {
+    lappend abis o32 -32 $abi_ldemul(o32)
+}
+if $has_n32abi {
+    lappend abis n32 "-n32 -march=mips3" $abi_ldemul(n32)
+}
+if $has_n64abi {
+    lappend abis n64 "-64 -march=mips3" $abi_ldemul(n64)
+}
 set relocs { copyreloc nocopyreloc }
 foreach { abi flag emul } $abis {
     foreach reloc $relocs {


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]