# Define gas callbacks for dg.exp. # Copyright 2012 # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. 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. remote_file host delete "$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] { # We use (?q) to treat $dir as a literal. regsub "(?q)$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 }