}
}
-if { [istarget "alpha-*-*"] && ![is_elf_format] } then {
- return
+set obj o
+if { [istarget "*-*-vms"] } then {
+ set obj obj
}
# send_user "Version [binutil_version $AR]"
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
}
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
}
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
}
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
}
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
}
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
}
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
}
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
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
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
}
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
}
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
}
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
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
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
}
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
global AS
global srcdir
global subdir
+ global obj
set testname "ar 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
# 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
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
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)"
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
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)"
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
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)"
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
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
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>
# 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
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)"
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"]
} 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"]
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"]
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"]
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
}
}
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"]
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"