Re: Another proposal for frontends and queries.

Hui Zhu
2009-09-18T04:59:50Z

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. :)

Thanks,
Hui

---
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);
}