| Index: gdb/mi/mi-cmd-var.c
|
| diff --git a/gdb/mi/mi-cmd-var.c b/gdb/mi/mi-cmd-var.c
|
| index 06036794b30e2f59d5a3a6ec4e22b161d1e18892..84cdc1562767384cfd26a7dc76782b019ba90c5a 100644
|
| --- a/gdb/mi/mi-cmd-var.c
|
| +++ b/gdb/mi/mi-cmd-var.c
|
| @@ -1,6 +1,5 @@
|
| /* MI Command Set - varobj commands.
|
| - Copyright (C) 2000, 2002, 2004-2005, 2007-2012 Free Software
|
| - Foundation, Inc.
|
| + Copyright (C) 2000-2013 Free Software Foundation, Inc.
|
|
|
| Contributed by Cygnus Solutions (a Red Hat company).
|
|
|
| @@ -21,20 +20,19 @@
|
|
|
| #include "defs.h"
|
| #include "mi-cmds.h"
|
| +#include "mi-main.h"
|
| #include "ui-out.h"
|
| #include "mi-out.h"
|
| #include "varobj.h"
|
| +#include "language.h"
|
| #include "value.h"
|
| #include <ctype.h>
|
| -#include "gdb_string.h"
|
| +#include <string.h>
|
| #include "mi-getopt.h"
|
| #include "gdbthread.h"
|
| +#include "mi-parse.h"
|
|
|
| -const char mi_no_values[] = "--no-values";
|
| -const char mi_simple_values[] = "--simple-values";
|
| -const char mi_all_values[] = "--all-values";
|
| -
|
| -extern int varobjdebug; /* defined in varobj.c. */
|
| +extern unsigned int varobjdebug; /* defined in varobj.c. */
|
|
|
| static void varobj_update_one (struct varobj *var,
|
| enum print_values print_values,
|
| @@ -340,26 +338,6 @@ mi_cmd_var_info_num_children (char *command, char **argv, int argc)
|
| ui_out_field_int (uiout, "numchild", varobj_get_num_children (var));
|
| }
|
|
|
| -/* Parse a string argument into a print_values value. */
|
| -
|
| -static enum print_values
|
| -mi_parse_values_option (const char *arg)
|
| -{
|
| - if (strcmp (arg, "0") == 0
|
| - || strcmp (arg, mi_no_values) == 0)
|
| - return PRINT_NO_VALUES;
|
| - else if (strcmp (arg, "1") == 0
|
| - || strcmp (arg, mi_all_values) == 0)
|
| - return PRINT_ALL_VALUES;
|
| - else if (strcmp (arg, "2") == 0
|
| - || strcmp (arg, mi_simple_values) == 0)
|
| - return PRINT_SIMPLE_VALUES;
|
| - else
|
| - error (_("Unknown value for PRINT_VALUES\n\
|
| -Must be: 0 or \"%s\", 1 or \"%s\", 2 or \"%s\""),
|
| - mi_no_values, mi_simple_values, mi_all_values);
|
| -}
|
| -
|
| /* Return 1 if given the argument PRINT_VALUES we should display
|
| the varobj VAR. */
|
|
|
| @@ -428,7 +406,7 @@ mi_cmd_var_list_children (char *command, char **argv, int argc)
|
| children = varobj_list_children (var, &from, &to);
|
| ui_out_field_int (uiout, "numchild", to - from);
|
| if (argc == 2 || argc == 4)
|
| - print_values = mi_parse_values_option (argv[0]);
|
| + print_values = mi_parse_print_values (argv[0]);
|
| else
|
| print_values = PRINT_NO_VALUES;
|
|
|
| @@ -502,7 +480,7 @@ void
|
| mi_cmd_var_info_expression (char *command, char **argv, int argc)
|
| {
|
| struct ui_out *uiout = current_uiout;
|
| - enum varobj_languages lang;
|
| + const struct language_defn *lang;
|
| struct varobj *var;
|
|
|
| if (argc != 1)
|
| @@ -513,7 +491,7 @@ mi_cmd_var_info_expression (char *command, char **argv, int argc)
|
|
|
| lang = varobj_get_language (var);
|
|
|
| - ui_out_field_string (uiout, "lang", varobj_language_string[(int) lang]);
|
| + ui_out_field_string (uiout, "lang", lang->la_natural_name);
|
| ui_out_field_string (uiout, "exp", varobj_get_expression (var));
|
| }
|
|
|
| @@ -616,6 +594,7 @@ mi_cmd_var_assign (char *command, char **argv, int argc)
|
| struct ui_out *uiout = current_uiout;
|
| struct varobj *var;
|
| char *expression, *val;
|
| + struct cleanup *cleanup;
|
|
|
| if (argc != 2)
|
| error (_("-var-assign: Usage: NAME EXPRESSION."));
|
| @@ -628,6 +607,12 @@ mi_cmd_var_assign (char *command, char **argv, int argc)
|
|
|
| expression = xstrdup (argv[1]);
|
|
|
| + /* MI command '-var-assign' may write memory, so suppress memory
|
| + changed notification if it does. */
|
| + cleanup
|
| + = make_cleanup_restore_integer (&mi_suppress_notification.memory);
|
| + mi_suppress_notification.memory = 1;
|
| +
|
| if (!varobj_set_value (var, expression))
|
| error (_("-var-assign: Could not assign "
|
| "expression to variable object"));
|
| @@ -635,6 +620,8 @@ mi_cmd_var_assign (char *command, char **argv, int argc)
|
| val = varobj_get_value (var);
|
| ui_out_field_string (uiout, "value", val);
|
| xfree (val);
|
| +
|
| + do_cleanups (cleanup);
|
| }
|
|
|
| /* Type used for parameters passing to mi_cmd_var_update_iter. */
|
| @@ -689,7 +676,7 @@ mi_cmd_var_update (char *command, char **argv, int argc)
|
| name = argv[1];
|
|
|
| if (argc == 2)
|
| - print_values = mi_parse_values_option (argv[0]);
|
| + print_values = mi_parse_print_values (argv[0]);
|
| else
|
| print_values = PRINT_NO_VALUES;
|
|
|
| @@ -732,7 +719,6 @@ varobj_update_one (struct varobj *var, enum print_values print_values,
|
| int explicit)
|
| {
|
| struct ui_out *uiout = current_uiout;
|
| - struct cleanup *cleanup = NULL;
|
| VEC (varobj_update_result) *changes;
|
| varobj_update_result *r;
|
| int i;
|
| @@ -743,9 +729,10 @@ varobj_update_one (struct varobj *var, enum print_values print_values,
|
| {
|
| char *display_hint;
|
| int from, to;
|
| + struct cleanup *cleanup = make_cleanup (null_cleanup, NULL);
|
|
|
| if (mi_version (uiout) > 1)
|
| - cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
|
| + make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
|
| ui_out_field_string (uiout, "name", varobj_get_objname (r->varobj));
|
|
|
| switch (r->status)
|
| @@ -783,14 +770,14 @@ varobj_update_one (struct varobj *var, enum print_values print_values,
|
| ui_out_field_int (uiout, "new_num_children",
|
| varobj_get_num_children (r->varobj));
|
|
|
| - display_hint = varobj_get_display_hint (var);
|
| + display_hint = varobj_get_display_hint (r->varobj);
|
| if (display_hint)
|
| {
|
| ui_out_field_string (uiout, "displayhint", display_hint);
|
| xfree (display_hint);
|
| }
|
|
|
| - if (varobj_pretty_printed_p (var))
|
| + if (varobj_pretty_printed_p (r->varobj))
|
| ui_out_field_int (uiout, "dynamic", 1);
|
|
|
| varobj_get_child_range (r->varobj, &from, &to);
|
| @@ -819,8 +806,7 @@ varobj_update_one (struct varobj *var, enum print_values print_values,
|
| r->new = NULL; /* Paranoia. */
|
| }
|
|
|
| - if (mi_version (uiout) > 1)
|
| - do_cleanups (cleanup);
|
| + do_cleanups (cleanup);
|
| }
|
| VEC_free (varobj_update_result, changes);
|
| }
|
|
|