Fail run_dump_test when an error is expected but not seen

* testsuite/lib/binutils-common.exp: Whitespace fixes throughout.
	(run_dump_test): Fail if expecting errors from a file like we do
	for error strings, if no error is seen.
This commit is contained in:
Alan Modra
2021-02-20 15:42:22 +10:30
parent c3bf9dc5aa
commit 4d496013a2
2 changed files with 315 additions and 309 deletions

View File

@ -1,3 +1,9 @@
2021-02-20 Alan Modra <amodra@gmail.com>
* testsuite/lib/binutils-common.exp: Whitespace fixes throughout.
(run_dump_test): Fail if expecting errors from a file like we do
for error strings, if no error is seen.
2021-02-19 Alan Modra <amodra@gmail.com> 2021-02-19 Alan Modra <amodra@gmail.com>
* testsuite/binutils-all/readelf.exp (pr26548): Run for 32-bit too. * testsuite/binutils-all/readelf.exp (pr26548): Run for 32-bit too.

View File

@ -66,7 +66,7 @@ proc is_elf_format {} {
if { ![istarget *-*-netbsdelf*] if { ![istarget *-*-netbsdelf*]
&& ( [istarget vax-*-netbsd*] && ( [istarget vax-*-netbsd*]
|| [istarget ns32k-*-netbsd*]) } { || [istarget ns32k-*-netbsd*]) } {
return 0 return 0
} }
if { [istarget arm-*-openbsd*] if { [istarget arm-*-openbsd*]
@ -221,7 +221,7 @@ proc supports_gnu_osabi {} {
return 1 return 1
} }
if { [istarget "wasm32*-*-*"] } { if { [istarget "wasm32*-*-*"] } {
return 1 return 1
} }
if { ![istarget "*-*-elf*"] } { if { ![istarget "*-*-elf*"] } {
return 0 return 0
@ -966,8 +966,8 @@ proc run_dump_test { name {extra_options {}} } {
} }
default { default {
if { !$in_extra if { !$in_extra
&& [string length $opts($opt_name)] && [string length $opts($opt_name)]
&& $opt_name != "as" } { && $opt_name != "as" } {
perror "option $opt_name multiply set in $file.d" perror "option $opt_name multiply set in $file.d"
unresolved $subdir/$name unresolved $subdir/$name
return return
@ -991,13 +991,13 @@ proc run_dump_test { name {extra_options {}} } {
error { error {
append opts($opt_name) $opt_val append opts($opt_name) $opt_val
} }
as { as {
if { $in_extra } { if { $in_extra } {
set as_additional_flags [concat $as_additional_flags $opt_val] set as_additional_flags [concat $as_additional_flags $opt_val]
} else { } else {
lappend opts(as) $opt_val lappend opts(as) $opt_val
} }
} }
default { default {
set opts($opt_name) [concat $opts($opt_name) $opt_val] set opts($opt_name) [concat $opts($opt_name) $opt_val]
} }
@ -1006,20 +1006,20 @@ proc run_dump_test { name {extra_options {}} } {
# Ensure there is something in $opts(as) for the foreach loop below. # Ensure there is something in $opts(as) for the foreach loop below.
if { [llength $opts(as)] == 0 } { if { [llength $opts(as)] == 0 } {
set opts(as) [list " "] set opts(as) [list " "]
} }
foreach x $opts(as) { foreach x $opts(as) {
if { [string length $x] && [string length $as_additional_flags] } { if { [string length $x] && [string length $as_additional_flags] } {
append x " " append x " "
} }
append x $as_additional_flags append x $as_additional_flags
regsub {\[big_or_little_endian\]} $x \ regsub {\[big_or_little_endian\]} $x \
[big_or_little_endian] x [big_or_little_endian] x
lappend as_final_flags $x lappend as_final_flags $x
} }
regsub {\[big_or_little_endian\]} $opts(ld) \ regsub {\[big_or_little_endian\]} $opts(ld) \
[big_or_little_endian] opts(ld) [big_or_little_endian] opts(ld)
if { $opts(name) == "" } { if { $opts(name) == "" } {
set testname "$subdir/$name" set testname "$subdir/$name"
@ -1159,7 +1159,7 @@ proc run_dump_test { name {extra_options {}} } {
regsub "\n$" $comp_output "" comp_output regsub "\n$" $comp_output "" comp_output
if { $cmdret != 0} { if { $cmdret != 0} {
send_log "compilation of $cfile failed, exit status $cmdret with <$comp_output>" send_log "compilation of $cfile failed, exit status $cmdret with <$comp_output>"
# Should this be 'unresolved', or is that too silent? # Should this be 'unresolved', or is that too silent?
fail $testname fail $testname
return 0 return 0
} }
@ -1197,334 +1197,334 @@ proc run_dump_test { name {extra_options {}} } {
} }
foreach as_flags $as_final_flags { foreach as_flags $as_final_flags {
# Assemble each file. # Assemble each file.
set objfiles {} set objfiles {}
for { set i 0 } { $i < [llength $sourcefiles] } { incr i } { for { set i 0 } { $i < [llength $sourcefiles] } { incr i } {
set sourcefile [lindex $sourcefiles $i] set sourcefile [lindex $sourcefiles $i]
set sourceasflags [lindex $asflags $i] set sourceasflags [lindex $asflags $i]
set run_objcopy_objects 0 set run_objcopy_objects 0
if { [string match "*RUN_OBJCOPY*" $sourceasflags] } { if { [string match "*RUN_OBJCOPY*" $sourceasflags] } {
set run_objcopy_objects 1 set run_objcopy_objects 1
} }
regsub "RUN_OBJCOPY" $sourceasflags "" sourceasflags regsub "RUN_OBJCOPY" $sourceasflags "" sourceasflags
set objfile [lindex $objfile_names $i] set objfile [lindex $objfile_names $i]
catch "exec rm -f $objfile" exec_output catch "exec rm -f $objfile" exec_output
lappend objfiles $objfile lappend objfiles $objfile
if { $as_flags == "binary" } { if { $as_flags == "binary" } {
while {[file type $sourcefile] eq "link"} { while {[file type $sourcefile] eq "link"} {
set newfile [file readlink $sourcefile] set newfile [file readlink $sourcefile]
if {[string index $newfile 0] ne "/"} { if {[string index $newfile 0] ne "/"} {
set newfile [file dirname $sourcefile]/$newfile set newfile [file dirname $sourcefile]/$newfile
} }
set sourcefile $newfile set sourcefile $newfile
} }
set newfile [remote_download host $sourcefile $objfile] set newfile [remote_download host $sourcefile $objfile]
set cmdret 0 set cmdret 0
if { $newfile == "" } { if { $newfile == "" } {
set cmdret 1 set cmdret 1
} }
} else { } else {
if { [istarget "hppa*-*-*"] \ if { [istarget "hppa*-*-*"] \
&& ![istarget "*-*-linux*"] \ && ![istarget "*-*-linux*"] \
&& ![istarget "*-*-netbsd*" ] } { && ![istarget "*-*-netbsd*" ] } {
set cmd "sed -e 's/^\[ \]*\.comm \\(\[^,\]*\\),\\(.*\\)/\\1 .comm \\2/' < $sourcefile > tmpdir/asm.s" set cmd "sed -e 's/^\[ \]*\.comm \\(\[^,\]*\\),\\(.*\\)/\\1 .comm \\2/' < $sourcefile > tmpdir/asm.s"
send_log "$cmd\n" send_log "$cmd\n"
set cmdret [remote_exec host [concat sh -c [list "$cmd"]]] set cmdret [remote_exec host [concat sh -c [list "$cmd"]]]
set cmdret [lindex $cmdret 0] set cmdret [lindex $cmdret 0]
if { $cmdret != 0 } { if { $cmdret != 0 } {
perror "sed failure" perror "sed failure"
unresolved $testname unresolved $testname
continue continue
} }
set sourcefile tmpdir/asm.s set sourcefile tmpdir/asm.s
} }
set cmd "$AS $ASFLAGS $as_flags $sourceasflags -o $objfile $sourcefile" set cmd "$AS $ASFLAGS $as_flags $sourceasflags -o $objfile $sourcefile"
send_log "$cmd\n" send_log "$cmd\n"
set cmdret [remote_exec host [concat sh -c [list "$cmd 2>&1"]] "" "/dev/null" "dump.tmp"] set cmdret [remote_exec host [concat sh -c [list "$cmd 2>&1"]] "" "/dev/null" "dump.tmp"]
remote_upload host "dump.tmp" remote_upload host "dump.tmp"
set comp_output [prune_warnings [file_contents "dump.tmp"]] set comp_output [prune_warnings [file_contents "dump.tmp"]]
remote_file host delete "dump.tmp" remote_file host delete "dump.tmp"
remote_file build delete "dump.tmp" remote_file build delete "dump.tmp"
set cmdret [lindex $cmdret 0] set cmdret [lindex $cmdret 0]
} }
if { $cmdret == 0 && $run_objcopy_objects } { if { $cmdret == 0 && $run_objcopy_objects } {
set cmd "$OBJCOPY $opts(objcopy_objects) $objfile" set cmd "$OBJCOPY $opts(objcopy_objects) $objfile"
send_log "$cmd\n" send_log "$cmd\n"
set cmdret [remote_exec host [concat sh -c [list "$cmd 2>&1"]] \ set cmdret [remote_exec host [concat sh -c [list "$cmd 2>&1"]] \
"" "/dev/null" "dump.tmp"] "" "/dev/null" "dump.tmp"]
remote_upload host "dump.tmp" remote_upload host "dump.tmp"
append comp_output [prune_warnings [file_contents "dump.tmp"]] append comp_output [prune_warnings [file_contents "dump.tmp"]]
remote_file host delete "dump.tmp" remote_file host delete "dump.tmp"
remote_file build delete "dump.tmp" remote_file build delete "dump.tmp"
set cmdret [lindex $cmdret 0] set cmdret [lindex $cmdret 0]
} }
} }
# Perhaps link the file(s). # Perhaps link the file(s).
if { $cmdret == 0 && $run_ld } { if { $cmdret == 0 && $run_ld } {
set objfile "tmpdir/dump" set objfile "tmpdir/dump"
catch "exec rm -f $objfile" exec_output catch "exec rm -f $objfile" exec_output
set ld_extra_opt "" set ld_extra_opt ""
global ld global ld
set ld "$LD" set ld "$LD"
if [check_relro_support] { if [check_relro_support] {
set ld_extra_opt "-z norelro" set ld_extra_opt "-z norelro"
} }
# Add -L$srcdir/$subdir so that the linker command can use # Add -L$srcdir/$subdir so that the linker command can use
# linker scripts in the source directory. # linker scripts in the source directory.
set cmd "$LD $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \ set cmd "$LD $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
$opts(ld) -o $objfile $objfiles $opts(ld_after_inputfiles)" $opts(ld) -o $objfile $objfiles $opts(ld_after_inputfiles)"
# If needed then check for, or add a -Map option. # If needed then check for, or add a -Map option.
set mapfile "" set mapfile ""
if { $opts(map) != "" } then { if { $opts(map) != "" } then {
if { [regexp -- "-Map=(\[^ \]+)" $cmd all mapfile] } then { if { [regexp -- "-Map=(\[^ \]+)" $cmd all mapfile] } then {
# Found existing mapfile option # Found existing mapfile option
verbose -log "Existing mapfile '$mapfile' found" verbose -log "Existing mapfile '$mapfile' found"
} else { } else {
# No mapfile option. # No mapfile option.
set mapfile "tmpdir/dump.map" set mapfile "tmpdir/dump.map"
verbose -log "Adding mapfile '$mapfile'" verbose -log "Adding mapfile '$mapfile'"
set cmd "$cmd -Map=$mapfile" set cmd "$cmd -Map=$mapfile"
} }
} }
send_log "$cmd\n" send_log "$cmd\n"
set cmdret [remote_exec host [concat sh -c [list "$cmd 2>&1"]] "" "/dev/null" "dump.tmp"] set cmdret [remote_exec host [concat sh -c [list "$cmd 2>&1"]] "" "/dev/null" "dump.tmp"]
remote_upload host "dump.tmp" remote_upload host "dump.tmp"
append comp_output [file_contents "dump.tmp"] append comp_output [file_contents "dump.tmp"]
remote_file host delete "dump.tmp" remote_file host delete "dump.tmp"
remote_file build delete "dump.tmp" remote_file build delete "dump.tmp"
set cmdret [lindex $cmdret 0] set cmdret [lindex $cmdret 0]
if { $cmdret == 0 && $run_objcopy } { if { $cmdret == 0 && $run_objcopy } {
set infile $objfile set infile $objfile
set objfile "tmpdir/dump1" set objfile "tmpdir/dump1"
remote_file host delete $objfile remote_file host delete $objfile
# Note that we don't use OBJCOPYFLAGS here; any flags must be # Note that we don't use OBJCOPYFLAGS here; any flags must be
# explicitly specified. # explicitly specified.
set cmd "$OBJCOPY $opts(objcopy_linked_file) $infile $objfile" set cmd "$OBJCOPY $opts(objcopy_linked_file) $infile $objfile"
send_log "$cmd\n" send_log "$cmd\n"
set cmdret [remote_exec host [concat sh -c [list "$cmd 2>&1"]] "" "/dev/null" "dump.tmp"] set cmdret [remote_exec host [concat sh -c [list "$cmd 2>&1"]] "" "/dev/null" "dump.tmp"]
remote_upload host "dump.tmp" remote_upload host "dump.tmp"
append comp_output [file_contents "dump.tmp"] append comp_output [file_contents "dump.tmp"]
remote_file host delete "dump.tmp" remote_file host delete "dump.tmp"
remote_file build delete "dump.tmp" remote_file build delete "dump.tmp"
set cmdret [lindex $cmdret 0] set cmdret [lindex $cmdret 0]
} }
} else { } else {
set objfile [lindex $objfiles 0] set objfile [lindex $objfiles 0]
} }
if { $cmdret == 0 && $opts(PROG) != "" } { if { $cmdret == 0 && $opts(PROG) != "" } {
set destopt ${copyfile}.o set destopt ${copyfile}.o
switch -- $opts(PROG) { switch -- $opts(PROG) {
ar { set program ar } ar { set program ar }
elfedit { elfedit {
set program elfedit set program elfedit
set destopt "" set destopt ""
} }
nm { set program nm } nm { set program nm }
objcopy { set program objcopy } objcopy { set program objcopy }
ranlib { set program ranlib } ranlib { set program ranlib }
strings { set program strings } strings { set program strings }
strip { strip {
set program strip set program strip
set destopt "-o $destopt" set destopt "-o $destopt"
} }
default { default {
perror "unrecognized PROG option $opts(PROG) in $file.d" perror "unrecognized PROG option $opts(PROG) in $file.d"
unresolved $testname unresolved $testname
continue continue
} }
} }
set progopts1 $opts($program) set progopts1 $opts($program)
eval set progopts \$[string toupper $program]FLAGS eval set progopts \$[string toupper $program]FLAGS
eval set binary \$[string toupper $program] eval set binary \$[string toupper $program]
if { ![is_remote host] && [which $binary] == 0 } { if { ![is_remote host] && [which $binary] == 0 } {
untested $testname untested $testname
continue continue
} }
verbose "running $binary $progopts $progopts1" 3 verbose "running $binary $progopts $progopts1" 3
set cmd "$binary $progopts $progopts1 $objfile $destopt" set cmd "$binary $progopts $progopts1 $objfile $destopt"
# Ensure consistent sorting of symbols # Ensure consistent sorting of symbols
if {[info exists env(LC_ALL)]} { if {[info exists env(LC_ALL)]} {
set old_lc_all $env(LC_ALL) set old_lc_all $env(LC_ALL)
} }
set env(LC_ALL) "C" set env(LC_ALL) "C"
send_log "$cmd\n" send_log "$cmd\n"
set cmdret [remote_exec host [concat sh -c [list "$cmd 2>dump.tmp"]] "" "/dev/null"] set cmdret [remote_exec host [concat sh -c [list "$cmd 2>dump.tmp"]] "" "/dev/null"]
set cmdret [lindex $cmdret 0] set cmdret [lindex $cmdret 0]
remote_upload host "dump.tmp" remote_upload host "dump.tmp"
append comp_output [prune_warnings [file_contents "dump.tmp"]] append comp_output [prune_warnings [file_contents "dump.tmp"]]
remote_file host delete "dump.tmp" remote_file host delete "dump.tmp"
remote_file build delete "dump.tmp" remote_file build delete "dump.tmp"
if {[info exists old_lc_all]} { if {[info exists old_lc_all]} {
set env(LC_ALL) $old_lc_all set env(LC_ALL) $old_lc_all
} else { } else {
unset env(LC_ALL) unset env(LC_ALL)
} }
if { $destopt != "" } { if { $destopt != "" } {
set objfile ${copyfile}.o set objfile ${copyfile}.o
} }
} }
set want_out(source) "" set want_out(source) ""
set want_out(terminal) 0 set want_out(terminal) 0
if { $err_warn } { if { $err_warn } {
if { $opts(error) != "" || $opts(error_output) != "" } { if { $opts(error) != "" || $opts(error_output) != "" } {
set want_out(terminal) 1 set want_out(terminal) 1
} }
if { $opts(error) != "" || $opts(warning) != "" } { if { $opts(error) != "" || $opts(warning) != "" } {
set want_out(source) "regex" set want_out(source) "regex"
if { $opts(error) != "" } { if { $opts(error) != "" } {
set want_out(regex) $opts(error) set want_out(regex) $opts(error)
} else { } else {
set want_out(regex) $opts(warning) set want_out(regex) $opts(warning)
} }
} else { } else {
set want_out(source) "file" set want_out(source) "file"
if { $opts(error_output) != "" } { if { $opts(error_output) != "" } {
set want_out(file) $opts(error_output) set want_out(file) $opts(error_output)
} else { } else {
set want_out(file) $opts(warning_output) set want_out(file) $opts(warning_output)
} }
} }
} }
regsub "\n$" $comp_output "" comp_output regsub "\n$" $comp_output "" comp_output
if { $cmdret != 0 || $comp_output != "" || $want_out(source) != "" } { if { $cmdret != 0 || $comp_output != "" || $want_out(source) != "" } {
set exitstat "succeeded" set exitstat "succeeded"
if { $cmdret != 0 } { set exitstat "failed" } if { $cmdret != 0 } { set exitstat "failed" }
if { $want_out(source) == "regex" } { if { $want_out(source) == "regex" } {
verbose -log "$exitstat with: <$comp_output>, expected: <$want_out(regex)>" verbose -log "$exitstat with: <$comp_output>, expected: <$want_out(regex)>"
} elseif { $want_out(source) == "file" } { } elseif { $want_out(source) == "file" } {
verbose -log "$exitstat with: <$comp_output>, expected in file $want_out(file)" verbose -log "$exitstat with: <$comp_output>, expected in file $want_out(file)"
set_file_contents "tmpdir/ld.messages" "$comp_output" set_file_contents "tmpdir/ld.messages" "$comp_output"
} else { } else {
verbose -log "$exitstat with: <$comp_output>, no expected output" verbose -log "$exitstat with: <$comp_output>, no expected output"
} }
if { (($want_out(source) == "") == ($comp_output == "")) \ if { (($want_out(source) == "") == ($comp_output == "")) \
&& (($cmdret == 0) == ($want_out(terminal) == 0)) \ && (($cmdret == 0) == ($want_out(terminal) == 0)) \
&& ((($want_out(source) == "regex") \ && ((($want_out(source) == "regex") \
&& [regexp -- $want_out(regex) $comp_output]) \ && [regexp -- $want_out(regex) $comp_output]) \
|| (($want_out(source) == "file") \ || (($want_out(source) == "file") \
&& (![regexp_diff "tmpdir/ld.messages" "$srcdir/$subdir/$want_out(file)"]))) } { && (![regexp_diff "tmpdir/ld.messages" "$srcdir/$subdir/$want_out(file)"]))) } {
# We have the expected output. # We have the expected output.
if { $want_out(terminal) || $dumpprogram == "" } { if { $want_out(terminal) || $dumpprogram == "" } {
pass $testname pass $testname
continue continue
} }
} else { } else {
fail $testname fail $testname
continue continue
} }
} }
# We must not have expected failure if we get here. # We must not have expected failure if we get here.
if { $opts(error) != "" } { if { $want_out(terminal) } {
fail $testname fail $testname
continue continue
} }
if { $opts(map) != "" } then { if { $opts(map) != "" } then {
# Check the map file matches. # Check the map file matches.
set map_pattern_file $srcdir/$subdir/$opts(map) set map_pattern_file $srcdir/$subdir/$opts(map)
verbose -log "Compare '$mapfile' against '$map_pattern_file'" verbose -log "Compare '$mapfile' against '$map_pattern_file'"
if { [regexp_diff $mapfile $map_pattern_file] } then { if { [regexp_diff $mapfile $map_pattern_file] } then {
fail "$testname (map file check)" fail "$testname (map file check)"
} else { } else {
pass "$testname (map file check)" pass "$testname (map file check)"
} }
if { $dumpprogram == "" } then { if { $dumpprogram == "" } then {
continue continue
} }
} }
set progopts1 $opts($dumpprogram) set progopts1 $opts($dumpprogram)
eval set progopts \$[string toupper $dumpprogram]FLAGS eval set progopts \$[string toupper $dumpprogram]FLAGS
eval set binary \$[string toupper $dumpprogram] eval set binary \$[string toupper $dumpprogram]
if { ![is_remote host] && [which $binary] == 0 } { if { ![is_remote host] && [which $binary] == 0 } {
untested $testname untested $testname
continue continue
} }
# For objdump of gas output, automatically translate standard section names # For objdump of gas output, automatically translate standard section names
set sect_names "" set sect_names ""
if { !$run_ld && $dumpprogram == "objdump" \ if { !$run_ld && $dumpprogram == "objdump" \
&& $opts(section_subst) != "no" \ && $opts(section_subst) != "no" \
&& ![string match "*-b binary*" $progopts1] } { && ![string match "*-b binary*" $progopts1] } {
set sect_names [get_standard_section_names] set sect_names [get_standard_section_names]
if { $sect_names != ""} { if { $sect_names != ""} {
regsub -- "\\.text" $progopts1 "[lindex $sect_names 0]" progopts1 regsub -- "\\.text" $progopts1 "[lindex $sect_names 0]" progopts1
regsub -- "\\.data" $progopts1 "[lindex $sect_names 1]" progopts1 regsub -- "\\.data" $progopts1 "[lindex $sect_names 1]" progopts1
regsub -- "\\.bss" $progopts1 "[lindex $sect_names 2]" progopts1 regsub -- "\\.bss" $progopts1 "[lindex $sect_names 2]" progopts1
} }
} }
if { $progopts1 == "" } { set $progopts1 "-r" } if { $progopts1 == "" } { set $progopts1 "-r" }
verbose "running $binary $progopts $progopts1" 3 verbose "running $binary $progopts $progopts1" 3
set cmd "$binary $progopts $progopts1 $objfile > $dumpfile" set cmd "$binary $progopts $progopts1 $objfile > $dumpfile"
# Ensure consistent sorting of symbols # Ensure consistent sorting of symbols
if {[info exists env(LC_ALL)]} { if {[info exists env(LC_ALL)]} {
set old_lc_all $env(LC_ALL) set old_lc_all $env(LC_ALL)
} }
set env(LC_ALL) "C" set env(LC_ALL) "C"
send_log "$cmd\n" send_log "$cmd\n"
set cmdret [remote_exec host [concat sh -c [list "$cmd 2>dump.tmp"]] "" "/dev/null"] set cmdret [remote_exec host [concat sh -c [list "$cmd 2>dump.tmp"]] "" "/dev/null"]
set cmdret [lindex $cmdret 0] set cmdret [lindex $cmdret 0]
remote_upload host "dump.tmp" remote_upload host "dump.tmp"
set comp_output [prune_warnings [file_contents "dump.tmp"]] set comp_output [prune_warnings [file_contents "dump.tmp"]]
remote_file host delete "dump.tmp" remote_file host delete "dump.tmp"
remote_file build delete "dump.tmp" remote_file build delete "dump.tmp"
if {[info exists old_lc_all]} { if {[info exists old_lc_all]} {
set env(LC_ALL) $old_lc_all set env(LC_ALL) $old_lc_all
} else { } else {
unset env(LC_ALL) unset env(LC_ALL)
} }
if { $cmdret != 0 || $comp_output != "" } { if { $cmdret != 0 || $comp_output != "" } {
send_log "exited abnormally with $cmdret, output:$comp_output\n" send_log "exited abnormally with $cmdret, output:$comp_output\n"
fail $testname fail $testname
continue continue
} }
if { $verbose > 2 } then { verbose "output is [file_contents $dumpfile]" 3 } if { $verbose > 2 } then { verbose "output is [file_contents $dumpfile]" 3 }
# Create the substition list for objdump output. # Create the substition list for objdump output.
set regexp_subst "" set regexp_subst ""
if { $sect_names != "" } { if { $sect_names != "" } {
set regexp_subst [list "\\\\?\\.text" [lindex $sect_names 0] \ set regexp_subst [list "\\\\?\\.text" [lindex $sect_names 0] \
"\\\\?\\.data" [lindex $sect_names 1] \ "\\\\?\\.data" [lindex $sect_names 1] \
"\\\\?\\.bss" [lindex $sect_names 2] ] "\\\\?\\.bss" [lindex $sect_names 2] ]
} }
if { [regexp_diff $dumpfile "${dfile}" $regexp_subst] } then { if { [regexp_diff $dumpfile "${dfile}" $regexp_subst] } then {
fail $testname fail $testname
if { $verbose == 2 } then { verbose "output is [file_contents $dumpfile]" 2 } if { $verbose == 2 } then { verbose "output is [file_contents $dumpfile]" 2 }
continue continue
} }
pass $testname pass $testname
} }
} }