⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rvc.exp

📁 gdb-6.8 Linux下的调试程序 最新版本
💻 EXP
字号:
# Copyright (C) 2006, 2007, 2008 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, see <http://www.gnu.org/licenses/>.# Miscellaneous CRIS simulator testcases in assembly code, testing# dv-rv.c and dv-cris.c functions.# Check whether dv-rv and dv-cris are present.proc sim_has_rv_and_cris {} {    global srcdir    global subdir    global SIMFLAGS    global global_as_options    global global_ld_options    global global_sim_options    # We need to assemble and link a trivial program and pass that, in    # order to test successful exit.    # A bit of duplication here for the assembling and linking part;    # what we want to do it to run the simulator without affecting the    # PASS/FAIL counters, and we can use e.g. run_sim_test for that.    if ![info exists global_as_options] {        set global_as_options ""    }    if ![info exists global_ld_options] {        set global_ld_options ""    }    if ![info exists global_sim_options] {        set global_sim_options ""    }    set comp_output [target_assemble $srcdir/$subdir/quit.s quit.o \			 "-I$srcdir/$subdir $global_as_options"]    if ![string match "" $comp_output] {	verbose -log "$comp_output" 3	fail "rv sim test setup (assembling)"	return 0    }    set comp_output [target_link quit.o quit.x "$global_ld_options"]    if ![string match "" $comp_output] {	verbose -log "$comp_output" 3	fail "rv sim test setup (linking)"	return 0    }    set result \	[sim_run quit.x \	     "$global_sim_options --hw-device rv --hw-device cris --hw-info" \	     "" "" ""]    set return_code [lindex $result 0]    set output [lindex $result 1]    if { "$return_code" == "pass" } {	return 1    }    return 0}# Similar to slurp_options, but lines are fixed format "^#r ..." (not# "^#{ws}*r:{ws}+" to avoid intruding on slurp_options syntax).  Only# trailing whitespace of the "..." is trimmed.  Beware that lines# including parameters may not contain ":".proc slurp_rv { file } {    if [catch { set f [open $file r] } x] {	#perror "couldn't open `$file': $x"	perror "$x"	return -1    }    set rv_array {}    # whitespace expression    set ws  {[ 	]*}    # whitespace is ignored at the end of a line.    set pat "^#r (.*)$ws\$"    # Allow arbitrary lines until the first option is seen.    set seen_opt 0    while { [gets $f line] != -1 } {	set line [string trim $line]	# Whitespace here is space-tab.	if [regexp $pat $line xxx cmd] {	    # match!	    lappend rv_array $cmd	    set seen_opt 1	} else {	    if { $seen_opt } {		break	    }	}    }    close $f    return $rv_array}# The main test loop.if [istarget cris*-*-*] {    global ASFLAGS_FOR_TARGET    set has_rv_and_cris [sim_has_rv_and_cris]    global global_as_options    global global_ld_options    global global_sim_options    set saved_global_sim_options $global_sim_options    set saved_global_ld_options $global_ld_options    set rvdummy "[file dirname [board_info target sim]]/rvdummy"    # All machines we test and the corresponding assembler option.    # We'll only ever test v10 and higher here.    set combos {{"crisv10" "--march=v10 --no-mul-bug-abort"}                {"crisv32" "--march=v32"}}    # We need to pass different assembler flags for each machine.    # Specifying it here rather than adding a specifier to each and every    # test-file is preferrable.    foreach combo $combos {	set mach [lindex $combo 0]	set ASFLAGS_FOR_TARGET "[lindex $combo 1]"	# The .ms suffix is for "miscellaneous .s".	foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.ms]] {	    # If we're only testing specific files and this isn't one of them,	    # skip it.	    if ![runtest_file_p $runtests $src] {		continue	    }	    # Whoever runs the test should be alerted that not all	    # testcases have been checked; that's why we do the loop	    # and don't just return at the top.	    if !$has_rv_and_cris {		untested $src		continue	    }	    set sim_defaults "--hw-file $srcdir/$subdir/std.dev"	    set ld_defaults "--section-start=.text=0"	    # We parse options an extra time besides in run_sim_test,	    # to determine if our defaults should be overridden.	    set opt_array [slurp_options $src]	    foreach i $opt_array {		set opt_name [lindex $i 0]		set opt_machs [lindex $i 1]		set opt_val [lindex $i 2]		# Allow concatenating to the default options by		# specifying a mach.		if { $opt_name == "sim" && $opt_machs == "" } {		    set sim_defaults ""		}		if { $opt_name == "ld" && $opt_machs == "" } {		    set ld_defaults ""		}	    }	    set rvdummy_id -1	    set hostcmds [slurp_rv $src]	    if { $hostcmds != "" } {		# I guess we could ask to have rvdummy executed on a		# remote host, but it looks like too much trouble for		# a feature rarely used.		if [is_remote host] {		    untested $src		    continue		}		set src_components [file split $src]		set rvfile "[lindex $src_components \			    [expr [llength $src_components] - 1]].r"		if [catch { set f [open $rvfile w] } x] {		    error "$x"		} {		    set contents [join $hostcmds "\n"]		    # Make it possible to use files from the test		    # source directory; expected with the @-command.		    regsub -all "@srcdir@" $contents "$srcdir/$subdir" contents		    verbose "rv: $contents" 2		    puts $f $contents		    close $f		}		spawn -noecho $rvdummy "$rvfile"		if { $spawn_id < 0 } {		    error "Couldn't spawn $rvdummy"		    continue		}		set rvdummy_id $spawn_id	    }	    # Unfortunately this seems like the only way to pass	    # additional sim, ld etc. options to run_sim_test.	    set global_sim_options "$saved_global_sim_options $sim_defaults"	    set global_ld_options "$saved_global_ld_options $ld_defaults"	    run_sim_test $src $mach	    set global_sim_options $saved_global_sim_options	    set global_ld_options $saved_global_ld_options	    # Stop the rvdummy, if it's still running.  We need to	    # wait on it anyway to avoid it turning into a zombie.	    if { $rvdummy_id != -1 } {		close -i $rvdummy_id		wait -i $rvdummy_id		# Gleaned from framework.exp, this seems an indicator		# to whether the test had expected outcome.  If so, we		# want to remove the rv-file.		if { $exit_status == 0 } {		    file delete $rvfile		}	    }	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -