aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.base/gdbinit-history
diff options
context:
space:
mode:
authorPatrick Palka <patrick@parcs.ath.cx>2015-04-26 14:13:59 -0400
committerPatrick Palka <patrick@parcs.ath.cx>2015-05-13 09:26:54 -0400
commitebfd00d210ca6190239140b250499e194fd5af20 (patch)
tree84e4818522e594061a05093d548e86c36b90e659 /gdb/testsuite/gdb.base/gdbinit-history
parente69c76f4bfaf4c1b72f020f811afe03a5f7cd831 (diff)
downloadgdb-ebfd00d210ca6190239140b250499e194fd5af20.zip
gdb-ebfd00d210ca6190239140b250499e194fd5af20.tar.gz
gdb-ebfd00d210ca6190239140b250499e194fd5af20.tar.bz2
Fix PR gdb/17820
This patch is a comprehensive fix for PR 17820 which reports that using "set history size unlimited" inside one's gdbinit file doesn't really work. There are three small changes in this patch. The most important change this patch makes is to decode the argument of the "size" subcommand using add_setshow_zuinteger_unlimited_cmd() instead of using add_setshow_uinteger_cmd(). The new decoder takes an int * and maps unlimited to -1 whereas the old decoder takes an unsigned int * and maps unlimited to UINT_MAX. Using the new decoder simplifies our handling of unlimited and makes it easier to interface with readline which itself expects a signed-int history size. The second change is the factoring of the [stifle|unstifle]_history logic into a common function which is now used by both init_history() and set_history_size_command(). This is technically the change that fixes the PR itself. Thirdly, this patch initializes history_size_setshow_var to -2 to mean that the variable has not been set yet. Now init_history() tests for -2 instead of 0 to determine whether to give the variable a default value. This means that having "set history size 0" in one's gdbinit file will actually keep the history size at 0 and not reset it to 256. gdb/ChangeLog: PR gdb/17820 * top.c (history_size_setshow_var): Change type to signed. Initialize to -2. Update documentation. (set_readline_history_size): Define. (set_history_size_command): Use it. Remove logic for handling out-of-range sizes. (init_history): Use set_readline_history_size(). Test for a value of -2 instead of 0 when determining whether to set a default history size. (init_main): Decode the argument of the "size" command as a zuinteger_unlimited. gdb/testsuite/ChangeLog: PR gdb/17820 * gdb.base/gdbinit-history.exp: New test. * gdb.base/gdbinit-history/unlimited/.gdbinit: New file. * gdb.base/gdbinit-history/zero/.gdbinit: New file.
Diffstat (limited to 'gdb/testsuite/gdb.base/gdbinit-history')
-rw-r--r--gdb/testsuite/gdb.base/gdbinit-history/unlimited/.gdbinit1
-rw-r--r--gdb/testsuite/gdb.base/gdbinit-history/zero/.gdbinit1
2 files changed, 2 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/gdbinit-history/unlimited/.gdbinit b/gdb/testsuite/gdb.base/gdbinit-history/unlimited/.gdbinit
new file mode 100644
index 0000000..6604d8f
--- /dev/null
+++ b/gdb/testsuite/gdb.base/gdbinit-history/unlimited/.gdbinit
@@ -0,0 +1 @@
+set history size unlimited
diff --git a/gdb/testsuite/gdb.base/gdbinit-history/zero/.gdbinit b/gdb/testsuite/gdb.base/gdbinit-history/zero/.gdbinit
new file mode 100644
index 0000000..7cd6b24
--- /dev/null
+++ b/gdb/testsuite/gdb.base/gdbinit-history/zero/.gdbinit
@@ -0,0 +1 @@
+set history size 0