Handle void results as unformatted prints
authorHannes Domani <ssbssa@yahoo.de>
Thu, 8 Oct 2020 15:38:32 +0000 (17:38 +0200)
committerHannes Domani <ssbssa@yahoo.de>
Fri, 9 Oct 2020 11:51:50 +0000 (13:51 +0200)
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.

gdb/ChangeLog
gdb/printcmd.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/printcmds.exp

index 28fa696e3d51ff5854dc6c695999d601db54a02a..5df537c2792fe776223a02ef20bc66f244a822dc 100644 (file)
@@ -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
index d3b1075ed8fcefcdbff5b1804b12ea8511c3eef6..f9b42cfda7140fe7a07ac286c4d7ea88f161a62e 100644 (file)
@@ -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
index 3d88199c63c5e123856c21cb0f37f995527f7fbd..e1b623b7fec3c29f632a8901b7d50a87ffab80f1 100644 (file)
@@ -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
index 0a96b228b89d0656df1fe5d6b16ff7186fcd20c0..08a096130310b513da0b572070e4472f4468b790 100644 (file)
@@ -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"