diff options
author | Richard Henderson <rth@redhat.com> | 1999-05-03 07:29:11 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 1999-05-03 07:29:11 +0000 |
commit | 252b5132c753830d5fd56823373aed85f2a0db63 (patch) | |
tree | 1af963bfd8d3e55167b81def4207f175eaff3a56 /binutils/testsuite/lib | |
download | gdb-252b5132c753830d5fd56823373aed85f2a0db63.zip gdb-252b5132c753830d5fd56823373aed85f2a0db63.tar.gz gdb-252b5132c753830d5fd56823373aed85f2a0db63.tar.bz2 |
19990502 sourceware importbinu_ss_19990502
Diffstat (limited to 'binutils/testsuite/lib')
-rw-r--r-- | binutils/testsuite/lib/utils-lib.exp | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/binutils/testsuite/lib/utils-lib.exp b/binutils/testsuite/lib/utils-lib.exp new file mode 100644 index 0000000..e27f217 --- /dev/null +++ b/binutils/testsuite/lib/utils-lib.exp @@ -0,0 +1,161 @@ +# Copyright (C) 1993, 1994, 1997 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-dejagnu@prep.ai.mit.edu + +# This file was written by Rob Savoye <rob@cygnus.com> +# and extended by Ian Lance Taylor <ian@cygnus.com> + +proc binutil_version { prog } { + if ![is_remote host] { + set path [which $prog]; + if {$path == 0} then { + perror "$prog can't be run, file not found." + return "" + } + } else { + set path $prog + } + set state [remote_exec host $prog --version]; + set tmp "[lindex $state 1]\n"; + # Should find a way to discard constant parts, keep whatever's + # left, so the version string could be almost anything at all... + regexp "\[^\n\]* (cygnus-|)(\[-0-9.a-zA-Z-\]+)\[\r\n\].*" "$tmp" version cyg number + if ![info exists number] then { + return "$path (no version number)\n" + } + return "$path $number\n" +} + +# +# default_binutils_run +# run a program, returning the output +# sets binutils_run_failed if the program does not exist +# +proc default_binutils_run { prog progargs } { + global binutils_run_failed + global host_triplet + + set binutils_run_failed 0 + + if ![is_remote host] { + if {[which $prog] == 0} then { + perror "$prog does not exist" + set binutils_run_failed 1 + return "" + } + } + + send_log "$prog $progargs\n" + verbose "$prog $progargs" + + # Gotta quote dollar-signs because they get mangled by the + # shell otherwise. + regsub -all "\\$" "$progargs" "\\$" progargs + + set state [remote_exec host $prog $progargs] + set exec_output [prune_warnings [lindex $state 1]]; + if {![string match "" $exec_output]} then { + send_log "$exec_output\n" + verbose "$exec_output" + } + return $exec_output +} + +# +# default_binutils_assemble +# assemble a file +# +proc default_binutils_assemble { source object } { + global srcdir + global host_triplet + + # The HPPA assembler syntax is a little different than most, to make + # the test source file assemble we need to run it through sed. + # + # This is a hack in that it won't scale well if other targets need + # similar transformations to assemble. We'll generalize the hack + # if/when other targets need similar handling. + if [istarget "hppa*-*-*" ] then { + send_log "sed -f $srcdir/config/hppa.sed < $source > asm.s\n" + verbose "sed -f $srcdir/config/hppa.sed < $source > asm.s" + catch "exec sed -f $srcdir/config/hppa.sed < $source > asm.s"; + set source asm.s + } + + set exec_output [target_assemble $source $object ""]; + set exec_output [prune_warnings $exec_output] + + if [string match "" $exec_output] { + return 1 + } else { + send_log "$exec_output\n" + verbose "$exec_output" + perror "$source: assembly failed" + return 0 + } +} + +if ![info exists target_assemble] { +# +# Stolen from dejagnu/lib/target.exp--please remove after 1/1/98. +# +uplevel #0 { + proc target_assemble { source destfile flags } { + return [default_target_assemble $source $destfile $flags]; + } + + proc default_target_assemble { source destfile flags } { + global AS_FOR_TARGET; + global ASFLAGS_FOR_TARGET; + + if [info exists AS_FOR_TARGET] { + set AS "$AS_FOR_TARGET"; + } else { + if ![board_info target exists assembler] { + set AS [find_gas]; + } else { + set AS [board_info target assembler]; + } + } + + if [info exists ASFLAGS_FOR_TARGET] { + append flags " $ASFLAGS_FOR_TARGET"; + } + + if [is_remote host] { + set source [remote_download host $source]; + set dest "a.out" + } else { + set dest $destfile + } + set status [remote_exec host "$AS $source $flags -o $dest"] + if [is_remote host] { + remote_upload host $dest $destfile + } + + set comp_output [prune_warnings [lindex $status 1]]; + if { [lindex $status 0] != 0 } { + verbose -log "assembler exited with status [lindex $status 0]"; + } + if { [lindex $status 1] != "" } { + verbose -log "assembler output is:\n[lindex $status 1]" 2; + } + return ${comp_output}; +} +} +} |