diff options
author | Pedro Alves <palves@redhat.com> | 2011-05-26 15:32:38 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2011-05-26 15:32:38 +0000 |
commit | 9da8c2a0faa07d6b876397bdb3e87509897c68cd (patch) | |
tree | 019d3043a8d4b7bab81bda6fa527f34e1f9bb1c2 /gdb/testsuite/gdb.reverse | |
parent | 2c03e5bed3ac8158eaae4621f4b4550e4ab6d4ef (diff) | |
download | gdb-9da8c2a0faa07d6b876397bdb3e87509897c68cd.zip gdb-9da8c2a0faa07d6b876397bdb3e87509897c68cd.tar.gz gdb-9da8c2a0faa07d6b876397bdb3e87509897c68cd.tar.bz2 |
2011-05-26 Pedro Alves <pedro@codesourcery.com>
gdb/
* infcmd.c (finish_backward): Set a step-resume breakpoint at the
function's entry point instead of a manually managed momentary
breakpoint, and only ever issue one proceed call.
* infrun.c (handle_inferior_event) <BPSTAT_WHAT_STEP_RESUME>: If
doing a reverse-finish, switch to stepi mode, to do another step.
(insert_step_resume_breakpoint_at_sal): Make public.
(normal_stop): No need to save function value return registers if
going reverse.
* inferior.h (insert_step_resume_breakpoint_at_sal): Declare.
gdb/testsuite/
* gdb.reverse/finish-reverse-bkpt.exp: New test.
Diffstat (limited to 'gdb/testsuite/gdb.reverse')
-rw-r--r-- | gdb/testsuite/gdb.reverse/finish-reverse-bkpt.exp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.reverse/finish-reverse-bkpt.exp b/gdb/testsuite/gdb.reverse/finish-reverse-bkpt.exp new file mode 100644 index 0000000..09f6837 --- /dev/null +++ b/gdb/testsuite/gdb.reverse/finish-reverse-bkpt.exp @@ -0,0 +1,57 @@ +# Copyright 2008, 2009, 2010, 2011 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 3 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, see <http://www.gnu.org/licenses/>. + +# This file is part of the GDB testsuite. +# +# 'reverse-finish' used to have a bug where user breakpoints set at +# the functions entry would be ignored. Make sure the bug doesn't +# reappear. + +if ![target_info exists gdb,can_reverse] { + return +} + +set testfile "finish-reverse-bkpt" +set srcfile finish-reverse.c + +if { [prepare_for_testing $testfile.exp "$testfile" $srcfile] } { + return -1 +} + +if ![runto_main] then { + fail "Can't run to main" + return 0 +} + +if [target_info exists gdb,use_precord] { + # Activate process record/replay + gdb_test_no_output "record" "Turn on process record" +} + +set breakloc [gdb_get_line_number "VOID FUNC" "$srcfile"] +gdb_test "break void_func" \ + "Breakpoint $decimal at .*/$srcfile, line $breakloc\." \ + "set breakpoint on void_func" +gdb_continue_to_breakpoint "void_func" ".*/$srcfile:$breakloc.*" + +gdb_test "break \*void_func" \ + "Breakpoint $decimal at .*" \ + "set breakpoint at void_func's entry" + +gdb_test "reverse-finish" \ + ".*Breakpoint .*, void_func.*" \ + "reverse-finish from void_func trips breakpoint at entry" + +gdb_test "frame" "#0 void_func.*" "no spurious proceed after breakpoint stop" |