diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 593eae8bfd..2e5d2486b0 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-07-19 Pedro Alves + + * gdb.reverse/sigall-precsave.exp: Set a breakpoint at each signal + handler before recording. + 2012-07-19 Tom Tromey * 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 e2dabf94ac..ee3240b65c 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\." \