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.
 # 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 {