From: Rob Savoye Date: Thu, 20 Jan 1994 23:30:51 +0000 (+0000) Subject: Tweak to work with either version of expect. Use the verbose function, fix X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fd9b8885e15eb48b73964dddfb110bf22074c5c6;p=binutils-gdb.git Tweak to work with either version of expect. Use the verbose function, fix gas_version. --- diff --git a/gas/testsuite/lib/gas-defs.exp b/gas/testsuite/lib/gas-defs.exp index 9669ee1e212..ad04a9959e8 100644 --- a/gas/testsuite/lib/gas-defs.exp +++ b/gas/testsuite/lib/gas-defs.exp @@ -21,7 +21,7 @@ proc gas_version {} { global AS - set tmp [exec $AS -version < /dev/null] + catch "exec $AS -version < /dev/null" tmp # Should find a way to discard constant parts, keep whatever's # left, so the version string could be almost anything at all... regexp " \[0-9\]\[0-9\.a-zA-Z-\]+" $tmp version @@ -32,38 +32,176 @@ proc gas_version {} { unset version } -proc gas_start { prog } { - global verbose +proc gas_run { prog as_opts redir } { global AS global ASFLAGS global comp_output + global srcdir + global subdir - if $verbose>1 then { - send_user "Executing $AS $ASFLAGS $prog\n" + verbose "Executing $AS $ASFLAGS $as_opts $prog $redir" + catch "exec $srcdir/lib/run $AS $ASFLAGS $as_opts $srcdir/$subdir/$prog $redir" comp_output +} + +proc all_ones { args } { + foreach x $args { if [expr $x!=1] { return 0 } } + return 1 +} + +proc gas_start { prog as_opts } { + global AS + global ASFLAGS + global srcdir + global subdir + global spawn_id + + verbose "Starting $AS $ASFLAGS $as_opts $prog" 2 + catch { + spawn -noecho -nottyinit $srcdir/lib/run $AS $ASFLAGS $as_opts $srcdir/$subdir/$prog + } foo + if ![regexp {^[0-9]+} $foo] then { + error "Can't run $subdir/$prog: $foo" } - catch "exec $AS $ASFLAGS $prog" comp_output +} + +proc gas_finish { } { + global spawn_id + +# Don't need to do anything? +} + +proc want_no_output { testname } { + global comp_output + if ![string match "" $comp_output] then { send_log "$comp_output\n" - if $verbose>1 then { - send_user "$comp_output\n" + verbose "$comp_output" 3 + } + if [string match "" $comp_output] then { + pass "$testname" + return 1 + } else { + fail "$testname" + return 0 + } +} + +proc gas_test_old { file as_opts testname } { + gas_run $file $as_opts "" + return [want_no_output $testname] +} + +proc gas_test { file as_opts var_opts testname } { + global comp_output + + set i 0 + foreach word $var_opts { + set ignore_stdout($i) [string match "*>" $word] + set opt($i) [string trim $word {>}] + incr i + } + set max [expr 1<<$i] + for {set i 0} {[expr $i<$max]} {incr i} { + set maybe_ignore_stdout "" + set extra_opts "" + for {set bit 0} {(1<<$bit)<$max} {incr bit} { + set num [expr 1<<$bit] + if [expr $i&$num] then { + set extra_opts "$extra_opts $opt($bit)" + if $ignore_stdout($bit) then { + set maybe_ignore_stdout "1>/dev/null" + } + } + } + set extra_opts [string trim $extra_opts] + gas_run $file "$as_opts $extra_opts" $maybe_ignore_stdout + + # Should I be able to use a conditional expression here? + if [string match "" $extra_opts] then { + want_no_output $testname + } else { + want_no_output "$testname ($extra_opts)" } } } -proc gas_test { arg testname } { - global verbose +proc gas_test_ignore_stdout { file as_opts testname } { global comp_output - gas_start $arg + gas_run $file $as_opts "2>&1 1>/dev/null" + want_no_output $testname +} + +proc gas_test_error { file as_opts testname } { + global comp_output + + gas_run $file $as_opts "2>&1 1>/dev/null" if ![string match "" $comp_output] then { send_log "$comp_output\n" - if $verbose>3 then { - send_user "|$comp_output|\n" - } + verbose "$comp_output" 3 } if [string match "" $comp_output] then { - pass "$testname" - } else { fail "$testname" + } else { + pass "$testname" + } +} + +proc gas_exit {} {} + +proc gas_init {} { + global target_cpu + global target_cpu_family + global target_family + global target_vendor + global target_os + global stdoptlist + + case "$target_cpu" in { + "m68???" { set target_cpu_family m68k } + "i[34]86" { set target_cpu_family i386 } + default { set target_cpu_family $target_cpu } } + + set target_family "$target_cpu_family-$target_vendor-$target_os" + set stdoptlist "-a>" + # Need to return an empty string. + return +} + +proc objdump_start_common { prog objdump_opts prefix } { + global OBJDUMP + global srcdir + global spawn_id + + verbose "Starting $OBJDUMP $objdump_opts $prog" 2 + catch { + spawn -noecho -nottyinit $srcdir/lib/run $OBJDUMP $objdump_opts $prefix$prog + } foo + if ![regexp {^[0-9]+} $foo] then { + error "Can't run $prog: $foo" + } +} + +proc objdump_start { prog opts } { + global subdir + global objdir + objdump_start_common $prog $opts "$objdir/$subdir/" +} + +proc objdump_start_no_subdir { prog opts } { + objdump_start_common $prog $opts "" +} + +proc objdump_finish { } { + global spawn_id + +# Don't need to do anything? +} + +expect_after { + timeout { error "timeout" } + "virtual memory exhausted" { error "virtual memory exhausted" } + buffer_full { error "buffer full" } + eof { error "eof" } }