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: http://git.osdn.net/view?a=commitdiff_plain;h=5439abade6dcbe08ff800812da6d2ce7304d0454;p=pf3gnuchains%2Fpf3gnuchains3x.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 b892175604..ea1c14eb51 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,6 +1,14 @@ 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 + Linux process record and replay support. * Makefile.in (ALLDEPFILES): Add linux-record.c. diff --git a/gdb/infrun.c b/gdb/infrun.c index b9fba6f1eb..5d9cc77b24 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); } }