This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Another proposal for frontends and queries.


Hui Zhu wrote:
Hi guys,

I make a demo that add a switch can set the memory change query to
yquery or nquery.  Then Marc can set it in his part.

If you think this demo is OK.  I will post a patch for memory change
query and register change query.
And please help me with the words "memorychangedefault", "Set the
default query answer of memory change." and so on.  I need some clear
words.  :)

How about "set precord-readonly".
One variable, to control both memory and register writes.
If true, you can't change any machine state while debugging a recording. No worries about queries.


---
 record.c |   33 +++++++++++++++++++++++++++++++--
 1 file changed, 31 insertions(+), 2 deletions(-)

--- a/record.c
+++ b/record.c
@@ -97,6 +97,8 @@ static int record_insn_num = 0;
 /* The target_ops of process record.  */
 static struct target_ops record_ops;

+static int record_memory_change_default = 0;
+
 /* The beneath function pointers.  */
 static struct target_ops *record_beneath_to_resume_ops;
 static void (*record_beneath_to_resume) (struct target_ops *, ptid_t, int,
@@ -1018,11 +1020,20 @@ record_xfer_partial (struct target_ops *
     {
       if (RECORD_IS_REPLAY)
 	{
+	  int n = 0;
+
 	  /* Let user choose if he wants to write memory or not.  */
-	  if (!nquery (_("Because GDB is in replay mode, writing to memory "
+          if (record_memory_change_default)
+            n = yquery (_("Because GDB is in replay mode, writing to memory "
 		         "will make the execution log unusable from this "
 		         "point onward.  Write memory at address %s?"),
-		       paddress (target_gdbarch, offset)))
+		       paddress (target_gdbarch, offset));
+	  else
+            n = nquery (_("Because GDB is in replay mode, writing to memory "
+		         "will make the execution log unusable from this "
+		         "point onward.  Write memory at address %s?"),
+		       paddress (target_gdbarch, offset));
+	  if (!n)
 	    error (_("Process record canceled the operation."));

 	  /* Destroy the record from here forward.  */
@@ -1240,6 +1251,15 @@ info_record_command (char *args, int fro
   cmd_show_list (info_record_cmdlist, from_tty, "");
 }

+static void
+show_record_memory_change_default (struct ui_file *file, int from_tty,
+                                   struct cmd_list_element *c,
+                                   const char *value)
+{
+  fprintf_filtered (file, _("The default query answer is %s.\n"),
+                    record_memory_change_default ? "yes" : "no");
+}
+
 void
 _initialize_record (void)
 {
@@ -1310,4 +1330,13 @@ record/replay buffer.  Zero means unlimi
   add_cmd ("insn-number", class_obscure, show_record_insn_number,
 	   _("Show the current number of instructions in the "
 	     "record/replay buffer."), &info_record_cmdlist);
+
+  add_setshow_boolean_cmd ("memorychangedefault", no_class,
+			   &record_memory_change_default, _("\
+Set the default query answer of memory change."), _("\
+Show the default query answer of memory change."), _("\
+\"yes\" or \"no\"."),
+			   NULL,
+			   show_record_memory_change_default,
+			   &set_record_cmdlist, &show_record_cmdlist);
 }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]