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.
This commit is contained in:
Pedro Alves
2011-05-26 14:59:18 +00:00
parent 51be5b68a5
commit 2c03e5bed3
6 changed files with 173 additions and 36 deletions

View File

@ -68,10 +68,13 @@ enum bptype
bp_exception_resume,
/* Used by wait_for_inferior for stepping over subroutine calls,
for stepping over signal handlers, and for skipping
prologues. */
and for skipping prologues. */
bp_step_resume,
/* Used by wait_for_inferior for stepping over signal
handlers. */
bp_hp_step_resume,
/* Used to detect when a watchpoint expression has gone out of
scope. These breakpoints are usually not visible to the user.
@ -721,6 +724,9 @@ enum bpstat_what_main_action
BPSTAT_WHAT_KEEP_CHECKING. */
BPSTAT_WHAT_CLEAR_LONGJMP_RESUME,
/* Clear step resume breakpoint, and keep checking. */
BPSTAT_WHAT_STEP_RESUME,
/* Rather than distinguish between noisy and silent stops here, it
might be cleaner to have bpstat_print make that decision (also
taking into account stop_print_frame and source_only). But the
@ -733,8 +739,14 @@ enum bpstat_what_main_action
/* Stop and print. */
BPSTAT_WHAT_STOP_NOISY,
/* Clear step resume breakpoint, and keep checking. */
BPSTAT_WHAT_STEP_RESUME,
/* Clear step resume breakpoint, and keep checking. High-priority
step-resume breakpoints are used when even if there's a user
breakpoint at the current PC when we set the step-resume
breakpoint, we don't want to re-handle any breakpoint other
than the step-resume when it's hit; instead we want to move
past the breakpoint. This is used in the case of skipping
signal handlers. */
BPSTAT_WHAT_HP_STEP_RESUME,
};
/* An enum indicating the kind of "stack dummy" stop. This is a bit