From 055303e28f70880f7b2c3e44df0ba7646fc85cf8 Mon Sep 17 00:00:00 2001 From: Andrew Burgess Date: Mon, 2 Jul 2018 22:28:22 +0100 Subject: [PATCH] gdb: Use add_setshow_zuinteger_unlimited_cmd in remote.c 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 | 61 +++++++++++++++++++++++++++++++++------------ 4 files changed, 72 insertions(+), 21 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 70b4d443d0d..25aded3c292 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2018-07-09 Andrew Burgess + + * 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. + 2018-07-09 Tom Tromey * Makefile.in (CDEPS): Don't mention XM_CDEPS. diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index fbdab9bdcfd..adb97a56fdf 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,9 @@ +2018-07-09 Andrew Burgess + + * gdb.texinfo (Remote Configuration): Update descriptions for + set/show of hardware-watchpoint-limit, hardware-breakpoint-limit, + and hardware-watchpoint-length-limit variables. + 2018-07-02 Maciej W. Rozycki PR tdep/8282 diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 91ec2199580..245d3f1b973 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -21161,16 +21161,24 @@ responses. @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{unlimited} 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 d5accc64c78..297c198ed69 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -1728,6 +1728,39 @@ 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 +14380,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 watchpoints of unlimited size."), + 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, -- 2.30.2