2004-09-08 Andrew Cagney <cagney@gnu.org>

* gdb.base/signals.exp (signal_tests_1): Delete.  Merge signal
	delivery test with duplicate at end of file.
This commit is contained in:
Andrew Cagney 2004-09-08 22:00:47 +00:00
parent 7b90c3f96e
commit e05b62ac69
2 changed files with 9 additions and 115 deletions

View File

@ -1,3 +1,8 @@
2004-09-08 Andrew Cagney <cagney@gnu.org>
* gdb.base/signals.exp (signal_tests_1): Delete. Merge signal
delivery test with duplicate at end of file.
2004-09-06 Mark Kettenis <kettenis@jive.nl>
* gdb.base/unload.exp: Link with -dl on *-*-solaris*.

View File

@ -45,116 +45,6 @@ if {$hp_cc_compiler} {
set void void
}
proc signal_tests_1 {} {
global gdb_prompt
if [runto_main] then {
gdb_test "next" "signal \\(SIGUSR1.*" \
"next over signal call; SIGALRM handler"
gdb_test "next" "alarm \\(.*" \
"next over signal call; SIGUSR1 handler"
# Set up an alarm, wait for it to be come pending then do a
# next to see what happens.
gdb_test "next" "\\+\\+count; /\\* first \\*/" \
"next over 1st alarm"
sleep 2
gdb_test "next" "alarm .*" \
"next over first count and SIGALRM to 2nd alarm"
# Now do the same thing but with a breakpoint in the SIGALRM
# handler so that we stop there.
gdb_test "break handler" "Breakpoint \[0-9\]+ .*"
gdb_test "next" "\\+\\+count; /\\* second \\*/" \
"next over 2nd alarm"
sleep 2
gdb_test "next" "Breakpoint.*handler.*" \
"next over second count, but jump to handler"
gdb_test "backtrace" \
"#0.*handler.*#1.*signal handler.*#2.* main .*" \
"backtrace for 2nd alarm"
# Let the signal handler return allowing main to advance to
# func1.
gdb_test "break func1" "Breakpoint \[0-9\]+ .*"
gdb_test "break func2" "Breakpoint \[0-9\]+ .*"
gdb_test "continue" "Breakpoint.*func1.*" "continue to func1"
# While still in func1, force a signal, check the backtrace.
gdb_test "signal SIGUSR1" "Breakpoint.*handler.*"
gdb_test "bt" \
"#0 handler .*#1 .signal handler called.*#2 func1 .*\#3 .*main.*" \
"backtrace for SIGUSR1"
# The problem here is that the breakpoint at func1 will be
# inserted, and when the system finishes with the signal
# handler it will try to execute there. For GDB to try to
# remember that it was going to step over a breakpoint when a
# signal happened, distinguish this case from the case where
# func1 is called from the signal handler, etc., seems
# exceedingly difficult. So don't expect this to get fixed
# anytime soon.
setup_xfail "*-*-*"
set test "continue to func2"
gdb_test_multiple "continue" "$test" {
-re "Breakpoint.*func2.*$gdb_prompt $" {
pass "$test"
}
-re "Breakpoint.*func1.*$gdb_prompt $" {
fail "$test"
gdb_test "continue" "Breakpoint.*func2.*" \
"extra continue to func2"
}
}
# In running to func2, the 2rd alarm call will have been set
# up, let it be delivered.
# This doesn't work correctly on platforms with hardware single
# step...
sleep 2
setup_kfail "i*86-*-*" gdb/1738
setup_kfail "x86_64-*-*" gdb/1738
setup_kfail "rs6000-*-*" gdb/1738
setup_kfail "powerpc-*-*" gdb/1738
setup_kfail "sparc-*-*" gdb/1738
gdb_test "continue" "Breakpoint.*handler.*" \
"continue to handler for 3rd alarm call"
setup_kfail "i*86-*-*" gdb/1738
setup_kfail "x86_64-*-*" gdb/1738
setup_kfail "rs6000-*-*" gdb/1738
setup_kfail "powerpc-*-*" gdb/1738
setup_kfail "sparc-*-*" gdb/1738
gdb_test "backtrace" \
"#0 handler.*#1.*signal handler called.*#2 func2.*#3.*main.*" \
"backtrace for 3rd alarm"
# If we succeeded a continue will return from the handler to
# func2. GDB now has `forgotten' that it intended to step
# over the breakpoint at func2 and will stop at func2.
setup_xfail "*-*-*"
set test "continue to program exit"
gdb_test_multiple "continue" "$test" {
-re "Program exited with code 010\\." {
pass "$test"
}
-re "Breakpoint.*func2.*$gdb_prompt $" {
fail "$test"
gdb_test "continue" "Program exited with code 010\\." \
"extra continue to program exit"
}
}
}
}
gdb_exit
gdb_start
@ -185,7 +75,6 @@ gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load $binfile
signal_tests_1
if [runto_main] then {
@ -378,10 +267,10 @@ The program being debugged stopped while in a function called from GDB.*" \
# the inferior. (This probably causes the inferior to run away.
# Be prepared to rerun to main for further testing.)
gdb_test "signal 5" \
"Continuing with signal SIGTRAP.*" \
"sent signal 5"
gdb_test "signal SIGUSR1" "Breakpoint.*handler.*"
gdb_test "bt" \
"#0 handler .*#1 .signal handler called.*\#2 .*main.*" \
"backtrace for SIGUSR1"
}
return 0