aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2018-04-27 15:52:44 -0600
committerTom Tromey <tom@tromey.com>2018-05-04 12:22:37 -0600
commit9be2ae8fc6b908746d9d7ebaf77aec8abba5dd2c (patch)
tree38e6471f828844582b6f39bd627884aac9738409
parentf0b3976bdcd29e308bed185630a24806037a717c (diff)
downloadfsf-binutils-gdb-9be2ae8fc6b908746d9d7ebaf77aec8abba5dd2c.zip
fsf-binutils-gdb-9be2ae8fc6b908746d9d7ebaf77aec8abba5dd2c.tar.gz
fsf-binutils-gdb-9be2ae8fc6b908746d9d7ebaf77aec8abba5dd2c.tar.bz2
Use previous count when 'x' command is repeated
About the 'x' command, the manual says: If you use <RET> to repeat the 'x' command, the repeat count N is used again; the other arguments default as for successive uses of 'x'. However, PR gdb/22619 points out that this does not work. This patch fixes the problem. ChangeLog 2018-05-04 Tom Tromey <tom@tromey.com> PR gdb/22619: * printcmd.c (last_count): New global. (x_command): Use saved count when repeating. testsuite/ChangeLog 2018-05-04 Tom Tromey <tom@tromey.com> PR gdb/22619: * gdb.base/long_long.exp (gdb_test_long_long): Add test for repeat behavior.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/printcmd.c11
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/gdb.base/long_long.exp5
4 files changed, 28 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 60079a1..7136be6 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
2018-05-04 Tom Tromey <tom@tromey.com>
+ PR gdb/22619:
+ * printcmd.c (last_count): New global.
+ (x_command): Use saved count when repeating.
+
+2018-05-04 Tom Tromey <tom@tromey.com>
+
* nto-procfs.c (do_closedir_cleanup): Remove.
(procfs_pidlist): Use gdb_dir_up.
* procfs.c (do_closedir_cleanup): Remove.
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index a6d6d7e..18c4110 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -62,6 +62,10 @@ static char last_format = 0;
static char last_size = 'w';
+/* Last specified count for the 'x' command. */
+
+static int last_count;
+
/* Default address to examine next, and associated architecture. */
static struct gdbarch *next_gdbarch;
@@ -1616,6 +1620,11 @@ x_command (const char *exp, int from_tty)
fmt.count = 1;
fmt.raw = 0;
+ /* If there is no expression and no format, use the most recent
+ count. */
+ if (exp == nullptr && last_count > 0)
+ fmt.count = last_count;
+
if (exp && *exp == '/')
{
const char *tmp = exp + 1;
@@ -1624,6 +1633,8 @@ x_command (const char *exp, int from_tty)
exp = (char *) tmp;
}
+ last_count = fmt.count;
+
/* If we have an expression, evaluate it and use it as the address. */
if (exp != 0 && *exp != 0)
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 73c4a2c..62fa5e0 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2018-05-04 Tom Tromey <tom@tromey.com>
+
+ PR gdb/22619:
+ * gdb.base/long_long.exp (gdb_test_long_long): Add test for repeat
+ behavior.
+
2018-05-04 Andrew Burgess <andrew.burgess@embecosm.com>
* gdb.base/maint.exp: Process output from 'maint print registers'
diff --git a/gdb/testsuite/gdb.base/long_long.exp b/gdb/testsuite/gdb.base/long_long.exp
index 85e08f0..b319c61 100644
--- a/gdb/testsuite/gdb.base/long_long.exp
+++ b/gdb/testsuite/gdb.base/long_long.exp
@@ -280,5 +280,10 @@ gdb_test_ptr "x/2ga g" "" "" "0x89abcdef.*0x77053977" "0x123456789abcdef.*0xa72e
gdb_test "x/2gc g" "-17 '.\[0-9\]*'.*119 'w'"
gdb_test "x/2gf g" "3.5127005640885037e-303.*-5.9822653797615723e-120"
+# Repeat behavior.
+gdb_test "x/2bx b" "0x01.*0xa7" "set up for repeat"
+send_gdb "\n"
+gdb_test "" "0x00.*0x00" "repeat x command"
+
gdb_exit
return 0