aboutsummaryrefslogtreecommitdiff
path: root/gdb/infrun.c
diff options
context:
space:
mode:
authorJim Kingdon <jkingdon@engr.sgi.com>1994-03-01 00:15:07 +0000
committerJim Kingdon <jkingdon@engr.sgi.com>1994-03-01 00:15:07 +0000
commitb5aff26825abb88d44d71392f759c0a89e979285 (patch)
tree45bbd9f8e1796481fc0b2a37c2f3c747d7488418 /gdb/infrun.c
parent5143c305dd1b9c32cdee77c3d55e19c2e4c4d5ed (diff)
downloadgdb-b5aff26825abb88d44d71392f759c0a89e979285.zip
gdb-b5aff26825abb88d44d71392f759c0a89e979285.tar.gz
gdb-b5aff26825abb88d44d71392f759c0a89e979285.tar.bz2
* mips-tdep.c (mips_step_skips_delay), config/mips/tm-mips.h
(STEP_SKIPS_DELAY): Added. * infrun.c (proceed) [STEP_SKIPS_DELAY]: Check for a breakpoint in the delay slot.
Diffstat (limited to 'gdb/infrun.c')
-rw-r--r--gdb/infrun.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gdb/infrun.c b/gdb/infrun.c
index ef9b826..146621c 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -280,6 +280,15 @@ proceed (addr, siggnal, step)
if (breakpoint_here_p (read_pc ()))
oneproc = 1;
+
+#ifdef STEP_SKIPS_DELAY
+ /* Check breakpoint_here_p first, because breakpoint_here_p is fast
+ (it just checks internal GDB data structures) and STEP_SKIPS_DELAY
+ is slow (it needs to read memory from the target). */
+ if (breakpoint_here_p (read_pc () + 4)
+ && STEP_SKIPS_DELAY (read_pc ()))
+ oneproc = 1;
+#endif /* STEP_SKIPS_DELAY */
}
else
write_pc (addr);