aboutsummaryrefslogtreecommitdiff
path: root/gdb/infrun.c
diff options
context:
space:
mode:
authorHui Zhu <teawater@gmail.com>2009-04-30 03:09:59 +0000
committerHui Zhu <teawater@gmail.com>2009-04-30 03:09:59 +0000
commit96429cc88348ab437aba4dbf80c264351eb0b62d (patch)
tree5ebbeb66d917f306caa373a85ef3d333cf32fd77 /gdb/infrun.c
parentb7f6bf22997d7ff8b9218e82c90d2e3dfcb08d62 (diff)
downloadgdb-96429cc88348ab437aba4dbf80c264351eb0b62d.zip
gdb-96429cc88348ab437aba4dbf80c264351eb0b62d.tar.gz
gdb-96429cc88348ab437aba4dbf80c264351eb0b62d.tar.bz2
* infrun.c (use_displaced_stepping): Return false if process
record and replay target is used. (proceed): Call function "record_not_record_set" if pocess record and replay target is used.
Diffstat (limited to 'gdb/infrun.c')
-rw-r--r--gdb/infrun.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/gdb/infrun.c b/gdb/infrun.c
index b9fba6f..5d9cc77 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -48,6 +48,7 @@
#include "gdb_assert.h"
#include "mi/mi-common.h"
#include "event-top.h"
+#include "record.h"
/* Prototypes for local functions */
@@ -603,7 +604,8 @@ use_displaced_stepping (struct gdbarch *gdbarch)
return (((can_use_displaced_stepping == can_use_displaced_stepping_auto
&& non_stop)
|| can_use_displaced_stepping == can_use_displaced_stepping_on)
- && gdbarch_displaced_step_copy_insn_p (gdbarch));
+ && gdbarch_displaced_step_copy_insn_p (gdbarch)
+ && !RECORD_IS_USED);
}
/* Clean out any stray displaced stepping state. */
@@ -2130,6 +2132,10 @@ adjust_pc_after_break (struct execution_control_state *ecs)
if (software_breakpoint_inserted_here_p (breakpoint_pc)
|| (non_stop && moribund_breakpoint_here_p (breakpoint_pc)))
{
+ struct cleanup *old_cleanups = NULL;
+ if (RECORD_IS_USED)
+ old_cleanups = record_gdb_operation_disable_set ();
+
/* When using hardware single-step, a SIGTRAP is reported for both
a completed single-step and a software breakpoint. Need to
differentiate between the two, as the latter needs adjusting
@@ -2153,6 +2159,9 @@ adjust_pc_after_break (struct execution_control_state *ecs)
|| !currently_stepping (ecs->event_thread)
|| ecs->event_thread->prev_pc == breakpoint_pc)
regcache_write_pc (regcache, breakpoint_pc);
+
+ if (RECORD_IS_USED)
+ do_cleanups (old_cleanups);
}
}