* 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.
This commit is contained in:
Hui Zhu 2009-04-30 03:09:59 +00:00
parent b7f6bf2299
commit 96429cc883
2 changed files with 18 additions and 1 deletions

View File

@ -1,3 +1,11 @@
2009-04-30 Hui Zhu <teawater@gmail.com>
Michael Snyder <msnyder@vmware.com>
* 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.
2009-04-30 Hui Zhu <teawater@gmail.com>
Michael Snyder <msnyder@vmware.com>

View File

@ -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);
}
}