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

📄 interrupt.exp

📁 这个是LINUX下的GDB调度工具的源码
💻 EXP
字号:
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000# 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-gdb@prep.ai.mit.eduif [target_info exists gdb,nointerrupts] {    verbose "Skipping interrupt.exp because of nointerrupts."    continue}if [target_info exists gdb,noinferiorio] {    verbose "Skipping interrupt.exp because of noinferiorio."    return}if $tracelevel then {	strace $tracelevel}set prms_id 0set bug_id 0set testfile interruptset srcfile ${testfile}.cset binfile ${objdir}/${subdir}/${testfile}if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."}gdb_startif ![file exists $binfile] then {    perror "$binfile does not exist."    return 0} else {    gdb_reinitialize_dir $srcdir/$subdir    gdb_load $binfile    # Hope this is unix :-)    gdb_test "shell stty intr '^C'" "" \	"set interrupt character in interrupt.exp"    if [runto_main] then {	send_gdb "continue\n"	gdb_expect {	    -re "\r\ntalk to me baby\r\n$" {		pass "child process is alive"	    }	    timeout { fail "run (timeout)" }	    eof { fail "run (eof)" }	}	# This should appear twice, once for the echo and once for the	# program's output.  Under dejagnu (but not interactively) for	# SunOS4, it only appears once.  Don't worry about it, I imagine	# dejagnu has just done something to the tty modes.	send_gdb "a\n"	gdb_expect {	    -re "^a\r\n(|a\r\n)$" {		pass "child process ate our char"	    }	    timeout { fail "echo a (timeout)" }	    eof { fail "echo a (eof)" }	}	# Wait until the program is in the read system call again.	sleep 2	# Cntrl-c may fail for simulator targets running on a BSD host.	# This is the result of a combination of the read syscall	# being restarted and gdb capturing the cntrl-c signal.	# Cntrl-c may fail for simulator targets on slow hosts.	# This is because there is a race condition between entering	# the read and delivering the cntrl-c.	send_gdb "\003"	gdb_expect {	    -re "Program received signal SIGINT.*$gdb_prompt $" {		pass "send_gdb control C"	    }	    -re ".*$gdb_prompt $" { fail "send_gdb control C" }	    timeout { fail "send_gdb control C (timeout)" }	    eof { fail "send_gdb control C (eof)" }	}	send_gdb "p func1 ()\n"	gdb_expect {	    -re " = 4.*$gdb_prompt $" { pass "call function when asleep" }	    -re ".*Program received signal SIG(SEGV|ILL).*$gdb_prompt $" {		setup_xfail "i*86-pc-linux*-gnu*"		fail "child died when we called func1, skipped rest of tests"		return	    }	    -re "$gdb_prompt $" {		# On HPUX-11.0 'send "p func1 ()"' above		# terminates the program. A defect is pending on this		# issue [defect #DTS CHFts24203]. Hence calling setup_xfail		# below.	        setup_xfail "hppa*-*-*11*" CHFts24203		fail "call function when asleep (wrong output)"	    }	    default {		# This fail probably happens whenever we use /proc (we		# don't use PRSABORT), but apparently also happens on		# other machines as well.		setup_xfail "sparc*-*-solaris2*"		setup_xfail "mips-*-ultrix*"		setup_xfail "i*86-*-solaris2*"		setup_xfail "*-*-sysv4*"		setup_xfail "vax-*-*"		setup_xfail "alpha-*-*"		setup_xfail "*-*-*bsd*"		setup_xfail "*-*-irix*"		setup_xfail "*-*-hpux*"		setup_xfail "*-*-*lynx*"		fail "call function when asleep (stays asleep)"		# Send_Gdb a newline to wake it up		send_gdb "\n"		gdb_test "" " = 4" "call function after waking it"	    }#	    eof { fail "call function when asleep (eof)" }	}	# Now try calling the function again.	gdb_test "p func1 ()" " = 4" "call function a second time"	# And the program should still be doing the same thing.	# The optional trailing \r\n is in case we sent a newline above	# to wake the program, in which case the program now sends it	# back.  We check for it either here or in the next gdb_expect	# command, because which one it ends up in is timing dependent.	send_gdb "continue\n"	# For some reason, i386-*-sysv4 gdb fails to issue the Continuing	# message, but otherwise appears normal (FIXME).	gdb_expect {	    -re "^continue\r\nContinuing.\r\n(\r\n|)$" { pass "continue" }	    -re "^continue\r\n\r\n" { fail "continue (missing Continuing.)" }	    -re "$gdb_prompt $" { fail "continue" }	    timeout { fail "continue (timeout)" }	    eof { fail "continue (eof)" }	}	send_gdb "data\n"	# The optional leading \r\n is in case we sent a newline above	# to wake the program, in which case the program now sends it	# back.        # FIXME: The pattern below leads to an expected success on HPUX-11.0        # but the success is spurious. Need to provide the right reg.expr.        # here.	gdb_expect {	    -re "^(\r\n|)data\r\n(|data\r\n)$" { pass "echo data" }	    timeout { fail "echo data (timeout)" }	    eof { fail "echo data (eof)" }	}	setup_xfail "i*86-pc-linux*-gnu*"	send_gdb "\004"	gdb_expect {	    -re "end of file.*Program exited normally.*$gdb_prompt $" {		pass "send end of file"	    }	    -re "$gdb_prompt $" { fail "send end of file" }	    timeout { fail "send end of file (timeout)" }	    eof { fail "send end of file (eof)" }	}    }}return 0

⌨️ 快捷键说明

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