|  | # 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. | 
|  | 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 | 
|  | } |