From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32034 invoked by alias); 27 Feb 2005 01:20:32 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 31481 invoked from network); 27 Feb 2005 01:20:14 -0000 Received: from unknown (HELO viper.snap.net.nz) (202.37.101.8) by sourceware.org with SMTP; 27 Feb 2005 01:20:14 -0000 Received: from farnswood.snap.net.nz (p26-tnt1.snap.net.nz [202.124.110.26]) by viper.snap.net.nz (Postfix) with ESMTP id AB01D3CBF41; Sun, 27 Feb 2005 14:20:11 +1300 (NZDT) Received: by farnswood.snap.net.nz (Postfix, from userid 501) id 7CCAB62FBE; Sun, 27 Feb 2005 01:18:12 +0000 (GMT) From: Nick Roberts MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <16929.8147.933720.246602@farnswood.snap.net.nz> Date: Sun, 27 Feb 2005 05:03:00 -0000 To: Eli Zaretskii , Andrew Cagney Cc: gdb-patches@sources.redhat.com Subject: Re: [PATCH: gdb/mi + doco] -var-update In-Reply-To: <01c51898$Blat.v2.4$f6fd05c0@zahav.net.il> References: <16919.7660.144228.334687@farnswood.snap.net.nz> <01c5167f$Blat.v2.4$9a7a6f60@zahav.net.il> <16919.53411.753668.336933@farnswood.snap.net.nz> <01c51709$Blat.v2.4$4a3292a0@zahav.net.il> <16921.18627.457594.938060@farnswood.snap.net.nz> <01c517d0$Blat.v2.4$09a26040@zahav.net.il> <16922.43915.346792.973282@farnswood.snap.net.nz> <01c51898$Blat.v2.4$f6fd05c0@zahav.net.il> X-SW-Source: 2005-02/txt/msg00276.txt.bz2 Here is my latest set of patches. Eli, I think it addresses your concerns. I have changed -var-list-children to use --with-values instead of --all-values. In the unlikely event that any other frontend is using this, "-var-list-children 1 varno" will still be backwardly compatible. Andrew, Is this acceptable or is mi-getopt a pre-condition? Nick *** /home/nick/src/gdb/mi/mi-cmd-var.c.~1.21.~ 2005-02-13 00:36:20.000000000 +1300 --- /home/nick/src/gdb/mi/mi-cmd-var.c 2005-02-27 14:14:36.000000000 +1300 *************** *** 30,35 **** --- 30,40 ---- #include #include "gdb_string.h" + const char novalues[] = "\"--no-values\""; + const char withvalues[] = "\"--with-values\""; + const char simplevalues[] = "\"--simple-values\""; + const char allvalues[] = "\"--all-values\""; + extern int varobjdebug; /* defined in varobj.c */ static int varobj_update_one (struct varobj *var); *************** *** 262,284 **** error (_("mi_cmd_var_list_children: Usage: [PRINT_VALUES] NAME")); /* Get varobj handle, if a valid var obj name was specified */ ! if (argc == 1) var = varobj_get_handle (argv[0]); ! else var = varobj_get_handle (argv[1]); if (var == NULL) error (_("Variable object not found")); numchild = varobj_list_children (var, &childlist); ui_out_field_int (uiout, "numchild", numchild); if (argc == 2) ! if (strcmp (argv[0], "0") == 0 ! || strcmp (argv[0], "--no-values") == 0) ! print_values = PRINT_NO_VALUES; ! else if (strcmp (argv[0], "1") == 0 ! || strcmp (argv[0], "--all-values") == 0) ! print_values = PRINT_ALL_VALUES; ! else ! error (_("Unknown value for PRINT_VALUES: must be: 0 or \"--no-values\", 1 or \"--all-values\"")); ! else print_values = PRINT_NO_VALUES; if (numchild <= 0) return MI_CMD_DONE; --- 267,295 ---- error (_("mi_cmd_var_list_children: Usage: [PRINT_VALUES] NAME")); /* Get varobj handle, if a valid var obj name was specified */ ! if (argc == 1) ! var = varobj_get_handle (argv[0]); ! else ! var = varobj_get_handle (argv[1]); if (var == NULL) error (_("Variable object not found")); numchild = varobj_list_children (var, &childlist); ui_out_field_int (uiout, "numchild", numchild); if (argc == 2) ! { ! if (strcmp (argv[0], "0") == 0 ! || strcmp (argv[0], "--no-values") == 0) ! print_values = PRINT_NO_VALUES; ! else if (strcmp (argv[0], "1") == 0 ! || strcmp (argv[0], "--with-values") == 0) ! print_values = PRINT_ALL_VALUES; ! else ! error (_("Unknown value for PRINT_VALUES: must be: 0 or %s, 1 or %s"), ! novalues, withvalues); ! } ! else ! print_values = PRINT_NO_VALUES; if (numchild <= 0) return MI_CMD_DONE; *************** *** 426,436 **** struct cleanup *cleanup; char *name; int nv; ! if (argc != 1) ! error (_("mi_cmd_var_update: Usage: NAME.")); ! name = argv[0]; /* Check if the parameter is a "*" which means that we want to update all variables */ --- 437,466 ---- struct cleanup *cleanup; char *name; int nv; + enum print_values print_values; ! if (argc != 1 && argc != 2) ! error (_("mi_cmd_var_update: Usage: [PRINT_VALUES] NAME.")); ! if (argc == 1) ! name = argv[0]; ! else ! name = (argv[1]); ! ! if (argc == 2) ! { ! if (strcmp (argv[0], "0") == 0 ! || strcmp (argv[0], "--no-values") == 0) ! print_values = PRINT_NO_VALUES; ! else if (strcmp (argv[0], "1") == 0 ! || strcmp (argv[0], "--with-values") == 0) ! print_values = PRINT_ALL_VALUES; ! else ! error (_("Unknown value for PRINT_VALUES: must be: 0 or %s, 1 or %s"), ! novalues, withvalues); ! } ! else ! print_values = PRINT_NO_VALUES; /* Check if the parameter is a "*" which means that we want to update all variables */ *************** *** 524,529 **** --- 554,561 ---- if (mi_version (uiout) > 1) cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, NULL); ui_out_field_string (uiout, "name", varobj_get_objname (*cc)); + if (print_values) + ui_out_field_string (uiout, "value", varobj_get_value (*cc)); ui_out_field_string (uiout, "in_scope", "true"); ui_out_field_string (uiout, "type_changed", "false"); if (mi_version (uiout) > 1) *** /home/nick/src/gdb/mi/mi-cmd-stack.c.~1.25.~ 2005-02-13 00:36:20.000000000 +1300 --- /home/nick/src/gdb/mi/mi-cmd-stack.c 2005-02-26 19:50:40.000000000 +1300 *************** *** 151,157 **** || strcmp (argv[0], "--simple-values") == 0) print_values = PRINT_SIMPLE_VALUES; else ! error (_("Unknown value for PRINT_VALUES: must be: 0 or \"--no-values\", 1 or \"--all-values\", 2 or \"--simple-values\"")); list_args_or_locals (1, print_values, frame); return MI_CMD_DONE; } --- 151,158 ---- || strcmp (argv[0], "--simple-values") == 0) print_values = PRINT_SIMPLE_VALUES; else ! error (_("Unknown value for PRINT_VALUES: must be: 0 or %s, 1 or %s, 2 or %s"), ! novalues, allvalues, simplevalues); list_args_or_locals (1, print_values, frame); return MI_CMD_DONE; } *** /home/nick/src/gdb/mi/mi-cmds.h.~1.15.~ 2005-01-25 22:30:39.000000000 +1300 --- /home/nick/src/gdb/mi/mi-cmds.h 2005-02-26 19:44:02.000000000 +1300 *************** *** 50,55 **** --- 50,60 ---- PRINT_SIMPLE_VALUES }; + extern const char novalues[]; + extern const char withvalues[]; + extern const char simplevalues[]; + extern const char allvalues[]; + typedef enum mi_cmd_result (mi_cmd_argv_ftype) (char *command, char **argv, int argc); /* Older MI commands have this interface. Retained until all old *** /home/nick/src/gdb/doc/gdb.texinfo.~1.232.~ 2005-02-13 00:36:20.000000000 +1300 --- /home/nick/src/gdb/doc/gdb.texinfo 2005-02-26 19:41:39.000000000 +1300 *************** *** 18797,18805 **** Returns a list of the children of the specified variable object. With just the variable object name as an argument or with an optional ! preceding argument of 0 or @code{--no-values}, prints only the names of the ! variables. With an optional preceding argument of 1 or @code{--all-values}, ! also prints their values. @subsubheading Example --- 18797,18805 ---- Returns a list of the children of the specified variable object. With just the variable object name as an argument or with an optional ! preceding argument of 0 or @code{--no-values}, prints only the names ! of the variables. With an optional value for @var{print-values} of 1 ! or @code{--with-values}, also prints their values. @subsubheading Example *************** *** 18921,18933 **** @subsubheading Synopsis @smallexample ! -var-update @{@var{name} | "*"@} @end smallexample Update the value of the variable object @var{name} by evaluating its expression after fetching all the new values from memory or registers. ! A @samp{*} causes all existing variable objects to be updated. @node Annotations @chapter @value{GDBN} Annotations --- 18921,18949 ---- @subsubheading Synopsis @smallexample ! -var-update [@var{print-values}] @{@var{name} | "*"@} @end smallexample Update the value of the variable object @var{name} by evaluating its expression after fetching all the new values from memory or registers. ! A @samp{*} causes all existing variable objects to be updated. With ! just a single argument or with an optional value for ! @var{print-values} of 0 or @code{--no-values}, prints only the names ! of the variables. A value for @var{print-values} of 1 or ! @code{--with-values}, also prints their values. + @subsubheading Example + + @smallexample + (@value{GDBP}) + -var-assign var1 3 + ^done,value="3" + (@value{GDBP}) + -var-update --all-values var1 + ^done,changelist=[@{name="var1",value="3",in_scope="true", + type_changed="false"@}] + (@value{GDBP}) + @end smallexample @node Annotations @chapter @value{GDBN} Annotations