From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19332 invoked by alias); 26 Oct 2006 21:26:52 -0000 Received: (qmail 19323 invoked by uid 22791); 26 Oct 2006 21:26:50 -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; Thu, 26 Oct 2006 21:26:45 +0000 Received: from drow by nevyn.them.org with local (Exim 4.54) id 1GdCkJ-0005eI-IV for gdb-patches@sourceware.org; Thu, 26 Oct 2006 17:26:39 -0400 Date: Thu, 26 Oct 2006 21:26:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sourceware.org Subject: [rfc] "maint set remote" Message-ID: <20061026212639.GA21608@nevyn.them.org> Mail-Followup-To: gdb-patches@sourceware.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline 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/msg00287.txt.bz2 Per my discussion with Eli earlier today. This patch removes most of the documentation for the individual packet commands, moves them under "maint", and aggregates their documentation into a table there. The new bits of interest: +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: I also fixed "show remote" while I was here; it became apparent that it wasn't showing all of the settings once I cut down on the number. Comments? OK? -- 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: 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 26 Oct 2006 21:18:06 -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 26 Oct 2006 21:18:07 -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 26 Oct 2006 21:18:10 -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,72 @@ 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 @samp @columnfractions 0.7 0.3 +@item Command Name +@tab Remote Packet + +@item fetch-register-packet +@tab p + +@item set-register-packet +@tab P + +@item binary-download-packet +@tab X + +@item read-aux-vector-packet +@tab qXfer:auxv:read + +@item symbol-lookup-packet +@tab qSymbol + +@item verbose-resume-packet +@tab vCont + +@item software-breakpoint-packet +@tab Z0 + +@item hardware-breakpoint-packet +@tab Z1 + +@item write-watchpoint-packet +@tab Z2 + +@item read-watchpoint-packet +@tab Z3 + +@item access-watchpoint-packet +@tab Z4 + +@item get-thread-local-storage-address-packet +@tab qGetTLSAddr + +@item supported-packets +@tab qSupported +@end multitable + @kindex maint show-debug-regs @cindex x86 hardware debug registers @item maint show-debug-regs @@ -23908,8 +23848,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}). 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 26 Oct 2006 21:23:41 -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").