From f8d40ec8a6683148144ce878cf7d8d8dea8469bf Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Fri, 16 Aug 2002 17:56:17 +0000 Subject: [PATCH] * infrun.c (handle_inferior_event): When receiving a SIGTRAP signal, check whether we hit a breakpoint before checking for a single step breakpoint. Otherwise, GDB fails to notice that a breakpoint has been hit when stepping onto a breakpoint. --- gdb/ChangeLog | 7 +++++++ gdb/infrun.c | 13 +++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f48858bc713..01421449819 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2002-08-16 Joel Brobecker + + * infrun.c (handle_inferior_event): When receiving a SIGTRAP + signal, check whether we hit a breakpoint before checking for a + single step breakpoint. Otherwise, GDB fails to notice that a + breakpoint has been hit when stepping onto a breakpoint. + 2002-08-16 Keith Seitz * gdb-events.sh (clear_gdb_event_hooks): New function. diff --git a/gdb/infrun.c b/gdb/infrun.c index 672d5f93c65..af0b3029357 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -1826,10 +1826,11 @@ handle_inferior_event (struct execution_control_state *ecs) if (stop_signal == TARGET_SIGNAL_TRAP) { - if (SOFTWARE_SINGLE_STEP_P () && singlestep_breakpoints_inserted_p) - ecs->random_signal = 0; - else if (breakpoints_inserted - && breakpoint_here_p (stop_pc - DECR_PC_AFTER_BREAK)) + /* Check if a regular breakpoint has been hit before checking + for a potential single step breakpoint. Otherwise, GDB will + not see this breakpoint hit when stepping onto breakpoints. */ + if (breakpoints_inserted + && breakpoint_here_p (stop_pc - DECR_PC_AFTER_BREAK)) { ecs->random_signal = 0; if (!breakpoint_thread_match (stop_pc - DECR_PC_AFTER_BREAK, @@ -1885,6 +1886,10 @@ handle_inferior_event (struct execution_control_state *ecs) } } } + else if (SOFTWARE_SINGLE_STEP_P () && singlestep_breakpoints_inserted_p) + { + ecs->random_signal = 0; + } } else ecs->random_signal = 1; -- 2.30.2