* infrun.c (use_displaced_stepping): Return false if process
authorHui Zhu <teawater@gmail.com>
Thu, 30 Apr 2009 03:09:59 +0000 (03:09 +0000)
committerHui Zhu <teawater@gmail.com>
Thu, 30 Apr 2009 03:09:59 +0000 (03:09 +0000)
record and replay target is used.
(proceed): Call function "record_not_record_set" if pocess
record and replay target is used.

gdb/ChangeLog
gdb/infrun.c

index b892175..ea1c14e 100644 (file)
@@ -1,6 +1,14 @@
 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>
+
        Linux process record and replay support.
 
        * Makefile.in (ALLDEPFILES): Add linux-record.c.
index b9fba6f..5d9cc77 100644 (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);
     }
 }