New patch change "record_gdb_operation_disable_set" to: struct cleanup * record_gdb_operation_disable_set (void) { struct cleanup *old_cleanups = NULL; if (!record_gdb_operation_disable) { old_cleanups = make_cleanup_restore_integer (&record_gdb_operation_disable); record_gdb_operation_disable = 1; } return old_cleanups; } Because the old one work not very well if call record_gdb_operation_disable_set a lot of time before clean it. Thanks, Hui On Sun, Mar 22, 2009 at 00:01, Hui Zhu wrote: > > This patch add the process record and replay target.  This is the core > part of process record and replay. > > This time, this patch was updated a lot of part according to the ideas of Pedro. > > 2009-03-21  Hui Zhu   > >        Process record and replay target. > >        * Makefile.in (record.c): New file. >        * record.c, record.h: New file. > >        2008-12-28  Michael Snyder   >        * Comments, spelling, white space clean-ups. > >        2008-12-26  Michael Snyder   >        * record.h: Don't export record_not_record. >        * record.c (record_not_record): Rename to in_record_wait. >        (record_not_record_set): Rename to in_record_wait_set. >        (record_not_record_cleanup): Rename to in_record_wait_cleanup. >        (record_store_registers): Check in_record_wait flag. >        (record_xfer_partial): Ditto. > >        2008-10-07  Michael Snyder   >        * record.h (record_exec_direction): Delete. >        (RECORD_IS_REPLAY): Consult infrun global direction variable. >        * record.c: (record_wait_cleanups): Use infrun state variable. >        (record_wait): Ditto. >        (record_get_exec_direction, record_set_exec_direction): Remove. >        (record_can_execute_reverse): New target method. > >        2008-10-06  Michael Snyder   >        * record.c (displaced_step_fixup): Remove. >        (record_message_cleanups): Remove displaced step handling. >        (record_message): Remove displaced step handling. > >        2008-10-06  Michael Snyder   >        * record.c (record_regcache_raw_write_regnum): Remove. > >        2008-10-05  Michael Snyder   >        * record.c, record.h: Rename execdir to exec_direction. > >        2008-10-02  Michael Snyder   >        * record.c (record_open): Call target_can_async_p() instead >        of relying on a global variable. >        * record.h (record_linux_async_permitted): Delete. > >        2008-09-19  Michael Snyder   >        * record.c (trivial): Fix two commas in a comment. >        * record.c (record_wait): On end of record log, return >        TARGET_WAITKIND_NO_HISTORY and let infrun decide what to do. > >        2008-09-06  Michael Snyder   >        * record.c: Comment and message string cleanup. >        Add some function header comments. > >        2008-08-01  Michael Snyder   >        * record.c (_initialize_record): Clarify language in help >        strings. >        Fix up comment format (period must be followed by two spaces).