From 2c03e5bed3ac8158eaae4621f4b4550e4ab6d4ef Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Thu, 26 May 2011 14:59:18 +0000 Subject: 2011-05-26 Pedro Alves gdb/ * breakpoint.h (enum bptype) : 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. --- gdb/breakpoint.h | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'gdb/breakpoint.h') diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index 0cbd9dd..2050c6d 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -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 -- cgit v1.1