| # Define gas callbacks for dg.exp. |
| # Copyright (C) 2012-2021 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 |
| } |