* lib/gas-defs.exp: Support new directive "warning".
This commit is contained in:
parent
0fd88904d9
commit
cfdf4aaa1d
2 changed files with 49 additions and 9 deletions
|
@ -1,3 +1,7 @@
|
|||
2005-02-07 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* lib/gas-defs.exp: Support new directive "warning".
|
||||
|
||||
2005-02-02 Jan Beulich <jbeulich@novell.com>
|
||||
|
||||
* gas/ia64/pred-rel.s: New.
|
||||
|
|
|
@ -297,6 +297,10 @@ proc is_elf_format {} {
|
|||
# to pass. The PROG, objdump, nm and objcopy options have no
|
||||
# meaning and need not supplied if this is present.
|
||||
#
|
||||
# warning: REGEX
|
||||
# Expect a gas warning matching REGEX. It is an error to issue
|
||||
# both "error" and "warning".
|
||||
#
|
||||
# Each option may occur at most once.
|
||||
#
|
||||
# After the option lines come regexp lines. `run_dump_test' calls
|
||||
|
@ -333,6 +337,7 @@ proc run_dump_test { name {extra_options {}} } {
|
|||
set opts(source) {}
|
||||
set opts(stderr) {}
|
||||
set opts(error) {}
|
||||
set opts(warning) {}
|
||||
|
||||
foreach i $opt_array {
|
||||
set opt_name [lindex $i 0]
|
||||
|
@ -406,6 +411,16 @@ proc run_dump_test { name {extra_options {}} } {
|
|||
}
|
||||
}
|
||||
|
||||
set expmsg $opts(error)
|
||||
if { $opts(warning) != "" } {
|
||||
set expmsg $opts(warning)
|
||||
}
|
||||
if { (($opts(warning) != "") && ($opts(error) != "")) \
|
||||
|| (($opts(warning) != "") && ($opts(stderr) != "")) } {
|
||||
perror "$testname: bad mix of stderr, error and warning test-directives"
|
||||
return
|
||||
}
|
||||
|
||||
set progopts1 $opts($program)
|
||||
eval set progopts \$[string toupper $program]FLAGS
|
||||
eval set binary \$[string toupper $program]
|
||||
|
@ -421,24 +436,45 @@ proc run_dump_test { name {extra_options {}} } {
|
|||
set sourcefile $srcdir/$subdir/$opts(source)
|
||||
}
|
||||
|
||||
send_log "$AS $ASFLAGS $opts(as) -o dump.o $sourcefile\n"
|
||||
catch "exec $srcdir/lib/run $AS $ASFLAGS $opts(as) -o dump.o $sourcefile" comp_output
|
||||
set cmd "$srcdir/lib/run $AS $ASFLAGS $opts(as) -o dump.o $sourcefile"
|
||||
send_log "$cmd\n"
|
||||
set cmdret [catch "exec $cmd" comp_output]
|
||||
set comp_output [prune_warnings $comp_output]
|
||||
|
||||
if { ![string match "" $comp_output] || $opts(stderr) != "" } then {
|
||||
if { $cmdret != 0 || $comp_output != "" || $opts(stderr) != "" } then {
|
||||
# If the executed program writes to stderr and stderr is not
|
||||
# redirected, exec *always* returns failure, regardless of the
|
||||
# program exit code. Thankfully, we can retrieve the true
|
||||
# return status from a special variable. Redirection would
|
||||
# cause a tcl-specific message to be appended, and we'd rather
|
||||
# not deal with that if we can help it.
|
||||
global errorCode
|
||||
if { $cmdret != 0 && [lindex $errorCode 0] == "NONE" } {
|
||||
set cmdret 0
|
||||
}
|
||||
|
||||
set exitstat "succeeded"
|
||||
if { $cmdret != 0 } { set exitstat "failed" }
|
||||
|
||||
if { $opts(stderr) == "" } then {
|
||||
send_log "$comp_output\n"
|
||||
verbose "$comp_output" 3
|
||||
|
||||
if { $opts(error) != "" } {
|
||||
verbose -log "failed with: <$comp_output>, expected: <$opts(error)>"
|
||||
if [regexp $opts(error) $comp_output] {
|
||||
if { $expmsg != "" \
|
||||
&& [regexp $expmsg $comp_output] \
|
||||
&& (($cmdret == 0) == ($opts(warning) != "")) } {
|
||||
verbose -log "$exitstat with: <$comp_output>, expected: <$expmsg>"
|
||||
|
||||
# Only "pass" and return here if we expected (and got)
|
||||
# an error.
|
||||
if { $opts(error) != "" } {
|
||||
pass $testname
|
||||
return
|
||||
}
|
||||
} {
|
||||
fail $testname
|
||||
return
|
||||
}
|
||||
fail $testname
|
||||
return
|
||||
} else {
|
||||
catch {write_file dump.stderr "$comp_output"} write_output
|
||||
if ![string match "" $write_output] then {
|
||||
|
@ -454,7 +490,7 @@ proc run_dump_test { name {extra_options {}} } {
|
|||
verbose "wrote pruned stderr to dump.stderr" 3
|
||||
if { [regexp_diff "dump.stderr" "$stderrfile"] } then {
|
||||
if { $opts(error) != "" } {
|
||||
verbose -log "failed with: <$comp_output>, expected: <$opts(error)>"
|
||||
verbose -log "$exitstat with: <$comp_output>, expected: <$opts(error)>"
|
||||
if [regexp $opts(error) $comp_output] {
|
||||
pass $testname
|
||||
return
|
||||
|
|
Loading…
Reference in a new issue