aboutsummaryrefslogtreecommitdiff
path: root/gdb/infrun.c
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2002-08-16 17:56:17 +0000
committerJoel Brobecker <brobecker@gnat.com>2002-08-16 17:56:17 +0000
commitf8d40ec8a6683148144ce878cf7d8d8dea8469bf (patch)
tree67ec5ad7ce6ba4eda72b0054d7be1bd8a7c29922 /gdb/infrun.c
parent63d022e0ce7e1c7734aabff5b1e865cc8e1edf9e (diff)
downloadgdb-f8d40ec8a6683148144ce878cf7d8d8dea8469bf.zip
gdb-f8d40ec8a6683148144ce878cf7d8d8dea8469bf.tar.gz
gdb-f8d40ec8a6683148144ce878cf7d8d8dea8469bf.tar.bz2
* 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.
Diffstat (limited to 'gdb/infrun.c')
-rw-r--r--gdb/infrun.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 672d5f9..af0b302 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;