diff options
author | Pedro Alves <pedro@codesourcery.com> | 2011-05-26 14:59:16 +0000 |
---|---|---|
committer | Pedro Alves <pedro@codesourcery.com> | 2011-05-26 14:59:16 +0000 |
commit | 47cd6407eed65f9fae56739b3062910734374705 (patch) | |
tree | 6cea7607972e09044d24c7268917b0e007c4d099 /gdb/testsuite/gdb.reverse/next-reverse-bkpt-over-sr.exp | |
parent | a5cb3b798438675cebbad414450347db27d853d4 (diff) | |
download | gdb-47cd6407eed65f9fae56739b3062910734374705.tar.gz |
2011-05-26 Pedro Alves <pedro@codesourcery.com>
gdb/
* breakpoint.h (enum bptype) <bp_hp_step_resume>: New.
(enum bpstat_what_main_action): Move BPSTAT_WHAT_STEP_RESUME
before BPSTAT_WHAT_STOP_SILENT. Add BPSTAT_WHAT_HP_STEP_RESUME
at the end.
* breakpoint.c (update_breakpoints_after_exec): Also delete hp
step-resume breakpoints.
(print_it_typical): Handle bp_hp_step_resume.
(bpstat_what): Ditto.
(bptype_string): Ditto.
(print_one_breakpoint_location): Ditto.
(allocate_bp_location): Ditto.
(mention): Ditto.
(breakpoint_re_set_one): Ditto.
* infrun.c (handle_inferior_event): Adjust. Split
BPSTAT_WHAT_STEP_RESUME handling in BPSTAT_WHAT_STEP_RESUME and
BPSTAT_WHAT_HP_STEP_RESUME.
(insert_step_resume_breakpoint_at_sal): Rename to ...
(insert_step_resume_breakpoint_at_sal_1): ... this. Add bptype
parameter. Handle it.
(insert_step_resume_breakpoint_at_sal): Reimplement on top of
insert_step_resume_breakpoint_at_sal_1.
(insert_step_resume_breakpoint_at_frame): Rename to ...
(insert_hp_step_resume_breakpoint_at_frame): ... this. Adjust to
set a high-priority step-resume breakpoint.
(insert_step_resume_breakpoint_at_frame): Adjust comment.
(insert_step_resume_breakpoint_at_caller): Ditto.
gdb/testsuite/
* gdb.reverse/next-reverse-bkpt-over-sr.exp: New test.
Diffstat (limited to 'gdb/testsuite/gdb.reverse/next-reverse-bkpt-over-sr.exp')
-rw-r--r-- | gdb/testsuite/gdb.reverse/next-reverse-bkpt-over-sr.exp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.reverse/next-reverse-bkpt-over-sr.exp b/gdb/testsuite/gdb.reverse/next-reverse-bkpt-over-sr.exp new file mode 100644 index 00000000000..9a95dca1ced --- /dev/null +++ b/gdb/testsuite/gdb.reverse/next-reverse-bkpt-over-sr.exp @@ -0,0 +1,58 @@ +# 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. It tests reverse stepping. +# Lots of code borrowed from "step-test.exp". + +# +# reverse-next over a function call sets a step-resume breakpoint at +# callee's entry point, runs to it, and then does an extra single-step +# to get at the callee's caller. Test that a user breakpoint set at +# the same location as the step-resume breakpoint isn't ignored. +# + +if ![target_info exists gdb,can_reverse] { + return +} + +set testfile "next-reverse-bkpt-over-sr" +set srcfile step-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 lineno [gdb_get_line_number "STEP INTO THIS CALL"] +gdb_test "advance $lineno" ".*STEP INTO THIS CALL.*" "get past callee call" + +gdb_test "b \*callee" "" "set breakpoint at callee's entry" + +gdb_test "reverse-next" \ + "Breakpoint.*, callee.*ENTER CALLEE.*" \ + "reverse-next over call trips user breakpoint at function entry" + +gdb_test "up" \ + ".*NEXT OVER THIS CALL.*" \ + "stopped at the right callee call" |