summaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorHannes Domani <ssbssa@yahoo.de>2020-10-08 17:38:32 +0200
committerHannes Domani <ssbssa@yahoo.de>2020-10-09 13:51:50 +0200
commit3d87245cc1a4310264d9cb0e4566517d3455a7f5 (patch)
treef40422303f174a6b63d393fe41457400e4f82513 /gdb
parentbbb826f5e92e26815357b7f3243f6b3453ec5bc1 (diff)
downloadbinutils-gdb-3d87245cc1a4310264d9cb0e4566517d3455a7f5.tar.gz
Handle void results as unformatted prints
When printing void results without any format letter, they are output as expected: (gdb) p $abcd $1 = void (gdb) p (void)10 $2 = void But if any format letter (besides s) is used, it always outputs zero: (gdb) p/x $abcd $3 = 0x0 (gdb) p/x (void)10 $4 = 0x0 So this adds void results to the types handled like unformatted prints. gdb/ChangeLog: 2020-10-09 Hannes Domani <ssbssa@yahoo.de> PR exp/26714 * printcmd.c (print_formatted): Handle void results as unformatted prints. gdb/testsuite/ChangeLog: 2020-10-09 Hannes Domani <ssbssa@yahoo.de> PR exp/26714 * gdb.base/printcmds.exp: Add tests for void results.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/printcmd.c1
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/gdb.base/printcmds.exp5
4 files changed, 17 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 28fa696e3d5..5df537c2792 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2020-10-09 Hannes Domani <ssbssa@yahoo.de>
+
+ PR exp/26714
+ * printcmd.c (print_formatted): Handle void results as
+ unformatted prints.
+
2020-10-09 Andrew Burgess <andrew.burgess@embecosm.com>
* arch/aarch32.c (aarch32_create_target_description): Release the
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index d3b1075ed8f..f9b42cfda71 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -311,6 +311,7 @@ print_formatted (struct value *val, int size,
}
if (options->format == 0 || options->format == 's'
+ || type->code () == TYPE_CODE_VOID
|| type->code () == TYPE_CODE_REF
|| type->code () == TYPE_CODE_ARRAY
|| type->code () == TYPE_CODE_STRING
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 3d88199c63c..e1b623b7fec 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2020-10-09 Hannes Domani <ssbssa@yahoo.de>
+
+ PR exp/26714
+ * gdb.base/printcmds.exp: Add tests for void results.
+
2020-10-09 Jan Vrany <jan.vrany@labware.com>
* gdb.mi/mi-cmd-param-changed.exp: Check that notification is
diff --git a/gdb/testsuite/gdb.base/printcmds.exp b/gdb/testsuite/gdb.base/printcmds.exp
index 0a96b228b89..08a09613031 100644
--- a/gdb/testsuite/gdb.base/printcmds.exp
+++ b/gdb/testsuite/gdb.base/printcmds.exp
@@ -1005,6 +1005,11 @@ gdb_test "print sizeof (\$cvar)" " = 4"
# Similarly, printf of a string convenience var should work without a target.
test_printf_convenience_var "no target"
+# Test void results.
+gdb_test "p (void)10" " = void"
+gdb_test "p/x (void)10" " = void"
+gdb_test "p \$abcd" " = void"
+
# GDB used to complete the explicit location options even when
# printing expressions.
gdb_test_no_output "complete p -function"