From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8367 invoked by alias); 27 Oct 2006 21:59:59 -0000 Received: (qmail 8345 invoked by uid 22791); 27 Oct 2006 21:59:57 -0000 X-Spam-Check-By: sourceware.org Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Fri, 27 Oct 2006 21:59:51 +0000 Received: from drow by nevyn.them.org with local (Exim 4.54) id 1GdZjw-0001jk-Rs for gdb-patches@sourceware.org; Fri, 27 Oct 2006 17:59:49 -0400 Date: Fri, 27 Oct 2006 21:59:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sourceware.org Subject: Re: [rfc] "maint set remote" Message-ID: <20061027215948.GA5970@nevyn.them.org> Mail-Followup-To: gdb-patches@sourceware.org References: <20061026212639.GA21608@nevyn.them.org> <20061027145036.GA19544@nevyn.them.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061027145036.GA19544@nevyn.them.org> User-Agent: Mutt/1.5.13 (2006-08-11) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2006-10/txt/msg00295.txt.bz2 On Fri, Oct 27, 2006 at 10:50:36AM -0400, Daniel Jacobowitz wrote: > On Fri, Oct 27, 2006 at 11:15:57AM +0200, Eli Zaretskii wrote: > > Thanks, but you've removed all the text that explained what GDB > > features rely on each packet. For example, the documentation of > > verbose-resume-packet mentioned that it affects debugging of > > multithreaded programs. > > > > How about adding another column to the @multitable to include that > > information where appropriate? > > Shouldn't that be in the documentation for the packet (where it > generally already is)? If you still think it should be by the > commands, I can add a column with brief pointers. You're right; is the attached better? The PDF version of this doesn't look great, but there's not much I can see to do about it (the column spacing comes out funny, and the hyphenation is a bit random). -- Daniel Jacobowitz CodeSourcery 2006-10-26 Daniel Jacobowitz * remote.c (maint_set_remote_cmdlist, maint_show_remote_cmdlist): New. (add_packet_config_cmd): Remove legacy argument. Use the new lists. (remote_Z_packet_detect, set_remote_protocol_Z_packet_cmd) (show_remote_protocol_Z_packet_cmd): Delete. (set_remote_cmd): Call help_list. (show_remote_cmd): Just call cmd_show_list. (maint_set_remote_cmd, maint_show_remote_cmd): New. (_initialize_remote): Add "maint set remote". Delete Z-packet. Update calls to add_packet_config_cmd. * cli/cli-setshow.c (cmd_show_list): Handle non-show_cmd entries. * NEWS: Mention "maint set remote" and "maint show remote". 2006-10-26 Daniel Jacobowitz * gdb.texinfo (Remote configuration): Remove packet configuration commands. (Maintenance Commands): Add "maint set remote" and "maint show remote". (General Query Packets): Remove reference to read-aux-vector-packet. Index: NEWS =================================================================== RCS file: /cvs/src/src/gdb/NEWS,v retrieving revision 1.198 diff -u -p -r1.198 NEWS --- NEWS 18 Oct 2006 15:29:18 -0000 1.198 +++ NEWS 27 Oct 2006 21:57:53 -0000 @@ -33,6 +33,14 @@ show trace-commands a number of `+' symbols representing the nesting depth. The source command now has a `-v' option to enable the same feature. +* Moved commands + +maint set remote +maint show remote + The individual packet settings have been moved from "set remote" and + "show remote" to reflect the fact that they should generally not be + used. + * REMOVED features The ARM Demon monitor support (RDP protocol, "target rdp"). Index: remote.c =================================================================== RCS file: /cvs/src/src/gdb/remote.c,v retrieving revision 1.236 diff -u -p -r1.236 remote.c --- remote.c 21 Oct 2006 17:59:08 -0000 1.236 +++ remote.c 27 Oct 2006 21:57:54 -0000 @@ -214,6 +214,8 @@ void _initialize_remote (void); static struct cmd_list_element *remote_set_cmdlist; static struct cmd_list_element *remote_show_cmdlist; +static struct cmd_list_element *maint_set_remote_cmdlist; +static struct cmd_list_element *maint_show_remote_cmdlist; /* Description of the remote protocol state for the currently connected target. This is per-target state, and independent of the @@ -734,7 +736,7 @@ show_packet_config_cmd (struct packet_co static void add_packet_config_cmd (struct packet_config *config, const char *name, - const char *title, int legacy) + const char *title) { char *set_doc; char *show_doc; @@ -748,23 +750,14 @@ add_packet_config_cmd (struct packet_con name, title); show_doc = xstrprintf ("Show current use of remote protocol `%s' (%s) packet", name, title); - /* set/show TITLE-packet {auto,on,off} */ + /* maint set/show TITLE-packet {auto,on,off} */ cmd_name = xstrprintf ("%s-packet", title); add_setshow_auto_boolean_cmd (cmd_name, class_obscure, &config->detect, set_doc, show_doc, NULL, /* help_doc */ set_remote_protocol_packet_cmd, show_remote_protocol_packet_cmd, - &remote_set_cmdlist, &remote_show_cmdlist); - /* set/show remote NAME-packet {auto,on,off} -- legacy. */ - if (legacy) - { - char *legacy_name; - legacy_name = xstrprintf ("%s-packet", name); - add_alias_cmd (legacy_name, cmd_name, class_obscure, 0, - &remote_set_cmdlist); - add_alias_cmd (legacy_name, cmd_name, class_obscure, 0, - &remote_show_cmdlist); - } + &maint_set_remote_cmdlist, + &maint_show_remote_cmdlist); } static enum packet_result @@ -925,35 +918,6 @@ enum Z_packet_type NR_Z_PACKET_TYPES }; -/* For compatibility with older distributions. Provide a ``set remote - Z-packet ...'' command that updates all the Z packet types. */ - -static enum auto_boolean remote_Z_packet_detect; - -static void -set_remote_protocol_Z_packet_cmd (char *args, int from_tty, - struct cmd_list_element *c) -{ - int i; - for (i = 0; i < NR_Z_PACKET_TYPES; i++) - { - remote_protocol_packets[PACKET_Z0 + i].detect = remote_Z_packet_detect; - update_packet_config (&remote_protocol_packets[PACKET_Z0 + i]); - } -} - -static void -show_remote_protocol_Z_packet_cmd (struct ui_file *file, int from_tty, - struct cmd_list_element *c, - const char *value) -{ - int i; - for (i = 0; i < NR_Z_PACKET_TYPES; i++) - { - show_packet_config_cmd (&remote_protocol_packets[PACKET_Z0 + i]); - } -} - /* Should we try the 'ThreadInfo' query packet? This variable (NOT available to the user: auto-detect only!) @@ -6082,30 +6046,26 @@ Specify the serial device it is connecte static void set_remote_cmd (char *args, int from_tty) { + help_list (remote_set_cmdlist, "set remote ", -1, gdb_stdout); } static void show_remote_cmd (char *args, int from_tty) { - /* We can't just use cmd_show_list here, because we want to skip - the redundant "show remote Z-packet". */ - struct cleanup *showlist_chain; - struct cmd_list_element *list = remote_show_cmdlist; - - showlist_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "showlist"); - for (; list != NULL; list = list->next) - if (strcmp (list->name, "Z-packet") == 0) - continue; - else if (list->type == show_cmd) - { - struct cleanup *option_chain - = make_cleanup_ui_out_tuple_begin_end (uiout, "option"); - ui_out_field_string (uiout, "name", list->name); - ui_out_text (uiout, ": "); - do_setshow_command ((char *) NULL, from_tty, list); - /* Close the tuple. */ - do_cleanups (option_chain); - } + cmd_show_list (remote_show_cmdlist, from_tty, ""); +} + +static void +maint_set_remote_cmd (char *args, int from_tty) +{ + help_list (maint_set_remote_cmdlist, "maintenance set remote ", + -1, gdb_stdout); +} + +static void +maint_show_remote_cmd (char *args, int from_tty) +{ + cmd_show_list (maint_show_remote_cmdlist, from_tty, ""); } static void @@ -6176,14 +6136,12 @@ _initialize_remote (void) add_prefix_cmd ("remote", class_maintenance, set_remote_cmd, _("\ Remote protocol specific variables\n\ -Configure various remote-protocol specific variables such as\n\ -the packets being used"), +Configure various remote-protocol specific variables."), &remote_set_cmdlist, "set remote ", 0 /* allow-unknown */, &setlist); add_prefix_cmd ("remote", class_maintenance, show_remote_cmd, _("\ Remote protocol specific variables\n\ -Configure various remote-protocol specific variables such as\n\ -the packets being used"), +Configure various remote-protocol specific variables."), &remote_show_cmdlist, "show remote ", 0 /* allow-unknown */, &showlist); @@ -6264,62 +6222,63 @@ Show the maximum size of the address (in NULL, /* FIXME: i18n: */ &setlist, &showlist); + /* Add maint set remote and maint show remote, for things which + should almost always be left alone, but can be useful in + rare cases or for testing. */ + add_prefix_cmd ("remote", class_maintenance, maint_set_remote_cmd, _("\ +Internal remote protocol variables\n\ +Configure internal settings of the remote protocol, e.g. override\n\ +the packets being used."), + &maint_set_remote_cmdlist, "maintenance set remote ", + 0 /* allow-unknown */, &maintenance_set_cmdlist); + add_prefix_cmd ("remote", class_maintenance, maint_show_remote_cmd, _("\ +Internal remote protocol variables\n\ +Configure internal settings of the remote protocol, e.g. override\n\ +the packets being used."), + &maint_show_remote_cmdlist, "maintenance show remote ", + 0 /* allow-unknown */, &maintenance_show_cmdlist); + add_packet_config_cmd (&remote_protocol_packets[PACKET_X], - "X", "binary-download", 1); + "X", "binary-download"); add_packet_config_cmd (&remote_protocol_packets[PACKET_vCont], - "vCont", "verbose-resume", 0); + "vCont", "verbose-resume"); add_packet_config_cmd (&remote_protocol_packets[PACKET_qSymbol], - "qSymbol", "symbol-lookup", 0); + "qSymbol", "symbol-lookup"); add_packet_config_cmd (&remote_protocol_packets[PACKET_P], - "P", "set-register", 1); + "P", "set-register"); add_packet_config_cmd (&remote_protocol_packets[PACKET_p], - "p", "fetch-register", 1); + "p", "fetch-register"); add_packet_config_cmd (&remote_protocol_packets[PACKET_Z0], - "Z0", "software-breakpoint", 0); + "Z0", "software-breakpoint"); add_packet_config_cmd (&remote_protocol_packets[PACKET_Z1], - "Z1", "hardware-breakpoint", 0); + "Z1", "hardware-breakpoint"); add_packet_config_cmd (&remote_protocol_packets[PACKET_Z2], - "Z2", "write-watchpoint", 0); + "Z2", "write-watchpoint"); add_packet_config_cmd (&remote_protocol_packets[PACKET_Z3], - "Z3", "read-watchpoint", 0); + "Z3", "read-watchpoint"); add_packet_config_cmd (&remote_protocol_packets[PACKET_Z4], - "Z4", "access-watchpoint", 0); + "Z4", "access-watchpoint"); add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_auxv], - "qXfer:auxv:read", "read-aux-vector", 0); + "qXfer:auxv:read", "read-aux-vector"); add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_memory_map], - "qXfer:memory-map:read", "memory-map", 0); + "qXfer:memory-map:read", "memory-map"); add_packet_config_cmd (&remote_protocol_packets[PACKET_qGetTLSAddr], - "qGetTLSAddr", "get-thread-local-storage-address", - 0); + "qGetTLSAddr", "get-thread-local-storage-address"); add_packet_config_cmd (&remote_protocol_packets[PACKET_qSupported], - "qSupported", "supported-packets", 0); - - /* Keep the old ``set remote Z-packet ...'' working. Each individual - Z sub-packet has its own set and show commands, but users may - have sets to this variable in their .gdbinit files (or in their - documentation). */ - add_setshow_auto_boolean_cmd ("Z-packet", class_obscure, - &remote_Z_packet_detect, _("\ -Set use of remote protocol `Z' packets"), _("\ -Show use of remote protocol `Z' packets "), _("\ -When set, GDB will attempt to use the remote breakpoint and watchpoint\n\ -packets."), - set_remote_protocol_Z_packet_cmd, - show_remote_protocol_Z_packet_cmd, /* FIXME: i18n: Use of remote protocol `Z' packets is %s. */ - &remote_set_cmdlist, &remote_show_cmdlist); + "qSupported", "supported-packets"); /* Eventually initialize fileio. See fileio.c */ initialize_remote_fileio (remote_set_cmdlist, remote_show_cmdlist); Index: cli/cli-setshow.c =================================================================== RCS file: /cvs/src/src/gdb/cli/cli-setshow.c,v retrieving revision 1.27 diff -u -p -r1.27 cli-setshow.c --- cli/cli-setshow.c 17 Dec 2005 22:40:17 -0000 1.27 +++ cli/cli-setshow.c 27 Oct 2006 21:57:54 -0000 @@ -405,14 +405,17 @@ cmd_show_list (struct cmd_list_element * /* Close the tuple. */ do_cleanups (optionlist_chain); } - if (list->type == show_cmd) + else { struct cleanup *option_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "option"); ui_out_text (uiout, prefix); ui_out_field_string (uiout, "name", list->name); ui_out_text (uiout, ": "); - do_setshow_command ((char *) NULL, from_tty, list); + if (list->type == show_cmd) + do_setshow_command ((char *) NULL, from_tty, list); + else + cmd_func (list, NULL, from_tty); /* Close the tuple. */ do_cleanups (option_chain); } Index: doc/gdb.texinfo =================================================================== RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v retrieving revision 1.365 diff -u -p -r1.365 gdb.texinfo --- doc/gdb.texinfo 21 Oct 2006 13:06:03 -0000 1.365 +++ doc/gdb.texinfo 27 Oct 2006 21:57:57 -0000 @@ -12760,132 +12760,6 @@ responses. @itemx set remote hardware-breakpoint-limit @var{limit} Restrict @value{GDBN} to using @var{limit} remote hardware breakpoint or watchpoints. A limit of -1, the default, is treated as unlimited. - -@item set remote fetch-register-packet -@itemx set remote set-register-packet -@itemx set remote P-packet -@itemx set remote p-packet -@cindex P-packet -@cindex fetch registers from remote targets -@cindex set registers in remote targets -Determine whether @value{GDBN} can set and fetch registers from the -remote target using the @samp{P} packets. The default depends on the -remote stub's support of the @samp{P} packets (@value{GDBN} queries -the stub when this packet is first required). - -@item show remote fetch-register-packet -@itemx show remote set-register-packet -@itemx show remote P-packet -@itemx show remote p-packet -Show the current setting of using the @samp{P} packets for setting and -fetching registers from the remote target. - -@cindex binary downloads -@cindex X-packet -@item set remote binary-download-packet -@itemx set remote X-packet -Determine whether @value{GDBN} sends downloads in binary mode using -the @samp{X} packets. The default is on. - -@item show remote binary-download-packet -@itemx show remote X-packet -Show the current setting of using the @samp{X} packets for binary -downloads. - -@item set remote read-aux-vector-packet -@cindex auxiliary vector of remote target -@cindex @code{auxv}, and remote targets -Set the use of the remote protocol's @samp{qXfer:auxv:read} (target -auxiliary vector) request. This request is used to fetch the -remote target's @dfn{auxiliary vector}, see @ref{OS Information, -Auxiliary Vector}. The default setting depends on the remote stub's -support of this request (@value{GDBN} queries the stub when this -request is first required). @xref{General Query Packets, qXfer}, for -more information about this request. - -@item show remote read-aux-vector-packet -Show the current setting of use of the @samp{qXfer:auxv:read} request. - -@item set remote symbol-lookup-packet -@cindex remote symbol lookup request -Set the use of the remote protocol's @samp{qSymbol} (target symbol -lookup) request. This request is used to communicate symbol -information to the remote target, e.g., whenever a new shared library -is loaded by the remote (@pxref{Files, shared libraries}). The -default setting depends on the remote stub's support of this request -(@value{GDBN} queries the stub when this request is first required). -@xref{General Query Packets, qSymbol}, for more information about this -request. - -@item show remote symbol-lookup-packet -Show the current setting of use of the @samp{qSymbol} request. - -@item set remote verbose-resume-packet -@cindex resume remote target -@cindex signal thread, and remote targets -@cindex single-step thread, and remote targets -@cindex thread-specific operations on remote targets -Set the use of the remote protocol's @samp{vCont} (descriptive resume) -request. This request is used to resume specific threads in the -remote target, and to single-step or signal them. The default setting -depends on the remote stub's support of this request (@value{GDBN} -queries the stub when this request is first required). This setting -affects debugging of multithreaded programs: if @samp{vCont} cannot be -used, @value{GDBN} might be unable to single-step a specific thread, -especially under @code{set scheduler-locking off}; it is also -impossible to pause a specific thread. @xref{Packets, vCont}, for -more details. - -@item show remote verbose-resume-packet -Show the current setting of use of the @samp{vCont} request - -@item set remote software-breakpoint-packet -@itemx set remote hardware-breakpoint-packet -@itemx set remote write-watchpoint-packet -@itemx set remote read-watchpoint-packet -@itemx set remote access-watchpoint-packet -@itemx set remote Z-packet -@cindex Z-packet -@cindex remote hardware breakpoints and watchpoints -These commands enable or disable the use of @samp{Z} packets for -setting breakpoints and watchpoints in the remote target. The default -depends on the remote stub's support of the @samp{Z} packets -(@value{GDBN} queries the stub when each packet is first required). -The command @code{set remote Z-packet}, kept for back-compatibility, -turns on or off all the features that require the use of @samp{Z} -packets. - -@item show remote software-breakpoint-packet -@itemx show remote hardware-breakpoint-packet -@itemx show remote write-watchpoint-packet -@itemx show remote read-watchpoint-packet -@itemx show remote access-watchpoint-packet -@itemx show remote Z-packet -Show the current setting of @samp{Z} packets usage. - -@item set remote get-thread-local-storage-address -@kindex set remote get-thread-local-storage-address -@cindex thread local storage of remote targets -This command enables or disables the use of the @samp{qGetTLSAddr} -(Get Thread Local Storage Address) request packet. The default -depends on whether the remote stub supports this request. -@xref{General Query Packets, qGetTLSAddr}, for more details about this -packet. - -@item show remote get-thread-local-storage-address -@kindex show remote get-thread-local-storage-address -Show the current setting of @samp{qGetTLSAddr} packet usage. - -@item set remote supported-packets -@kindex set remote supported-packets -@cindex query supported packets of remote targets -This command enables or disables the use of the @samp{qSupported} -request packet. @xref{General Query Packets, qSupported}, for more -details about this packet. The default is to use @samp{qSupported}. - -@item show remote supported-packets -@kindex show remote supported-packets -Show the current setting of @samp{qSupported} packet usage. @end table @node remote stub @@ -22631,6 +22505,87 @@ data in a @file{gmon.out} file, be sure Configuring with @samp{--enable-profiling} arranges for @value{GDBN} to be compiled with the @samp{-pg} compiler option. +@kindex maint set remote +@kindex maint show remote +@cindex remote packets, enabling and disabling +@item maint set remote +@itemx maint show remote + +The @value{GDBN} remote protocol autodetects the packets supported by +your debugging stub. If you need to override the autodetection, you +can use these commands to enable or disable individual packets. Each +packet can be set to @samp{on} (the remote target supports this +packet), @samp{off} (the remote target does not support this packet), +or @samp{auto} (detect remote target support for this packet). They +all default to @samp{auto}. For more information about each packet, +see @ref{Remote Protocol}. + +During normal use, you should not have to use any of these commands. +If you do, that may be a bug in your remote debugging stub, or a bug +in @value{GDBN}. You may want to report the problem to the +@value{GDBN} developers. + +The available settings are: + +@multitable @columnfractions 0.3 0.2 0.35 +@item Command Name +@tab Remote Packet +@tab Related Features + +@item @code{fetch-register-packet} +@tab @code{p} +@tab @code{info registers} + +@item @code{set-register-packet} +@tab @code{P} +@tab @code{set} + +@item @code{binary-download-packet} +@tab @code{X} +@tab @code{load}, @code{set} + +@item @code{read-aux-vector-packet} +@tab @code{qXfer:auxv:read} +@tab @code{info auxv} + +@item @code{symbol-lookup-packet} +@tab @code{qSymbol} +@tab Detecting multiple threads + +@item @code{verbose-resume-packet} +@tab @code{vCont} +@tab Stepping or resuming multiple threads + +@item @code{software-breakpoint-packet} +@tab @code{Z0} +@tab @code{break} + +@item @code{hardware-breakpoint-packet} +@tab @code{Z1} +@tab @code{hbreak} + +@item @code{write-watchpoint-packet} +@tab @code{Z2} +@tab @code{watch} + +@item @code{read-watchpoint-packet} +@tab @code{Z3} +@tab @code{rwatch} + +@item @code{access-watchpoint-packet} +@tab @code{Z4} +@tab @code{awatch} + +@item @code{get-thread-local-storage-address-packet} +@tab @code{qGetTLSAddr} +@tab Displaying @code{__thread} variables + +@item @code{supported-packets} +@tab @code{qSupported} +@tab Remote communications parameters + +@end multitable + @kindex maint show-debug-regs @cindex x86 hardware debug registers @item maint show-debug-regs @@ -23908,8 +23863,7 @@ formats, listed below. @item qXfer:auxv:read::@var{offset},@var{length} @anchor{qXfer auxiliary vector read} Access the target's @dfn{auxiliary vector}. @xref{OS Information, -auxiliary vector}, and @ref{Remote configuration, -read-aux-vector-packet}. Note @var{annex} must be empty. +auxiliary vector}. Note @var{annex} must be empty. This packet is not probed by default; the remote stub must request it, by suppling an appropriate @samp{qSupported} response (@pxref{qSupported}).