Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Nick Roberts <nickrob@snap.net.nz>
To: Daniel Jacobowitz <drow@false.org>
Cc: Bob Rossi <bob@brasko.net>, Andrew Cagney <cagney@gnu.org>,
	gdb-patches@sources.redhat.com
Subject: Re: [PATCH: gdb/mi + doco] -var-update
Date: Mon, 02 May 2005 07:24:00 -0000	[thread overview]
Message-ID: <17013.54662.20554.239976@farnswood.snap.net.nz> (raw)
In-Reply-To: <20050502040526.GA10023@nevyn.them.org>

 > >  > > + const char novalues[] = "\"--no-values\"";
 > >  > > + const char withvalues[] = "\"--with-values\"";
 > >  > > + const char simplevalues[] = "\"--simple-values\"";
 > >  > > + const char allvalues[] = "\"--all-values\"";
 > >  >
 > >  > These could be made static.
 > > 
 > > Not really. I use them in my patch for mi-cmd-stack.c which I included in
 > > my earlier submission (Sun, 27 Feb 2005 14:18:11 +1300) but left out on
 > > (Mar 19) as it was unchanged.
 > 
 > If you want these to be global variables, you need to give them better
 > names.  Also, the GDB coding style means that multiple words
 > get_underscores_for_separation.

I've revised the last patch accordingly. (I sent it before I read this e-mail).

 > Please include the documentation with the patch anyway; a complete
 > patch lets reviewers see the whole picture more easily.

All attached. Please note that the subject title refers to the "other" patch.

Nick

2005-05-02  Nick Roberts  <nickrob@snap.net.nz>

	* mi/mi-cmds.h: Add extern declarations for string constants for
	MI command options.

	* mi/mi-cmd-var.c: Define string constants for MI command options.
	(mi_cmd_var_list_children): : Use string constants instead of
	literals for MI command options.
	(mi_cmd_var_update): New option --with-values for -var-update.
	(varobj_update_one): Add argument for new option.

	* mi/mi-cmd-stack.c (mi_cmd_stack_list_locals): Use string
	constants instead of literals for MI command options.

*** /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-05-02 16:51:37.000000000 +1200
***************
*** 50,55 ****
--- 50,60 ----
     PRINT_SIMPLE_VALUES
  };
  
+ extern const char mi_no_values[];
+ extern const char mi_with_values[];
+ extern const char mi_simple_values[];
+ extern const char mi_all_values[];
+ 
  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/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-05-02 16:54:02.000000000 +1200
***************
*** 30,38 ****
  #include <ctype.h>
  #include "gdb_string.h"
  
  extern int varobjdebug;		/* defined in varobj.c */
  
! static int varobj_update_one (struct varobj *var);
  
  /* VAROBJ operations */
  
--- 30,44 ----
  #include <ctype.h>
  #include "gdb_string.h"
  
+ const char mi_no_values[] = "--no-values";
+ const char mi_with_values[] = "--with-values";
+ const char mi_simple_values[] = "--simple-values";
+ const char mi_all_values[] = "--all-values";
+ 
  extern int varobjdebug;		/* defined in varobj.c */
  
! static int varobj_update_one (struct varobj *var,
! 			      enum print_values print_values);
  
  /* VAROBJ operations */
  
***************
*** 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;
--- 268,296 ----
      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], mi_no_values) == 0)
! 	print_values = PRINT_NO_VALUES;
!       else if (strcmp (argv[0], "1") == 0
! 	       || strcmp (argv[0], mi_with_values) == 0)
! 	print_values = PRINT_ALL_VALUES;
!       else
! 	error (_("Unknown value for PRINT_VALUES: \
! must be: 0 or \"%s\", 1 or \"%s\""), mi_no_values, mi_with_values);
!     }
!   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 */
--- 438,467 ----
    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], mi_no_values) == 0)
! 	print_values = PRINT_NO_VALUES;
!       else if (strcmp (argv[0], "1") == 0
! 	       || strcmp (argv[0], mi_with_values) == 0)
! 	print_values = PRINT_ALL_VALUES;
!       else
! 	error (_("Unknown value for PRINT_VALUES: \
! must be: 0 or \"%s\", 1 or \"%s\""), mi_no_values, mi_with_values);
!     }
!   else
!     print_values = PRINT_NO_VALUES;
  
    /* Check if the parameter is a "*" which means that we want
       to update all variables */
***************
*** 450,456 ****
        cr = rootlist;
        while (*cr != NULL)
  	{
! 	  varobj_update_one (*cr);
  	  cr++;
  	}
        xfree (rootlist);
--- 481,487 ----
        cr = rootlist;
        while (*cr != NULL)
  	{
! 	  varobj_update_one (*cr, print_values);
  	  cr++;
  	}
        xfree (rootlist);
***************
*** 467,473 ****
          cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, "changelist");
        else
          cleanup = make_cleanup_ui_out_list_begin_end (uiout, "changelist");
!       varobj_update_one (var);
        do_cleanups (cleanup);
      }
      return MI_CMD_DONE;
--- 498,504 ----
          cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, "changelist");
        else
          cleanup = make_cleanup_ui_out_list_begin_end (uiout, "changelist");
!       varobj_update_one (var, print_values);
        do_cleanups (cleanup);
      }
      return MI_CMD_DONE;
***************
*** 478,484 ****
     scope), and 1 if it succeeds. */
  
  static int
! varobj_update_one (struct varobj *var)
  {
    struct varobj **changelist;
    struct varobj **cc;
--- 509,515 ----
     scope), and 1 if it succeeds. */
  
  static int
! varobj_update_one (struct varobj *var, enum print_values print_values)
  {
    struct varobj **changelist;
    struct varobj **cc;
***************
*** 524,529 ****
--- 555,562 ----
  	  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-05-02 16:55:27.000000000 +1200
***************
*** 142,157 ****
     frame = get_selected_frame (NULL);
  
     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 if (strcmp (argv[0], "2") == 0
! 	    || 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;
  }
--- 142,159 ----
     frame = get_selected_frame (NULL);
  
     if (strcmp (argv[0], "0") == 0
!        || strcmp (argv[0], mi_no_values) == 0)
       print_values = PRINT_NO_VALUES;
     else if (strcmp (argv[0], "1") == 0
! 	    || strcmp (argv[0], mi_all_values) == 0)
       print_values = PRINT_ALL_VALUES;
     else if (strcmp (argv[0], "2") == 0
! 	    || strcmp (argv[0], mi_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\""),
! 	    mi_no_values, mi_all_values, mi_simple_values);
    list_args_or_locals (1, print_values, frame);
    return MI_CMD_DONE;
  }


*** /home/nick/src/gdb/doc/gdb.texinfo.~1.249.~	2005-05-02 14:28:29.000000000 +1200
--- /home/nick/src/gdb/doc/gdb.texinfo	2005-05-02 19:12:12.000000000 +1200
***************
*** 20331,20336 ****
--- 20331,20342 ----
  variables.  With an optional preceding argument of 1 or @code{--all-values},
  also prints their values.
  
+ 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
  
  @smallexample
***************
*** 20451,20463 ****
  @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
--- 20457,20485 ----
  @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


  reply	other threads:[~2005-05-02  7:24 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-02-20  2:06 Nick Roberts
2005-02-20  5:02 ` Eli Zaretskii
2005-02-20  5:51   ` Nick Roberts
2005-02-20 15:31     ` Eli Zaretskii
2005-02-21  4:33       ` Nick Roberts
2005-02-21  7:17         ` Eli Zaretskii
2005-02-22  9:23           ` Nick Roberts
2005-02-22  9:34             ` Eli Zaretskii
2005-02-27  5:03               ` Nick Roberts
2005-02-27 16:53                 ` Eli Zaretskii
2005-02-27 16:56                   ` Nick Roberts
2005-02-28 12:27                     ` Eli Zaretskii
2005-03-19  3:55                 ` Nick Roberts
2005-04-01  1:51                   ` Bob Rossi
2005-04-01 11:01                     ` Nick Roberts
2005-05-02  2:06                     ` Nick Roberts
2005-05-02  4:05                       ` Daniel Jacobowitz
2005-05-02  7:24                         ` Nick Roberts [this message]
2005-06-17  3:43                           ` Daniel Jacobowitz
2005-06-17 10:09                             ` Eli Zaretskii
2005-06-17 14:04                               ` Daniel Jacobowitz
2005-06-18  8:53                                 ` Eli Zaretskii
2005-07-03 19:56                                   ` Daniel Jacobowitz
2005-07-04  3:07                                     ` Nick Roberts
2005-07-04  3:51                                       ` Daniel Jacobowitz
2005-07-04  4:55                                     ` Eli Zaretskii
2005-07-04  5:02                                       ` Daniel Jacobowitz
2005-07-04 10:17                                         ` Nick Roberts
2005-07-06 10:00                                         ` Nick Roberts
2005-07-15  1:44                                           ` Daniel Jacobowitz
2005-07-15  3:59                                             ` Nick Roberts
2005-07-15  4:16                                               ` Daniel Jacobowitz
2005-07-15 15:11                                                 ` Nick Roberts
2005-07-15 15:28                                                   ` Daniel Jacobowitz
2005-07-15 22:37                                                     ` Nick Roberts
2005-07-04 21:15                                       ` Nick Roberts
2005-07-04 22:24                                         ` Eli Zaretskii
2005-07-05  3:25                                           ` Nick Roberts
2005-07-05 19:37                                             ` Eli Zaretskii
2005-07-15  9:42                                               ` Nick Roberts
2005-06-17 11:42                             ` Nick Roberts
2005-06-17 14:06                               ` Daniel Jacobowitz
2005-06-17 23:12                                 ` Nick Roberts
2005-02-21  2:36 ` Andrew Cagney
2005-02-21  3:28   ` Nick Roberts

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=17013.54662.20554.239976@farnswood.snap.net.nz \
    --to=nickrob@snap.net.nz \
    --cc=bob@brasko.net \
    --cc=cagney@gnu.org \
    --cc=drow@false.org \
    --cc=gdb-patches@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox