From patchwork Mon Jul 2 22:11:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Burgess X-Patchwork-Id: 28204 Received: (qmail 26517 invoked by alias); 2 Jul 2018 22:11:56 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 26075 invoked by uid 89); 2 Jul 2018 22:11:55 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=Hx-spam-relays-external:209.85.128.195, descriptions, H*RU:209.85.128.195, unlimited X-HELO: mail-wr0-f195.google.com Received: from mail-wr0-f195.google.com (HELO mail-wr0-f195.google.com) (209.85.128.195) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 02 Jul 2018 22:11:53 +0000 Received: by mail-wr0-f195.google.com with SMTP id f16-v6so16944889wrm.3 for ; Mon, 02 Jul 2018 15:11:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; h=from:to:cc:subject:date:message-id; bh=bz7A+o+TQQmdKs/+xRe1R6jCATc/vwgAq8uJicvPWB8=; b=MfwFF9/G1pR7nwEIxKR4KjfnxgveN0Bt3XrNgqfusPL7Vflg41LqD8dOpb3UXjJ4S2 fl+aVBZSbjq3IJjYtODMIFVvkB1U/stnPP/oV2jT7fZ+HIs7ILlZYDg13BDGTR6MfSOf qH4rjod4skXUUoO7yowvb0r767JuA5mqgdlWT56cpr0OLKX3g2hIjDAcMhxQDfTYDKaq UaHGVhbHCaRe0lnctSnZnYoE1zAusy9k76GA8HXB2pluScw/GySQNGAen8CWeRldWzU/ 4zMhnCeBTgkMoJ6m7dgomNuL3miqIWDL1D6hiZfU3ZR1hSFsWBJV23xJ5MhJ1NGkeGxn zpeA== Return-Path: Received: from localhost ([2a00:23c5:3ea9:3b00:6ca3:495a:a065:60b0]) by smtp.gmail.com with ESMTPSA id t124-v6sm9935626wmt.29.2018.07.02.15.11.50 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 02 Jul 2018 15:11:50 -0700 (PDT) From: Andrew Burgess To: gdb-patches@sourceware.org Cc: Andrew Burgess Subject: [PATCH] gdb: Use add_setshow_zuinteger_unlimited_cmd in remote.c Date: Mon, 2 Jul 2018 23:11:46 +0100 Message-Id: <20180702221146.20201-1-andrew.burgess@embecosm.com> X-IsSubscribed: yes Not sure if this requires a NEWS entry given the small change in acceptable command arguments. --- Switch to use add_setshow_zuinteger_unlimited_cmd for some of the control variables in remote.c. The variables hardware-watchpoint-limit, hardware-breakpoint-limit, and hardware-watchpoint-length-limit are all changed. For example, a user will now see this: (gdb) show remote hardware-breakpoint-limit The maximum number of target hardware breakpoints is unlimited. Instead of this: (gdb) show remote hardware-breakpoint-limit The maximum number of target hardware breakpoints is -1. And can do this: (gdb) set remote hardware-breakpoint-limit unlimited However, previously any negative value implied "unlimited", now only -1, or the text "unlimited" can be used for unlimited. Any other negative value will give an error about invalid input. This is a small change in the user interface, but, hopefully, this will not cause too many problems. I've also added show functions for these three variables to allow for internationalisation. gdb/ChangeLog: * remote.c (show_hardware_watchpoint_limit): New function. (show_hardware_watchpoint_length_limit): New function. (show_hardware_breakpoint_limit): New function. (_initialize_remote): Use add_setshow_zuinteger_unlimited_cmd where appropriate, update help text. gdb/doc/ChangeLog: * gdb.texinfo (Remote Configuration): Update descriptions for set/show of hardware-watchpoint-limit, hardware-breakpoint-limit, and hardware-watchpoint-length-limit variables. --- gdb/ChangeLog | 8 ++++++++ gdb/doc/ChangeLog | 6 ++++++ gdb/doc/gdb.texinfo | 18 ++++++++++++----- gdb/remote.c | 58 ++++++++++++++++++++++++++++++++++++++--------------- 4 files changed, 69 insertions(+), 21 deletions(-) diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 7fb6ac56364..e3937045593 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -21161,16 +21161,24 @@ @anchor{set remote hardware-breakpoint-limit} @item set remote hardware-watchpoint-limit @var{limit} @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. +Restrict @value{GDBN} to using @var{limit} remote hardware watchpoints +or breakpoints. The @var{limit} can be set to 0 to disable hardware +watchpoints or breakpoints, and @code{unilmited} for unlimited +watchpoints or breakpoints. + +@item show remote hardware-watchpoint-limit +@itemx show remote hardware-breakpoint-limit +Show the current limit for the number of hardware watchpoints or +breakpoints that @value{GDBN} can use. @cindex limit hardware watchpoints length @cindex remote target, limit watchpoints length @anchor{set remote hardware-watchpoint-length-limit} @item set remote hardware-watchpoint-length-limit @var{limit} -Restrict @value{GDBN} to using @var{limit} bytes for the maximum length of -a remote hardware watchpoint. A limit of -1, the default, is treated -as unlimited. +Restrict @value{GDBN} to using @var{limit} bytes for the maximum +length of a remote hardware watchpoint. A @var{limit} of 0 disables +hardware watchpoints and @code{unlimited} allows watchpoints of any +length. @item show remote hardware-watchpoint-length-limit Show the current limit (in bytes) of the maximum length of diff --git a/gdb/remote.c b/gdb/remote.c index f88e801dbef..90492f58902 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -1728,6 +1728,36 @@ show_memory_write_packet_size (const char *args, int from_tty) show_memory_packet_size (&memory_write_packet_config); } +/* Show the number of hardware watchpoints that can be used. */ + +static void +show_hardware_watchpoint_limit (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) +{ + fprintf_filtered (file, _("The maximum number of target hardware " + "watchpoints is %s.\n"), value); +} + +/* Show the length limit (in bytes) for hardware watchpoints. */ + +static void +show_hardware_watchpoint_length_limit (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) +{ + fprintf_filtered (file, _("The maximum length (in bytes) of a target " + "hardware watchpoint is %s.\n"), value); +} + +/* Show the number of hardware breakpoints that can be used. */ + +static void +show_hardware_breakpoint_limit (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) +{ + fprintf_filtered (file, _("The maximum number of target hardware " + "breakpoints is %s.\n"), value); +} + long remote_target::get_memory_write_packet_size () { @@ -14347,32 +14377,28 @@ further restriction and ``limit'' to enable that restriction."), _("Show the maximum number of bytes per memory-read packet."), &remote_show_cmdlist); - add_setshow_zinteger_cmd ("hardware-watchpoint-limit", no_class, + add_setshow_zuinteger_unlimited_cmd ("hardware-watchpoint-limit", no_class, &remote_hw_watchpoint_limit, _("\ Set the maximum number of target hardware watchpoints."), _("\ Show the maximum number of target hardware watchpoints."), _("\ -Specify a negative limit for unlimited."), - NULL, NULL, /* FIXME: i18n: The maximum - number of target hardware - watchpoints is %s. */ - &remote_set_cmdlist, &remote_show_cmdlist); - add_setshow_zinteger_cmd ("hardware-watchpoint-length-limit", no_class, +Specify \"unlimited\" for unlimited hardware watchpoints."), + NULL, show_hardware_watchpoint_limit, + &remote_set_cmdlist, + &remote_show_cmdlist); + add_setshow_zuinteger_unlimited_cmd ("hardware-watchpoint-length-limit", + no_class, &remote_hw_watchpoint_length_limit, _("\ Set the maximum length (in bytes) of a target hardware watchpoint."), _("\ Show the maximum length (in bytes) of a target hardware watchpoint."), _("\ -Specify a negative limit for unlimited."), - NULL, NULL, /* FIXME: i18n: The maximum - length (in bytes) of a target - hardware watchpoint is %s. */ +Specify \"unlimited\" to allow unlimited sized watchpoints."), + NULL, show_hardware_watchpoint_length_limit, &remote_set_cmdlist, &remote_show_cmdlist); - add_setshow_zinteger_cmd ("hardware-breakpoint-limit", no_class, + add_setshow_zuinteger_unlimited_cmd ("hardware-breakpoint-limit", no_class, &remote_hw_breakpoint_limit, _("\ Set the maximum number of target hardware breakpoints."), _("\ Show the maximum number of target hardware breakpoints."), _("\ -Specify a negative limit for unlimited."), - NULL, NULL, /* FIXME: i18n: The maximum - number of target hardware - breakpoints is %s. */ +Specify \"unlimited\" for unlimited hardware breakpoints."), + NULL, show_hardware_breakpoint_limit, &remote_set_cmdlist, &remote_show_cmdlist); add_setshow_zuinteger_cmd ("remoteaddresssize", class_obscure,