diff options
Diffstat (limited to 'gas/testsuite/lib/gas-dg.exp')
-rw-r--r-- | gas/testsuite/lib/gas-dg.exp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/gas/testsuite/lib/gas-dg.exp b/gas/testsuite/lib/gas-dg.exp new file mode 100644 index 0000000..92f7f31 --- /dev/null +++ b/gas/testsuite/lib/gas-dg.exp @@ -0,0 +1,53 @@ +# Define gas callbacks for dg.exp. + +load_lib dg.exp + +# The use of this function is still in a bit of flux. +# It should be theoretically possible to assemble, link, and run a file +# but we currently don't support that. Assembler testcases aren't usually +# that elaborate anyway. :-) + +proc gas-dg-test { prog do_what tool_flags } { + # FIXME: the gas testsuite doesn't define tmpdir. Use outdir? + set output_file "./a.out" + + switch $do_what { + "preprocess" { + } + "assemble" { + } + "link" { + } + "run" { + # This is the only place where we care if an executable was + # created or not. If it was, dg.exp will try to run it. + catch "exec rm -f $output_file" + } + default { + perror "$do_what: not a valid dg-do keyword" + return "" + } + } + + # gas_start prepends $srcdir/$subdir so we must remove it from PROG + # if present. First remove extraneous //'s. + global srcdir subdir + set dir "$srcdir/$subdir" + regsub -all "//" $dir "/" dir + regsub -all "//" $prog "/" prog + if [string match "$dir/*" $prog] { + regsub "$dir" $prog "" prog + } + + # FIXME: This should be gas_start but it doesn't set comp_output. + return [gas_run $prog $tool_flags ""] +} + +proc gas-dg-prune { system text } { + #send_user "Before:$text\n" + regsub -all "(^|\n)\[^\n\]*: Assembler messages:\[^\n\]*" $text "" text + regsub -all "(^|\n)\[^\n\]*: End of file not at end\[^\n\]*Newline inserted." $text "" text + #send_user "After:$text\n" + + return $text +} |