binutils archive tests
authorAlan Modra <amodra@gmail.com>
Tue, 2 Jun 2020 05:30:14 +0000 (15:00 +0930)
committerAlan Modra <amodra@gmail.com>
Tue, 2 Jun 2020 05:30:14 +0000 (15:00 +0930)
There are a number of targets that don't support thin archives (*),
and vms doesn't even support file name extensions other than .obj for
archives containing object files.  This patch adjusts the testsuite
to cater for the vms restriction, and reenables testing for non-ELF
alpha targets.  That adds a few alpha-dec-vms fails and one
alpha-linuxecoff fail but testsuite fails on those targets are nothing
new.

(*) It might seem like they do if binutils is built with
--enable-plugins but the plugin archive support is broken, causing the
wrong type of archives to be created by ar for those targets.

* testsuite/binutils-all/ar.exp (obj): Set up object file name
extension.  Use throughout.  Don't completely exclude non-ELF
alpha targets.  Run long_filenames test for tic30.  Exclude thin
archive tests for aix, ecoff and vms.
* estsuite/binutils-all/objdump.exp (obj): Set up object file name
extension.  Use throughout.  Don't exclude non-ELF alpha targets
from "bintest.a".

binutils/ChangeLog
binutils/testsuite/binutils-all/ar.exp
binutils/testsuite/binutils-all/objdump.exp

index 101255de2147ad151b6579f7bab99a9593207531..7eb900935fa7df981a84315baacfa5d383c4bc0d 100644 (file)
@@ -1,3 +1,13 @@
+2020-06-02  Alan Modra  <amodra@gmail.com>
+
+       * testsuite/binutils-all/ar.exp (obj): Set up object file name
+       extension.  Use throughout.  Don't completely exclude non-ELF
+       alpha targets.  Run long_filenames test for tic30.  Exclude thin
+       archive tests for aix, ecoff and vms.
+       * estsuite/binutils-all/objdump.exp (obj): Set up object file name
+       extension.  Use throughout.  Don't exclude non-ELF alpha targets
+       from "bintest.a".
+
 2020-05-28  Max Filippov  <jcmvbkbc@gmail.com>
 
        * MAINTAINERS (Xtensa): Add myself as maintainer.
index bf30b016c7b5ce495843c50a44bc5b9225665f3b..86827814d79e9ee185356dbc11fcc0f6db069cef 100644 (file)
@@ -26,8 +26,9 @@ if ![is_remote host] {
     }
 }
 
-if { [istarget "alpha-*-*"] && ![is_elf_format] } then {
-    return
+set obj o
+if { [istarget "*-*-vms"] } then {
+    set obj obj
 }
 
 # send_user "Version [binutil_version $AR]"
@@ -189,21 +190,22 @@ proc symbol_table { } {
     global NM
     global srcdir
     global subdir
+    global obj
 
     set testname "ar symbol table"
 
-    if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o] {
+    if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.${obj}] {
        unresolved $testname
        return
     }
 
     if [is_remote host] {
        set archive artest.a
-       set objfile [remote_download host tmpdir/bintest.o]
+       set objfile [remote_download host tmpdir/bintest.${obj}]
        remote_file host delete $archive
     } else {
        set archive tmpdir/artest.a
-       set objfile tmpdir/bintest.o
+       set objfile tmpdir/bintest.${obj}
     }
 
     remote_file build delete tmpdir/artest.a
@@ -215,12 +217,12 @@ proc symbol_table { } {
     }
 
     set got [binutils_run $NM "--print-armap $archive"]
-    if { ![string match "*text_symbol in bintest.o*" $got] \
-        || ![string match "*data_symbol in bintest.o*" $got] \
-        || ![string match "*common_symbol in bintest.o*" $got] \
-        || [string match "*static_text_symbol in bintest.o*" $got] \
-        || [string match "*static_data_symbol in bintest.o*" $got] \
-        || [string match "*external_symbol in bintest.o*" $got] } {
+    if { ![string match "*text_symbol in bintest.${obj}*" $got] \
+        || ![string match "*data_symbol in bintest.${obj}*" $got] \
+        || ![string match "*common_symbol in bintest.${obj}*" $got] \
+        || [string match "*static_text_symbol in bintest.${obj}*" $got] \
+        || [string match "*static_data_symbol in bintest.${obj}*" $got] \
+        || [string match "*external_symbol in bintest.${obj}*" $got] } {
        fail $testname
        return
     }
@@ -237,21 +239,22 @@ proc thin_archive { bfdtests } {
     global srcdir
     global subdir
     global base_dir
+    global obj
 
     set testname "ar thin archive"
 
-    if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o] {
+    if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.${obj}] {
        unresolved $testname
        return
     }
 
     if [is_remote host] {
        set archive artest.a
-       set objfile [remote_download host tmpdir/bintest.o]
+       set objfile [remote_download host tmpdir/bintest.${obj}]
        remote_file host delete $archive
     } else {
        set archive tmpdir/artest.a
-       set objfile tmpdir/bintest.o
+       set objfile tmpdir/bintest.${obj}
     }
 
     remote_file build delete tmpdir/artest.a
@@ -272,12 +275,12 @@ proc thin_archive { bfdtests } {
     }
 
     set got [binutils_run $NM "--print-armap $archive"]
-    if { ![string match "*text_symbol in *bintest.o*" $got] \
-        || ![string match "*data_symbol in *bintest.o*" $got] \
-        || ![string match "*common_symbol in *bintest.o*" $got] \
-        || [string match "*static_text_symbol in *bintest.o*" $got] \
-        || [string match "*static_data_symbol in *bintest.o*" $got] \
-        || [string match "*external_symbol in *bintest.o*" $got] } {
+    if { ![string match "*text_symbol in *bintest.${obj}*" $got] \
+        || ![string match "*data_symbol in *bintest.${obj}*" $got] \
+        || ![string match "*common_symbol in *bintest.${obj}*" $got] \
+        || [string match "*static_text_symbol in *bintest.${obj}*" $got] \
+        || [string match "*static_data_symbol in *bintest.${obj}*" $got] \
+        || [string match "*external_symbol in *bintest.${obj}*" $got] } {
        fail $testname
        return
     }
@@ -294,10 +297,11 @@ proc thin_archive_with_nested { bfdtests } {
     global srcdir
     global subdir
     global base_dir
+    global obj
 
     set testname "ar thin archive with nested archive"
 
-    if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o] {
+    if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.${obj}] {
        unresolved $testname
        return
     }
@@ -305,12 +309,12 @@ proc thin_archive_with_nested { bfdtests } {
     if [is_remote host] {
        set archive artest.a
        set archive2 artest2.a
-       set objfile [remote_download host tmpdir/bintest.o]
+       set objfile [remote_download host tmpdir/bintest.${obj}]
        remote_file host delete $archive
     } else {
        set archive tmpdir/artest.a
        set archive2 tmpdir/artest2.a
-       set objfile tmpdir/bintest.o
+       set objfile tmpdir/bintest.${obj}
     }
 
     remote_file build delete tmpdir/artest.a
@@ -346,12 +350,12 @@ proc thin_archive_with_nested { bfdtests } {
     }
 
     set got [binutils_run $NM "--print-armap $archive"]
-    if { ![string match "*text_symbol in *bintest.o*" $got] \
-        || ![string match "*data_symbol in *bintest.o*" $got] \
-        || ![string match "*common_symbol in *bintest.o*" $got] \
-        || [string match "*static_text_symbol in *bintest.o*" $got] \
-        || [string match "*static_data_symbol in *bintest.o*" $got] \
-        || [string match "*external_symbol in *bintest.o*" $got] } {
+    if { ![string match "*text_symbol in *bintest.${obj}*" $got] \
+        || ![string match "*data_symbol in *bintest.${obj}*" $got] \
+        || ![string match "*common_symbol in *bintest.${obj}*" $got] \
+        || [string match "*static_text_symbol in *bintest.${obj}*" $got] \
+        || [string match "*static_data_symbol in *bintest.${obj}*" $got] \
+        || [string match "*external_symbol in *bintest.${obj}*" $got] } {
        fail $testname
        return
     }
@@ -366,21 +370,22 @@ proc argument_parsing { } {
     global AS
     global srcdir
     global subdir
+    global obj
 
     set testname "ar argument parsing"
 
-    if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o] {
+    if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.${obj}] {
        unresolved $testname
        return
     }
 
     if [is_remote host] {
        set archive artest.a
-       set objfile [remote_download host tmpdir/bintest.o]
+       set objfile [remote_download host tmpdir/bintest.${obj}]
        remote_file host delete $archive
     } else {
        set archive tmpdir/artest.a
-       set objfile tmpdir/bintest.o
+       set objfile tmpdir/bintest.${obj}
     }
 
     remote_file build delete tmpdir/artest.a
@@ -402,21 +407,22 @@ proc deterministic_archive { } {
     global NM
     global srcdir
     global subdir
+    global obj
 
     set testname "ar deterministic archive"
 
-    if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o] {
+    if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.${obj}] {
        unresolved $testname
        return
     }
 
     if [is_remote host] {
        set archive artest.a
-       set objfile [remote_download host tmpdir/bintest.o]
+       set objfile [remote_download host tmpdir/bintest.${obj}]
        remote_file host delete $archive
     } else {
        set archive tmpdir/artest.a
-       set objfile tmpdir/bintest.o
+       set objfile tmpdir/bintest.${obj}
     }
 
     remote_file build delete tmpdir/artest.a
@@ -430,13 +436,13 @@ proc deterministic_archive { } {
     set got [binutils_run $AR "tv $archive"]
     # This only checks the file mode and uid/gid.  We can't easily match
     # date because it's printed with the user's timezone.
-    if ![string match "rw-r--r-- 0/0 *bintest.o*" $got] {
+    if ![string match "rw-r--r-- 0/0 *bintest.${obj}*" $got] {
        fail $testname
        return
     }
 
     set got [binutils_run $AR "tvO $archive"]
-    if ![string match "rw-r--r-- 0/0 *bintest.o 0x*" $got] {
+    if ![string match "rw-r--r-- 0/0 *bintest.${obj} 0x*" $got] {
        fail $testname
        return
     }
@@ -450,21 +456,22 @@ proc unique_symbol { } {
     global NM
     global srcdir
     global subdir
+    global obj
 
     set testname "ar unique symbol in archive"
 
-    if ![binutils_assemble $srcdir/$subdir/unique.s tmpdir/unique.o] {
+    if ![binutils_assemble $srcdir/$subdir/unique.s tmpdir/unique.${obj}] {
        unresolved $testname
        return
     }
 
     if [is_remote host] {
        set archive artest.a
-       set objfile [remote_download host tmpdir/unique.o]
+       set objfile [remote_download host tmpdir/unique.${obj}]
        remote_file host delete $archive
     } else {
        set archive tmpdir/artest.a
-       set objfile tmpdir/unique.o
+       set objfile tmpdir/unique.${obj}
     }
 
     remote_file build delete tmpdir/artest.a
@@ -476,7 +483,7 @@ proc unique_symbol { } {
     }
 
     set got [binutils_run $NM "--print-armap $archive"]
-    if ![string match "*foo in *unique.o*" $got] {
+    if ![string match "*foo in *unique.${obj}*" $got] {
        fail $testname
        return
     }
@@ -491,21 +498,22 @@ proc delete_an_element { } {
     global AS
     global srcdir
     global subdir
+    global obj
 
     set testname "ar deleting an element"
 
-    if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o] {
+    if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.${obj}] {
        unresolved $testname
        return
     }
 
     if [is_remote host] {
        set archive artest.a
-       set objfile [remote_download host tmpdir/bintest.o]
+       set objfile [remote_download host tmpdir/bintest.${obj}]
        remote_file host delete $archive
     } else {
        set archive tmpdir/artest.a
-       set objfile tmpdir/bintest.o
+       set objfile tmpdir/bintest.${obj}
     }
 
     remote_file build delete tmpdir/artest.a
@@ -532,21 +540,22 @@ proc move_an_element { } {
     global AS
     global srcdir
     global subdir
+    global obj
 
     set testname "ar moving an element"
 
-    if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o] {
+    if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.${obj}] {
        unresolved $testname
        return
     }
 
     if [is_remote host] {
        set archive artest.a
-       set objfile [remote_download host tmpdir/bintest.o]
+       set objfile [remote_download host tmpdir/bintest.${obj}]
        remote_file host delete $archive
     } else {
        set archive tmpdir/artest.a
-       set objfile tmpdir/bintest.o
+       set objfile tmpdir/bintest.${obj}
     }
 
     remote_file build delete tmpdir/artest.a
@@ -612,10 +621,11 @@ proc extract_an_element { } {
     global AS
     global srcdir
     global subdir
+    global obj
 
     set testname "ar extracting an element"
 
-    if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o] {
+    if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.${obj}] {
        unresolved $testname
        return
     }
@@ -623,10 +633,10 @@ proc extract_an_element { } {
     set archive artest.a
 
     if [is_remote host] {
-       set objfile [remote_download host tmpdir/bintest.o]
+       set objfile [remote_download host tmpdir/bintest.${obj}]
        remote_file host delete $archive
     } else {
-       set objfile tmpdir/bintest.o
+       set objfile tmpdir/bintest.${obj}
     }
 
     remote_file build delete $archive
@@ -654,6 +664,7 @@ proc many_files { } {
     global AS
     global srcdir
     global subdir
+    global obj
 
     set testname "ar many files"
 
@@ -673,7 +684,7 @@ proc many_files { } {
        puts $ofd " .long $i"
        close $ofd
 
-       set ofile "tmpdir/d-$i.o"
+       set ofile "tmpdir/d-$i.${obj}"
        if ![binutils_assemble $sfile $ofile] {
            unresolved $testname
            return
@@ -710,12 +721,18 @@ proc many_files { } {
 # programs are built but not installed, running the testsuite on an
 # installed toolchain will produce ERRORs about missing bfdtest1 and
 # bfdtest2 executables.
-if { ![istarget "tic30-*-*"] && [file exists $base_dir/bfdtest1] && [file exists $base_dir/bfdtest2] } {
+if { [file exists $base_dir/bfdtest1] && [file exists $base_dir/bfdtest2] } {
     set bfdtests [list bfdtest1 bfdtest2]
 
     long_filenames $bfdtests
-    thin_archive $bfdtests
-    thin_archive_with_nested $bfdtests
+
+    # xcoff, ecoff, and vms archive support doesn't handle thin archives
+    if { ![istarget "*-*-aix*"]
+        && ![istarget "*-*-*ecoff"]
+        && ![istarget "*-*-vms"] } {
+       thin_archive $bfdtests
+       thin_archive_with_nested $bfdtests
+    }
 }
 
 symbol_table
index 3cb0eb73f19f17a4dc191d7b8fa434b334784fc6..8d3c8df171de870677b787fd3b9780958db70119 100644 (file)
@@ -58,38 +58,40 @@ if [regexp $want $got] then {
     fail "objdump -i"
 }
 
-# The remaining tests require a test file.
+set obj o
+if { [istarget "*-*-vms"] } then {
+    set obj obj
+}
 
+# The remaining tests require a test file.
 
-if {![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o]} then {
+if {![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.${obj}]} then {
     fail "objdump (assembling bintest.s)"
     return
 }
-if {![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest2.o]} then {
+if {![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest2.${obj}]} then {
     fail "objdump (assembling)"
     return
 }
 if [is_remote host] {
-    set testfile [remote_download host tmpdir/bintest.o]
-    set testfile2 [remote_download host tmpdir/bintest2.o]
+    set testfile [remote_download host tmpdir/bintest.${obj}]
+    set testfile2 [remote_download host tmpdir/bintest2.${obj}]
 } else {
-    set testfile tmpdir/bintest.o
-    set testfile2 tmpdir/bintest2.o
+    set testfile tmpdir/bintest.${obj}
+    set testfile2 tmpdir/bintest2.${obj}
 }
 
 # $testarchive exists only if it is supported.
 set testarchive tmpdir/bintest.a
 remote_file host file delete $testarchive
-if { ![istarget "alpha-*-*"] || [is_elf_format] } then {
-    set got [binutils_run $AR "rc tmpdir/bintest.a $testfile2"]
-    if ![string match "" $got] then {
-       fail "bintest.a"
-       remote_file host delete tmpdir/bintest.a
-    } elseif [is_remote host] {
-       set testarchive [remote_download host tmpdir/bintest.a]
-    }
-    remote_file host delete tmpdir/bintest2.o
+set got [binutils_run $AR "rc tmpdir/bintest.a $testfile2"]
+if ![string match "" $got] then {
+    fail "bintest.a"
+    remote_file host delete tmpdir/bintest.a
+} elseif [is_remote host] {
+    set testarchive [remote_download host tmpdir/bintest.a]
 }
+remote_file host delete tmpdir/bintest2.${obj}
 
 # Test objdump -f
 
@@ -100,7 +102,7 @@ proc test_objdump_f { testfile dumpfile } {
 
     set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -f $testfile"]
 
-    set want "$dumpfile:\[     \]*file format.*architecture:\[         \]*${cpus_regex}.*HAS_RELOC.*HAS_SYMS"
+    set want "${dumpfile}.*:\[         \]*file format.*architecture:\[         \]*${cpus_regex}.*HAS_RELOC.*HAS_SYMS"
 
     if ![regexp $want $got] then {
        fail "objdump -f ($testfile, $dumpfile)"
@@ -111,7 +113,7 @@ proc test_objdump_f { testfile dumpfile } {
 
 test_objdump_f $testfile $testfile
 if { [ remote_file host exists $testarchive ] } then {
-    test_objdump_f $testarchive bintest2.o
+    test_objdump_f $testarchive bintest2.${obj}
 }
 
 # Test objdump -h
@@ -122,7 +124,7 @@ proc test_objdump_h { testfile dumpfile } {
 
     set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -h $testfile"]
 
-    set want "$dumpfile:\[     \]*file format.*Sections.*\[0-9\]+\[    \]+\[^  \]*(text|TEXT|P|\\\$CODE\\\$)\[^        \]*\[   \]*(\[0-9a-fA-F\]+).*\[0-9\]+\[         \]+\[^  \]*(\\.data|DATA|D_1)\[^        \]*\[   \]*(\[0-9a-fA-F\]+)"
+    set want "${dumpfile}.*:\[         \]*file format.*Sections.*\[0-9\]+\[    \]+\[^  \]*(text|TEXT|P|\\\$CODE\\\$)\[^        \]*\[   \]*(\[0-9a-fA-F\]+).*\[0-9\]+\[         \]+\[^  \]*(\\.data|DATA|D_1)\[^        \]*\[   \]*(\[0-9a-fA-F\]+)"
 
     if ![regexp $want $got all text_name text_size data_name data_size] then {
        fail "objdump -h ($testfile, $dumpfile)"
@@ -152,7 +154,7 @@ proc test_objdump_h { testfile dumpfile } {
 
 test_objdump_h $testfile $testfile
 if { [ remote_file host exists $testarchive ] } then {
-    test_objdump_h $testarchive bintest2.o
+    test_objdump_h $testarchive bintest2.${obj}
 }
 
 # Test objdump -t
@@ -192,7 +194,7 @@ proc test_objdump_r { testfile dumpfile } {
 
     set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -r $testfile"]
 
-    set want "$dumpfile:\[     \]*file format.*RELOCATION RECORDS FOR \\\[\[^\]\]*(text|TEXT|P|\\\$CODE\\\$)\[^\]\]*\\\].*external_symbol"
+    set want "${dumpfile}.*:\[         \]*file format.*RELOCATION RECORDS FOR \\\[\[^\]\]*(text|TEXT|P|\\\$CODE\\\$)\[^\]\]*\\\].*external_symbol"
 
     if [regexp $want $got] then {
        pass "objdump -r ($testfile, $dumpfile)"
@@ -203,7 +205,7 @@ proc test_objdump_r { testfile dumpfile } {
 
 test_objdump_r $testfile $testfile
 if { [ remote_file host exists $testarchive ] } then {
-    test_objdump_r $testarchive bintest2.o
+    test_objdump_r $testarchive bintest2.${obj}
 }
 
 # Test objdump -d
@@ -213,25 +215,25 @@ proc test_objdump_d { testfile dumpfile } {
 
     set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -d $testfile"]
 
-    set want "$dumpfile:.*Disassembly of section"
+    set want "${dumpfile}.*:.*Disassembly of section"
     if ![regexp $want $got] then {
        fail "objdump -d $testfile: No disassembly title"
        return
     }
 
-    set want "$dumpfile:.*00+0 <text_symbol>"
+    set want "${dumpfile}.*:.*00+0 <text_symbol>"
     if ![regexp $want $got] then {
        fail "objdump -d $testfile: Missing symbol name and address"
        return
     }
 
-    set want "$dumpfile:.*00+. <text_symbol2>"
+    set want "${dumpfile}.*:.*00+. <text_symbol2>"
     if ![regexp $want $got] then {
        fail "objdump -d $testfile: Missing second symbol"
        return
     }
 
-    set want "$dumpfile:.*00+. <text_symbol3>"
+    set want "${dumpfile}.*:.*00+. <text_symbol3>"
     if ![regexp $want $got] then {
        fail "objdump -d $testfile: Missing third symbol"
        return
@@ -242,7 +244,7 @@ proc test_objdump_d { testfile dumpfile } {
 
 test_objdump_d $testfile $testfile
 if { [ remote_file host exists $testarchive ] } then {
-    test_objdump_d $testarchive bintest2.o
+    test_objdump_d $testarchive bintest2.${obj}
 }
 
 # Test objdump --disassemble=<symbol>
@@ -357,13 +359,13 @@ proc test_objdump_d_non_func_sym { testfile dumpfile } {
 # all of func, and does not stop at the next symbol.
 if { [is_elf_format] } then {
 
-    if {![binutils_assemble $srcdir/$subdir/disasm.s tmpdir/disasm.o]} then {
+    if {![binutils_assemble $srcdir/$subdir/disasm.s tmpdir/disasm.${obj}]} then {
        fail "objdump --disassemble=func (assembling disasm.s)"
     } else {
        if [is_remote host] {
-           set elftestfile [remote_download host tmpdir/disasm.o]
+           set elftestfile [remote_download host tmpdir/disasm.${obj}]
        } else {
-           set elftestfile tmpdir/disasm.o
+           set elftestfile tmpdir/disasm.${obj}
        }
     
        test_objdump_d_func_sym $elftestfile $elftestfile
@@ -380,7 +382,7 @@ proc test_objdump_s { testfile dumpfile } {
 
     set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -s $testfile"]
 
-    set want "$dumpfile:\[     \]*file format.*Contents.*(text|TEXT|P|\\\$CODE\\\$)\[^0-9\]*\[         \]*\[0-9a-fA-F\]*\[     \]*(00000001|01000000|00000100).*Contents.*(data|DATA|D_1)\[^0-9\]*\[   \]*\[0-9a-fA-F\]*\[     \]*(00000002|02000000|00000200)"
+    set want "${dumpfile}.*:\[         \]*file format.*Contents.*(text|TEXT|P|\\\$CODE\\\$)\[^0-9\]*\[         \]*\[0-9a-fA-F\]*\[     \]*(00000001|01000000|00000100).*Contents.*(data|DATA|D_1)\[^0-9\]*\[   \]*\[0-9a-fA-F\]*\[     \]*(00000002|02000000|00000200)"
 
     if [regexp $want $got] then {
        pass "objdump -s ($testfile, $dumpfile)"
@@ -391,20 +393,20 @@ proc test_objdump_s { testfile dumpfile } {
 
 test_objdump_s $testfile $testfile
 if { [ remote_file host exists $testarchive ] } then {
-    test_objdump_s $testarchive bintest2.o
+    test_objdump_s $testarchive bintest2.${obj}
 }
 
 # Test objdump -s on a file that contains a compressed .debug section
 
 if { ![is_elf_format] } then {
     unsupported "objdump compressed debug"
-} elseif { ![binutils_assemble $srcdir/$subdir/dw2-compressed.S tmpdir/dw2-compressed.o] } then {
+} elseif { ![binutils_assemble $srcdir/$subdir/dw2-compressed.S tmpdir/dw2-compressed.${obj}] } then {
     fail "objdump compressed debug"
 } else {
     if [is_remote host] {
-       set compressed_testfile [remote_download host tmpdir/dw2-compressed.o]
+       set compressed_testfile [remote_download host tmpdir/dw2-compressed.${obj}]
     } else {
-       set compressed_testfile tmpdir/dw2-compressed.o
+       set compressed_testfile tmpdir/dw2-compressed.${obj}
     }
 
     set got [remote_exec host "$OBJDUMP $OBJDUMPFLAGS -s -j .zdebug_abbrev $compressed_testfile" "" "/dev/null" "objdump.out"]
@@ -455,14 +457,14 @@ if { ![is_elf_format]
     } else {
         set decodedline_testsrc $srcdir/$subdir/dw2-decodedline.S
     }
-    if { ![binutils_assemble $decodedline_testsrc tmpdir/dw2-decodedline.o] } then {
+    if { ![binutils_assemble $decodedline_testsrc tmpdir/dw2-decodedline.${obj}] } then {
        fail "objdump decoded line"
     }
 
     if [is_remote host] {
-       set decodedline_testfile [remote_download host tmpdir/dw2-decodedline.o]
+       set decodedline_testfile [remote_download host tmpdir/dw2-decodedline.${obj}]
     } else {
-       set decodedline_testfile tmpdir/dw2-decodedline.o
+       set decodedline_testfile tmpdir/dw2-decodedline.${obj}
     }
 
     set got [remote_exec host "$OBJDUMP $OBJDUMPFLAGS -WL $decodedline_testfile" "" "/dev/null" "objdump.out"]
@@ -484,13 +486,13 @@ if { ![is_elf_format]
 
 if { ![is_elf_format] } then {
     unsupported "objdump debug_ranges test"
-} elseif { ![binutils_assemble $srcdir/$subdir/dw2-ranges.S tmpdir/dw2-ranges.o] } then {
+} elseif { ![binutils_assemble $srcdir/$subdir/dw2-ranges.S tmpdir/dw2-ranges.${obj}] } then {
     fail "objdump debug_ranges test"
 } else {
     if [is_remote host] {
-       set ranges_testfile [remote_download host tmpdir/dw2-ranges.o]
+       set ranges_testfile [remote_download host tmpdir/dw2-ranges.${obj}]
     } else {
-       set ranges_testfile tmpdir/dw2-ranges.o
+       set ranges_testfile tmpdir/dw2-ranges.${obj}
     }
 
     set got [remote_exec host "$OBJDUMP $OBJDUMPFLAGS --dwarf=Ranges $ranges_testfile" "" "/dev/null" "objdump.out"]
@@ -594,14 +596,14 @@ if {[is_elf_format]} then {
 if { [is_elf_format] } then {
     set testsrc $srcdir/$subdir/debuglink.s
 
-    if { ![binutils_assemble $testsrc tmpdir/debuglink.o] } then {
+    if { ![binutils_assemble $testsrc tmpdir/debuglink.${obj}] } then {
        fail "objdump -Wk (reason: could not assemble source)"
     }
 
     if [is_remote host] {
-       set testfile [remote_download host tmpdir/debuglink.o]
+       set testfile [remote_download host tmpdir/debuglink.${obj}]
     } else {
-       set testfile tmpdir/debuglink.o
+       set testfile tmpdir/debuglink.${obj}
     }
 
     set got [remote_exec host "$OBJDUMP $OBJDUMPFLAGS -Wk $testfile" "" "/dev/null" "objdump.out"]
@@ -627,10 +629,11 @@ proc test_follow_debuglink { options dumpfile } {
     global srcdir
     global subdir
     global OBJDUMP
+    global obj
     
     set test "follow-debuglink ($options)"
 
-    if {![binutils_assemble $srcdir/$subdir/debuglink.s tmpdir/debuglink.o]} then {
+    if {![binutils_assemble $srcdir/$subdir/debuglink.s tmpdir/debuglink.${obj}]} then {
        fail "$test (reason: assemble first source file)"
        return
     }
@@ -641,10 +644,10 @@ proc test_follow_debuglink { options dumpfile } {
     }
 
     if ![is_remote host] {
-       set tempfile tmpdir/debuglink.o
+       set tempfile tmpdir/debuglink.${obj}
     } else {
        set tempfile [remote_download host tmpdir/linkdebug.debug]
-       set tempfile [remote_download host tmpdir/debuglink.o]
+       set tempfile [remote_download host tmpdir/debuglink.${obj}]
     }
     
     set got [remote_exec host "$OBJDUMP $options $tempfile" "" "/dev/null" "tmpdir/objdump.out"]
@@ -716,15 +719,15 @@ if {[is_elf_format]} then {
        set text ".text"
     }
     # generate a copy of the test object with .text repositioned
-    if { [binutils_run $OBJCOPY "--change-section-address $text=0x80000000 tmpdir/bintest.o tmpdir/bintest_signed.o"] != "" } {
-       fail "Failed to reposition $text to 0x80000000 (tmpdir/bintest.o -> tmpdir/bintest_signed.o)"
+    if { [binutils_run $OBJCOPY "--change-section-address $text=0x80000000 tmpdir/bintest.${obj} tmpdir/bintest_signed.${obj}"] != "" } {
+       fail "Failed to reposition $text to 0x80000000 (tmpdir/bintest.${obj} -> tmpdir/bintest_signed.${obj})"
        return
     }
 
     if [is_remote host] {
-       set testfile3 [remote_download host tmpdir/bintest_signed.o]
+       set testfile3 [remote_download host tmpdir/bintest_signed.${obj}]
     } else {
-       set testfile3 tmpdir/bintest_signed.o
+       set testfile3 tmpdir/bintest_signed.${obj}
     }
 
     test_objdump_content_limited $testfile3 $text "80000004" "80000008"