Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [RFA record/replay] Eliminate global variables
@ 2008-10-07  1:07 Michael Snyder
  2008-10-07  1:14 ` teawater
  0 siblings, 1 reply; 4+ messages in thread
From: Michael Snyder @ 2008-10-07  1:07 UTC (permalink / raw)
  To: gdb-patches, teawater

[-- Attachment #1: Type: text/plain, Size: 140 bytes --]

The change to 'use_displaced_stepping' makes these
changes unnecessary.  GDB will not use displaced stepping
while recording or replaying.


[-- Attachment #2: displaced-step.txt --]
[-- Type: text/plain, Size: 3901 bytes --]

2008-10-06  Michael Snyder  <msnyder@vmware.com>

	* record.c (displaced_step_fixup): Remove.
	(record_message_cleanups): Remove displaced step handling.
	(record_message): Remove displaced step handling.
	* infrun.c (displaced_step_ptid): Back to being static.
	(displaced_step_original, displaced_step_copy): Ditto.

Index: infrun.c
===================================================================
RCS file: /cvs/src/src/gdb/infrun.c,v
retrieving revision 1.300.2.9
diff -u -p -r1.300.2.9 infrun.c
--- infrun.c	6 Oct 2008 17:23:31 -0000	1.300.2.9
+++ infrun.c	6 Oct 2008 22:56:32 -0000
@@ -594,9 +594,7 @@ static ptid_t deferred_step_ptid;
 /* If this is not null_ptid, this is the thread carrying out a
    displaced single-step.  This thread's state will require fixing up
    once it has completed its step.  */
-/* Record.c(record_message) use it to confirm if the next step is displaced
-   step. */
-ptid_t displaced_step_ptid;
+static ptid_t displaced_step_ptid;
 
 struct displaced_step_request
 {
@@ -615,9 +613,7 @@ static struct gdbarch *displaced_step_gd
 static struct displaced_step_closure *displaced_step_closure;
 
 /* The address of the original instruction, and the copy we made.  */
-/* Record.c(record_message) use them to get the original PC and set it back.
-   Because record_message need to record the original PC. */
-CORE_ADDR displaced_step_original, displaced_step_copy;
+static CORE_ADDR displaced_step_original, displaced_step_copy;
 
 /* Saved contents of copy area.  */
 static gdb_byte *displaced_step_saved_copy;
Index: record.c
===================================================================
RCS file: /cvs/src/src/gdb/Attic/record.c,v
retrieving revision 1.1.2.17
diff -u -p -r1.1.2.17 record.c
--- record.c	6 Oct 2008 17:52:17 -0000	1.1.2.17
+++ record.c	6 Oct 2008 22:56:32 -0000
@@ -37,9 +37,6 @@ record_t *record_arch_list_head = NULL;
 record_t *record_arch_list_tail = NULL;
 struct regcache *record_regcache = NULL;
 
-extern void displaced_step_fixup (ptid_t event_ptid,
-				  enum target_signal signal);
-
 /* 0 ask user. 1 auto delete the last record_t.  */
 static int record_insn_max_mode = 0;
 static int record_insn_max_num = DEFAULT_RECORD_INSN_MAX_NUM;
@@ -54,8 +51,6 @@ static int record_not_record = 0;
 int record_will_store_registers = 0;
 
 extern struct bp_location *bp_location_chain;
-extern ptid_t displaced_step_ptid;
-extern CORE_ADDR displaced_step_original, displaced_step_copy;
 
 /* The real beneath function pointers.  */
 void (*record_beneath_to_resume) (ptid_t, int, enum target_signal);
@@ -326,11 +321,6 @@ static void
 record_message_cleanups (void *ignore)
 {
   record_list_release (record_arch_list_tail);
-
-  /* Clean for displaced stepping */
-  if (!ptid_equal (displaced_step_ptid, null_ptid))
-    displaced_step_fixup (displaced_step_ptid, TARGET_SIGNAL_TRAP);
-
   set_executing (inferior_ptid, 0);
   normal_stop ();
 }
@@ -349,24 +339,7 @@ record_message (struct gdbarch *gdbarch)
 
   record_regcache = get_current_regcache ();
 
-  if (!ptid_equal (displaced_step_ptid, null_ptid))
-    {
-      /* Deal with displaced stepping.  */
-      if (record_debug)
-	{
-	  fprintf_unfiltered (gdb_stdlog,
-			      "Record: this stepping is displaced stepping.  Change PC register to original address 0x%s before call gdbarch_record.  After that, change it back to 0x%s.\n",
-			      paddr_nz (displaced_step_original),
-			      paddr_nz (displaced_step_copy));
-	}
-      regcache_write_pc (record_regcache, displaced_step_original);
-      ret = gdbarch_record (gdbarch, displaced_step_copy);
-      regcache_write_pc (record_regcache, displaced_step_copy);
-    }
-  else
-    {
-      ret = gdbarch_record (gdbarch, regcache_read_pc (record_regcache));
-    }
+  ret = gdbarch_record (gdbarch, regcache_read_pc (record_regcache));
 
   if (ret > 0)
     error (_("Record: record pause the program."));

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFA record/replay] Eliminate global variables
  2008-10-07  1:07 [RFA record/replay] Eliminate global variables Michael Snyder
@ 2008-10-07  1:14 ` teawater
  2008-10-07  1:19   ` Michael Snyder
  0 siblings, 1 reply; 4+ messages in thread
From: teawater @ 2008-10-07  1:14 UTC (permalink / raw)
  To: Michael Snyder; +Cc: gdb-patches

If you have checked in the code that disable the displaced_stepping
when precord is enable, this patch is OK. Please check it in.

Thanks,
Hui

On Tue, Oct 7, 2008 at 09:04, Michael Snyder <msnyder@vmware.com> wrote:
> The change to 'use_displaced_stepping' makes these
> changes unnecessary.  GDB will not use displaced stepping
> while recording or replaying.
>
>
> 2008-10-06  Michael Snyder  <msnyder@vmware.com>
>
>        * record.c (displaced_step_fixup): Remove.
>        (record_message_cleanups): Remove displaced step handling.
>        (record_message): Remove displaced step handling.
>        * infrun.c (displaced_step_ptid): Back to being static.
>        (displaced_step_original, displaced_step_copy): Ditto.
>
> Index: infrun.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/infrun.c,v
> retrieving revision 1.300.2.9
> diff -u -p -r1.300.2.9 infrun.c
> --- infrun.c    6 Oct 2008 17:23:31 -0000       1.300.2.9
> +++ infrun.c    6 Oct 2008 22:56:32 -0000
> @@ -594,9 +594,7 @@ static ptid_t deferred_step_ptid;
>  /* If this is not null_ptid, this is the thread carrying out a
>    displaced single-step.  This thread's state will require fixing up
>    once it has completed its step.  */
> -/* Record.c(record_message) use it to confirm if the next step is displaced
> -   step. */
> -ptid_t displaced_step_ptid;
> +static ptid_t displaced_step_ptid;
>
>  struct displaced_step_request
>  {
> @@ -615,9 +613,7 @@ static struct gdbarch *displaced_step_gd
>  static struct displaced_step_closure *displaced_step_closure;
>
>  /* The address of the original instruction, and the copy we made.  */
> -/* Record.c(record_message) use them to get the original PC and set it
> back.
> -   Because record_message need to record the original PC. */
> -CORE_ADDR displaced_step_original, displaced_step_copy;
> +static CORE_ADDR displaced_step_original, displaced_step_copy;
>
>  /* Saved contents of copy area.  */
>  static gdb_byte *displaced_step_saved_copy;
> Index: record.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/Attic/record.c,v
> retrieving revision 1.1.2.17
> diff -u -p -r1.1.2.17 record.c
> --- record.c    6 Oct 2008 17:52:17 -0000       1.1.2.17
> +++ record.c    6 Oct 2008 22:56:32 -0000
> @@ -37,9 +37,6 @@ record_t *record_arch_list_head = NULL;
>  record_t *record_arch_list_tail = NULL;
>  struct regcache *record_regcache = NULL;
>
> -extern void displaced_step_fixup (ptid_t event_ptid,
> -                                 enum target_signal signal);
> -
>  /* 0 ask user. 1 auto delete the last record_t.  */
>  static int record_insn_max_mode = 0;
>  static int record_insn_max_num = DEFAULT_RECORD_INSN_MAX_NUM;
> @@ -54,8 +51,6 @@ static int record_not_record = 0;
>  int record_will_store_registers = 0;
>
>  extern struct bp_location *bp_location_chain;
> -extern ptid_t displaced_step_ptid;
> -extern CORE_ADDR displaced_step_original, displaced_step_copy;
>
>  /* The real beneath function pointers.  */
>  void (*record_beneath_to_resume) (ptid_t, int, enum target_signal);
> @@ -326,11 +321,6 @@ static void
>  record_message_cleanups (void *ignore)
>  {
>   record_list_release (record_arch_list_tail);
> -
> -  /* Clean for displaced stepping */
> -  if (!ptid_equal (displaced_step_ptid, null_ptid))
> -    displaced_step_fixup (displaced_step_ptid, TARGET_SIGNAL_TRAP);
> -
>   set_executing (inferior_ptid, 0);
>   normal_stop ();
>  }
> @@ -349,24 +339,7 @@ record_message (struct gdbarch *gdbarch)
>
>   record_regcache = get_current_regcache ();
>
> -  if (!ptid_equal (displaced_step_ptid, null_ptid))
> -    {
> -      /* Deal with displaced stepping.  */
> -      if (record_debug)
> -       {
> -         fprintf_unfiltered (gdb_stdlog,
> -                             "Record: this stepping is displaced stepping.
>  Change PC register to original address 0x%s before call gdbarch_record.
>  After that, change it back to 0x%s.\n",
> -                             paddr_nz (displaced_step_original),
> -                             paddr_nz (displaced_step_copy));
> -       }
> -      regcache_write_pc (record_regcache, displaced_step_original);
> -      ret = gdbarch_record (gdbarch, displaced_step_copy);
> -      regcache_write_pc (record_regcache, displaced_step_copy);
> -    }
> -  else
> -    {
> -      ret = gdbarch_record (gdbarch, regcache_read_pc (record_regcache));
> -    }
> +  ret = gdbarch_record (gdbarch, regcache_read_pc (record_regcache));
>
>   if (ret > 0)
>     error (_("Record: record pause the program."));
>
>


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFA record/replay] Eliminate global variables
  2008-10-07  1:14 ` teawater
@ 2008-10-07  1:19   ` Michael Snyder
  2008-10-07  1:23     ` teawater
  0 siblings, 1 reply; 4+ messages in thread
From: Michael Snyder @ 2008-10-07  1:19 UTC (permalink / raw)
  To: teawater; +Cc: gdb-patches

Done, and thanks for the quick response!

teawater wrote:
> If you have checked in the code that disable the displaced_stepping
> when precord is enable, this patch is OK. Please check it in.
> 
> Thanks,
> Hui
> 
> On Tue, Oct 7, 2008 at 09:04, Michael Snyder <msnyder@vmware.com> wrote:
>> The change to 'use_displaced_stepping' makes these
>> changes unnecessary.  GDB will not use displaced stepping
>> while recording or replaying.
>>
>>
>> 2008-10-06  Michael Snyder  <msnyder@vmware.com>
>>
>>        * record.c (displaced_step_fixup): Remove.
>>        (record_message_cleanups): Remove displaced step handling.
>>        (record_message): Remove displaced step handling.
>>        * infrun.c (displaced_step_ptid): Back to being static.
>>        (displaced_step_original, displaced_step_copy): Ditto.
>>
>> Index: infrun.c
>> ===================================================================
>> RCS file: /cvs/src/src/gdb/infrun.c,v
>> retrieving revision 1.300.2.9
>> diff -u -p -r1.300.2.9 infrun.c
>> --- infrun.c    6 Oct 2008 17:23:31 -0000       1.300.2.9
>> +++ infrun.c    6 Oct 2008 22:56:32 -0000
>> @@ -594,9 +594,7 @@ static ptid_t deferred_step_ptid;
>>  /* If this is not null_ptid, this is the thread carrying out a
>>    displaced single-step.  This thread's state will require fixing up
>>    once it has completed its step.  */
>> -/* Record.c(record_message) use it to confirm if the next step is displaced
>> -   step. */
>> -ptid_t displaced_step_ptid;
>> +static ptid_t displaced_step_ptid;
>>
>>  struct displaced_step_request
>>  {
>> @@ -615,9 +613,7 @@ static struct gdbarch *displaced_step_gd
>>  static struct displaced_step_closure *displaced_step_closure;
>>
>>  /* The address of the original instruction, and the copy we made.  */
>> -/* Record.c(record_message) use them to get the original PC and set it
>> back.
>> -   Because record_message need to record the original PC. */
>> -CORE_ADDR displaced_step_original, displaced_step_copy;
>> +static CORE_ADDR displaced_step_original, displaced_step_copy;
>>
>>  /* Saved contents of copy area.  */
>>  static gdb_byte *displaced_step_saved_copy;
>> Index: record.c
>> ===================================================================
>> RCS file: /cvs/src/src/gdb/Attic/record.c,v
>> retrieving revision 1.1.2.17
>> diff -u -p -r1.1.2.17 record.c
>> --- record.c    6 Oct 2008 17:52:17 -0000       1.1.2.17
>> +++ record.c    6 Oct 2008 22:56:32 -0000
>> @@ -37,9 +37,6 @@ record_t *record_arch_list_head = NULL;
>>  record_t *record_arch_list_tail = NULL;
>>  struct regcache *record_regcache = NULL;
>>
>> -extern void displaced_step_fixup (ptid_t event_ptid,
>> -                                 enum target_signal signal);
>> -
>>  /* 0 ask user. 1 auto delete the last record_t.  */
>>  static int record_insn_max_mode = 0;
>>  static int record_insn_max_num = DEFAULT_RECORD_INSN_MAX_NUM;
>> @@ -54,8 +51,6 @@ static int record_not_record = 0;
>>  int record_will_store_registers = 0;
>>
>>  extern struct bp_location *bp_location_chain;
>> -extern ptid_t displaced_step_ptid;
>> -extern CORE_ADDR displaced_step_original, displaced_step_copy;
>>
>>  /* The real beneath function pointers.  */
>>  void (*record_beneath_to_resume) (ptid_t, int, enum target_signal);
>> @@ -326,11 +321,6 @@ static void
>>  record_message_cleanups (void *ignore)
>>  {
>>   record_list_release (record_arch_list_tail);
>> -
>> -  /* Clean for displaced stepping */
>> -  if (!ptid_equal (displaced_step_ptid, null_ptid))
>> -    displaced_step_fixup (displaced_step_ptid, TARGET_SIGNAL_TRAP);
>> -
>>   set_executing (inferior_ptid, 0);
>>   normal_stop ();
>>  }
>> @@ -349,24 +339,7 @@ record_message (struct gdbarch *gdbarch)
>>
>>   record_regcache = get_current_regcache ();
>>
>> -  if (!ptid_equal (displaced_step_ptid, null_ptid))
>> -    {
>> -      /* Deal with displaced stepping.  */
>> -      if (record_debug)
>> -       {
>> -         fprintf_unfiltered (gdb_stdlog,
>> -                             "Record: this stepping is displaced stepping.
>>  Change PC register to original address 0x%s before call gdbarch_record.
>>  After that, change it back to 0x%s.\n",
>> -                             paddr_nz (displaced_step_original),
>> -                             paddr_nz (displaced_step_copy));
>> -       }
>> -      regcache_write_pc (record_regcache, displaced_step_original);
>> -      ret = gdbarch_record (gdbarch, displaced_step_copy);
>> -      regcache_write_pc (record_regcache, displaced_step_copy);
>> -    }
>> -  else
>> -    {
>> -      ret = gdbarch_record (gdbarch, regcache_read_pc (record_regcache));
>> -    }
>> +  ret = gdbarch_record (gdbarch, regcache_read_pc (record_regcache));
>>
>>   if (ret > 0)
>>     error (_("Record: record pause the program."));
>>
>>


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFA record/replay] Eliminate global variables
  2008-10-07  1:19   ` Michael Snyder
@ 2008-10-07  1:23     ` teawater
  0 siblings, 0 replies; 4+ messages in thread
From: teawater @ 2008-10-07  1:23 UTC (permalink / raw)
  To: Michael Snyder; +Cc: gdb-patches

You are welcome.

On Tue, Oct 7, 2008 at 09:16, Michael Snyder <msnyder@vmware.com> wrote:
> Done, and thanks for the quick response!
>
> teawater wrote:
>>
>> If you have checked in the code that disable the displaced_stepping
>> when precord is enable, this patch is OK. Please check it in.
>>
>> Thanks,
>> Hui
>>
>> On Tue, Oct 7, 2008 at 09:04, Michael Snyder <msnyder@vmware.com> wrote:
>>>
>>> The change to 'use_displaced_stepping' makes these
>>> changes unnecessary.  GDB will not use displaced stepping
>>> while recording or replaying.
>>>
>>>
>>> 2008-10-06  Michael Snyder  <msnyder@vmware.com>
>>>
>>>       * record.c (displaced_step_fixup): Remove.
>>>       (record_message_cleanups): Remove displaced step handling.
>>>       (record_message): Remove displaced step handling.
>>>       * infrun.c (displaced_step_ptid): Back to being static.
>>>       (displaced_step_original, displaced_step_copy): Ditto.
>>>
>>> Index: infrun.c
>>> ===================================================================
>>> RCS file: /cvs/src/src/gdb/infrun.c,v
>>> retrieving revision 1.300.2.9
>>> diff -u -p -r1.300.2.9 infrun.c
>>> --- infrun.c    6 Oct 2008 17:23:31 -0000       1.300.2.9
>>> +++ infrun.c    6 Oct 2008 22:56:32 -0000
>>> @@ -594,9 +594,7 @@ static ptid_t deferred_step_ptid;
>>>  /* If this is not null_ptid, this is the thread carrying out a
>>>   displaced single-step.  This thread's state will require fixing up
>>>   once it has completed its step.  */
>>> -/* Record.c(record_message) use it to confirm if the next step is
>>> displaced
>>> -   step. */
>>> -ptid_t displaced_step_ptid;
>>> +static ptid_t displaced_step_ptid;
>>>
>>>  struct displaced_step_request
>>>  {
>>> @@ -615,9 +613,7 @@ static struct gdbarch *displaced_step_gd
>>>  static struct displaced_step_closure *displaced_step_closure;
>>>
>>>  /* The address of the original instruction, and the copy we made.  */
>>> -/* Record.c(record_message) use them to get the original PC and set it
>>> back.
>>> -   Because record_message need to record the original PC. */
>>> -CORE_ADDR displaced_step_original, displaced_step_copy;
>>> +static CORE_ADDR displaced_step_original, displaced_step_copy;
>>>
>>>  /* Saved contents of copy area.  */
>>>  static gdb_byte *displaced_step_saved_copy;
>>> Index: record.c
>>> ===================================================================
>>> RCS file: /cvs/src/src/gdb/Attic/record.c,v
>>> retrieving revision 1.1.2.17
>>> diff -u -p -r1.1.2.17 record.c
>>> --- record.c    6 Oct 2008 17:52:17 -0000       1.1.2.17
>>> +++ record.c    6 Oct 2008 22:56:32 -0000
>>> @@ -37,9 +37,6 @@ record_t *record_arch_list_head = NULL;
>>>  record_t *record_arch_list_tail = NULL;
>>>  struct regcache *record_regcache = NULL;
>>>
>>> -extern void displaced_step_fixup (ptid_t event_ptid,
>>> -                                 enum target_signal signal);
>>> -
>>>  /* 0 ask user. 1 auto delete the last record_t.  */
>>>  static int record_insn_max_mode = 0;
>>>  static int record_insn_max_num = DEFAULT_RECORD_INSN_MAX_NUM;
>>> @@ -54,8 +51,6 @@ static int record_not_record = 0;
>>>  int record_will_store_registers = 0;
>>>
>>>  extern struct bp_location *bp_location_chain;
>>> -extern ptid_t displaced_step_ptid;
>>> -extern CORE_ADDR displaced_step_original, displaced_step_copy;
>>>
>>>  /* The real beneath function pointers.  */
>>>  void (*record_beneath_to_resume) (ptid_t, int, enum target_signal);
>>> @@ -326,11 +321,6 @@ static void
>>>  record_message_cleanups (void *ignore)
>>>  {
>>>  record_list_release (record_arch_list_tail);
>>> -
>>> -  /* Clean for displaced stepping */
>>> -  if (!ptid_equal (displaced_step_ptid, null_ptid))
>>> -    displaced_step_fixup (displaced_step_ptid, TARGET_SIGNAL_TRAP);
>>> -
>>>  set_executing (inferior_ptid, 0);
>>>  normal_stop ();
>>>  }
>>> @@ -349,24 +339,7 @@ record_message (struct gdbarch *gdbarch)
>>>
>>>  record_regcache = get_current_regcache ();
>>>
>>> -  if (!ptid_equal (displaced_step_ptid, null_ptid))
>>> -    {
>>> -      /* Deal with displaced stepping.  */
>>> -      if (record_debug)
>>> -       {
>>> -         fprintf_unfiltered (gdb_stdlog,
>>> -                             "Record: this stepping is displaced
>>> stepping.
>>>  Change PC register to original address 0x%s before call gdbarch_record.
>>>  After that, change it back to 0x%s.\n",
>>> -                             paddr_nz (displaced_step_original),
>>> -                             paddr_nz (displaced_step_copy));
>>> -       }
>>> -      regcache_write_pc (record_regcache, displaced_step_original);
>>> -      ret = gdbarch_record (gdbarch, displaced_step_copy);
>>> -      regcache_write_pc (record_regcache, displaced_step_copy);
>>> -    }
>>> -  else
>>> -    {
>>> -      ret = gdbarch_record (gdbarch, regcache_read_pc
>>> (record_regcache));
>>> -    }
>>> +  ret = gdbarch_record (gdbarch, regcache_read_pc (record_regcache));
>>>
>>>  if (ret > 0)
>>>    error (_("Record: record pause the program."));
>>>
>>>
>
>


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2008-10-07  1:23 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-10-07  1:07 [RFA record/replay] Eliminate global variables Michael Snyder
2008-10-07  1:14 ` teawater
2008-10-07  1:19   ` Michael Snyder
2008-10-07  1:23     ` teawater

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox