diff options
-rw-r--r-- | ld/ChangeLog | 7 | ||||
-rw-r--r-- | 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 { |