diff options
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.reverse/sigall-precsave.exp | 27 |
2 files changed, 31 insertions, 1 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 593eae8..2e5d248 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-07-19 Pedro Alves <palves@redhat.com> + + * gdb.reverse/sigall-precsave.exp: Set a breakpoint at each signal + handler before recording. + 2012-07-19 Tom Tromey <tromey@redhat.com> * gdb.cp/casts.exp: Add tests for typeof and decltype. diff --git a/gdb/testsuite/gdb.reverse/sigall-precsave.exp b/gdb/testsuite/gdb.reverse/sigall-precsave.exp index e2dabf9..ee3240b 100644 --- a/gdb/testsuite/gdb.reverse/sigall-precsave.exp +++ b/gdb/testsuite/gdb.reverse/sigall-precsave.exp @@ -254,7 +254,32 @@ set signals { TERM } -gdb_test "continue" "Breakpoint .* end of main .*" "run to end of main" +# 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\." \ |