From: Hui Zhu Date: Thu, 30 Apr 2009 03:09:59 +0000 (+0000) Subject: * infrun.c (use_displaced_stepping): Return false if process X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=96429cc88348ab437aba4dbf80c264351eb0b62d;p=binutils-gdb.git * 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. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b8921756042..ea1c14eb514 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2009-04-30 Hui Zhu + Michael Snyder + + * 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 Michael Snyder diff --git a/gdb/infrun.c b/gdb/infrun.c index b9fba6f1ebf..5d9cc77b248 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); } }