Index: gdb/testsuite/gdb.reverse/sigall-precsave.exp |
diff --git a/gdb/testsuite/gdb.reverse/sigall-precsave.exp b/gdb/testsuite/gdb.reverse/sigall-precsave.exp |
index 465e3ccb82b78714551225ad804cc8a3b0d1696d..1748586255f45f9bc01b3c4cf3e62148786be02c 100644 |
--- a/gdb/testsuite/gdb.reverse/sigall-precsave.exp |
+++ b/gdb/testsuite/gdb.reverse/sigall-precsave.exp |
@@ -1,4 +1,4 @@ |
-# Copyright 2009-2012 Free Software Foundation, Inc. |
+# Copyright 2009-2013 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 |
@@ -34,10 +34,6 @@ if {[build_executable $testfile.exp $testfile $srcfile debug] == -1} { |
return -1 |
} |
-# Make the first signal SIGABRT because it is always supported. |
-set sig_supported 1 |
-set thissig "ABRT" |
- |
proc test_one_sig {nextsig} { |
global sig_supported |
global gdb_prompt |
@@ -182,7 +178,108 @@ gdb_test "break $breakloc" \ |
# Signal handlers must be disabled |
gdb_test "handle all nostop noprint" |
-gdb_test "continue" "Breakpoint .* end of main .*" "run to end of main" |
+# The list of signals that the program generates, in the order they |
+# are generated. |
+set signals { |
+ ABRT |
+ HUP |
+ QUIT |
+ ILL |
+ EMT |
+ FPE |
+ BUS |
+ SEGV |
+ SYS |
+ PIPE |
+ ALRM |
+ URG |
+ TSTP |
+ CONT |
+ CHLD |
+ TTIN |
+ TTOU |
+ IO |
+ XCPU |
+ XFSZ |
+ VTALRM |
+ PROF |
+ WINCH |
+ LOST |
+ USR1 |
+ USR2 |
+ PWR |
+ POLL |
+ WIND |
+ PHONE |
+ WAITING |
+ LWP |
+ DANGER |
+ GRANT |
+ RETRACT |
+ MSG |
+ SOUND |
+ SAK |
+ PRIO |
+ 33 |
+ 34 |
+ 35 |
+ 36 |
+ 37 |
+ 38 |
+ 39 |
+ 40 |
+ 41 |
+ 42 |
+ 43 |
+ 44 |
+ 45 |
+ 46 |
+ 47 |
+ 48 |
+ 49 |
+ 50 |
+ 51 |
+ 52 |
+ 53 |
+ 54 |
+ 55 |
+ 56 |
+ 57 |
+ 58 |
+ 59 |
+ 60 |
+ 61 |
+ 62 |
+ 63 |
+ TERM |
+} |
+ |
+# Software single-step targets can't step into signal handlers. Since |
+# later, when replaying the execution log, the test wants to set |
+# breakpoints on handlers, we need to make sure that while recording, |
+# GDB steps through the handlers too, so that the execution log covers |
+# them. Setting breakpoints in all handlers takes care of it. This |
+# is harmless for hardware-step targets. |
+foreach sig $signals { |
+ set test "break *handle_$sig" |
+ gdb_test_multiple $test $test { |
+ -re "Breakpoint .*$gdb_prompt $" { |
+ # No need to record a pass for each breakpoint. |
+ } |
+ } |
+} |
+ |
+gdb_test_multiple "continue" "continue" { |
+ -re "Breakpoint .* end of main .*$gdb_prompt $" { |
+ pass "run to end of main" |
+ } |
+ -re "Breakpoint .* handle_.*$gdb_prompt $" { |
+ send_gdb "continue\n" |
+ exp_continue |
+ } |
+} |
+ |
+delete_breakpoints |
gdb_test "record save $precsave" \ |
"Saved core file $precsave with execution log\." \ |
@@ -198,77 +295,14 @@ gdb_test "record restore $precsave" \ |
# Signal handlers must be re-enabled |
gdb_test "handle all stop print" |
+# Make the first signal SIGABRT because it is always supported. |
+set sig_supported 1 |
+set thissig "ABRT" |
+ |
# test signal handling |
-test_one_sig HUP |
-test_one_sig QUIT |
-test_one_sig ILL |
-test_one_sig EMT |
-test_one_sig FPE |
-test_one_sig BUS |
-test_one_sig SEGV |
-test_one_sig SYS |
-test_one_sig PIPE |
-test_one_sig ALRM |
-test_one_sig URG |
-test_one_sig TSTP |
-test_one_sig CONT |
-test_one_sig CHLD |
-test_one_sig TTIN |
-test_one_sig TTOU |
-test_one_sig IO |
-test_one_sig XCPU |
-test_one_sig XFSZ |
-test_one_sig VTALRM |
-test_one_sig PROF |
-test_one_sig WINCH |
-test_one_sig LOST |
-test_one_sig USR1 |
-test_one_sig USR2 |
-test_one_sig PWR |
-test_one_sig POLL |
-test_one_sig WIND |
-test_one_sig PHONE |
-test_one_sig WAITING |
-test_one_sig LWP |
-test_one_sig DANGER |
-test_one_sig GRANT |
-test_one_sig RETRACT |
-test_one_sig MSG |
-test_one_sig SOUND |
-test_one_sig SAK |
-test_one_sig PRIO |
-test_one_sig 33 |
-test_one_sig 34 |
-test_one_sig 35 |
-test_one_sig 36 |
-test_one_sig 37 |
-test_one_sig 38 |
-test_one_sig 39 |
-test_one_sig 40 |
-test_one_sig 41 |
-test_one_sig 42 |
-test_one_sig 43 |
-test_one_sig 44 |
-test_one_sig 45 |
-test_one_sig 46 |
-test_one_sig 47 |
-test_one_sig 48 |
-test_one_sig 49 |
-test_one_sig 50 |
-test_one_sig 51 |
-test_one_sig 52 |
-test_one_sig 53 |
-test_one_sig 54 |
-test_one_sig 55 |
-test_one_sig 56 |
-test_one_sig 57 |
-test_one_sig 58 |
-test_one_sig 59 |
-test_one_sig 60 |
-test_one_sig 61 |
-test_one_sig 62 |
-test_one_sig 63 |
-test_one_sig TERM |
+foreach sig [lrange $signals 1 end] { |
+ test_one_sig $sig |
+} |
# The last signal (SIGTERM) gets handled slightly differently because |
# we are not setting up for another test. |
@@ -282,149 +316,14 @@ gdb_test "continue" "Breakpoint.*handle_TERM.*" "send signal TERM" |
gdb_test "continue" " end of main .*" "continue to sigall exit" |
-test_one_sig_reverse TERM |
-test_one_sig_reverse 63 |
-test_one_sig_reverse 62 |
-test_one_sig_reverse 61 |
-test_one_sig_reverse 60 |
-test_one_sig_reverse 59 |
-test_one_sig_reverse 58 |
-test_one_sig_reverse 57 |
-test_one_sig_reverse 56 |
-test_one_sig_reverse 55 |
-test_one_sig_reverse 54 |
-test_one_sig_reverse 53 |
-test_one_sig_reverse 52 |
-test_one_sig_reverse 51 |
-test_one_sig_reverse 50 |
-test_one_sig_reverse 49 |
-test_one_sig_reverse 48 |
-test_one_sig_reverse 47 |
-test_one_sig_reverse 46 |
-test_one_sig_reverse 45 |
-test_one_sig_reverse 44 |
-test_one_sig_reverse 43 |
-test_one_sig_reverse 42 |
-test_one_sig_reverse 41 |
-test_one_sig_reverse 40 |
-test_one_sig_reverse 39 |
-test_one_sig_reverse 38 |
-test_one_sig_reverse 37 |
-test_one_sig_reverse 36 |
-test_one_sig_reverse 35 |
-test_one_sig_reverse 34 |
-test_one_sig_reverse 33 |
-test_one_sig_reverse PRIO |
-test_one_sig_reverse SAK |
-test_one_sig_reverse SOUND |
-test_one_sig_reverse MSG |
-test_one_sig_reverse RETRACT |
-test_one_sig_reverse GRANT |
-test_one_sig_reverse DANGER |
-test_one_sig_reverse LWP |
-test_one_sig_reverse WAITING |
-test_one_sig_reverse PHONE |
-test_one_sig_reverse WIND |
-test_one_sig_reverse POLL |
-test_one_sig_reverse PWR |
-test_one_sig_reverse USR2 |
-test_one_sig_reverse USR1 |
-test_one_sig_reverse LOST |
-test_one_sig_reverse WINCH |
-test_one_sig_reverse PROF |
-test_one_sig_reverse VTALRM |
-test_one_sig_reverse XFSZ |
-test_one_sig_reverse XCPU |
-test_one_sig_reverse IO |
-test_one_sig_reverse TTOU |
-test_one_sig_reverse TTIN |
-test_one_sig_reverse CHLD |
-test_one_sig_reverse CONT |
-test_one_sig_reverse TSTP |
-test_one_sig_reverse URG |
-test_one_sig_reverse ALRM |
-test_one_sig_reverse PIPE |
-test_one_sig_reverse SYS |
-test_one_sig_reverse SEGV |
-test_one_sig_reverse BUS |
-test_one_sig_reverse FPE |
-test_one_sig_reverse EMT |
-test_one_sig_reverse ILL |
-test_one_sig_reverse QUIT |
-test_one_sig_reverse HUP |
-test_one_sig_reverse ABRT |
+foreach sig [lreverse $signals] { |
+ test_one_sig_reverse $sig |
+} |
# Make the first signal SIGABRT because it is always supported. |
set sig_supported 1 |
set thissig "ABRT" |
-test_one_sig HUP |
-test_one_sig QUIT |
-test_one_sig ILL |
-test_one_sig EMT |
-test_one_sig FPE |
-test_one_sig BUS |
-test_one_sig SEGV |
-test_one_sig SYS |
-test_one_sig PIPE |
-test_one_sig ALRM |
-test_one_sig URG |
-test_one_sig TSTP |
-test_one_sig CONT |
-test_one_sig CHLD |
-test_one_sig TTIN |
-test_one_sig TTOU |
-test_one_sig IO |
-test_one_sig XCPU |
-test_one_sig XFSZ |
-test_one_sig VTALRM |
-test_one_sig PROF |
-test_one_sig WINCH |
-test_one_sig LOST |
-test_one_sig USR1 |
-test_one_sig USR2 |
-test_one_sig PWR |
-test_one_sig POLL |
-test_one_sig WIND |
-test_one_sig PHONE |
-test_one_sig WAITING |
-test_one_sig LWP |
-test_one_sig DANGER |
-test_one_sig GRANT |
-test_one_sig RETRACT |
-test_one_sig MSG |
-test_one_sig SOUND |
-test_one_sig SAK |
-test_one_sig PRIO |
-test_one_sig 33 |
-test_one_sig 34 |
-test_one_sig 35 |
-test_one_sig 36 |
-test_one_sig 37 |
-test_one_sig 38 |
-test_one_sig 39 |
-test_one_sig 40 |
-test_one_sig 41 |
-test_one_sig 42 |
-test_one_sig 43 |
-test_one_sig 44 |
-test_one_sig 45 |
-test_one_sig 46 |
-test_one_sig 47 |
-test_one_sig 48 |
-test_one_sig 49 |
-test_one_sig 50 |
-test_one_sig 51 |
-test_one_sig 52 |
-test_one_sig 53 |
-test_one_sig 54 |
-test_one_sig 55 |
-test_one_sig 56 |
-test_one_sig 57 |
-test_one_sig 58 |
-test_one_sig 59 |
-test_one_sig 60 |
-test_one_sig 61 |
-test_one_sig 62 |
-test_one_sig 63 |
-test_one_sig TERM |
+foreach sig [lrange $signals 1 end] { |
+ test_one_sig $sig |
+} |