Patchwork [4/5] gdb: print unknown part of flag enum in hex

login
register
mail settings
Submitter Simon Marchi
Date Feb. 13, 2020, 8:30 p.m.
Message ID <20200213203035.30157-4-simon.marchi@efficios.com>
Download mbox | patch
Permalink /patch/38055/
State New
Headers show

Comments

Simon Marchi - Feb. 13, 2020, 8:30 p.m.
When we print the "unknown" part of a flag enum, it is printed in
decimal.  I think it would be more useful if it was printed in hex, as
it helps to determine which bits are set more than a decimal value.

gdb/ChangeLog:

	* valprint.c (generic_val_print_enum_1): Print unknown part of
	flag enum in hex.

gdb/testsuite/ChangeLog:

	* gdb.base/printcmds.exp (test_print_enums): Expect hex values
	for "unknown".
---
 gdb/testsuite/gdb.base/printcmds.exp | 4 ++--
 gdb/valprint.c                       | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

Patch

diff --git a/gdb/testsuite/gdb.base/printcmds.exp b/gdb/testsuite/gdb.base/printcmds.exp
index 6afb965af066..d6f5c75650bf 100644
--- a/gdb/testsuite/gdb.base/printcmds.exp
+++ b/gdb/testsuite/gdb.base/printcmds.exp
@@ -743,10 +743,10 @@  proc test_print_enums {} {
     gdb_test "print (enum flag_enum) 0x0" [string_to_regexp " = FE_NONE"]
 
     # Print a flag enum with value 0, where no enumerator has value 0.
-    gdb_test "print flag_enum_without_zero" [string_to_regexp " = (unknown: 0)"]
+    gdb_test "print flag_enum_without_zero" [string_to_regexp " = (unknown: 0x0)"]
 
     # Print a flag enum with unknown bits set.
-    gdb_test "print (enum flag_enum) 0xf1" [string_to_regexp " = (FE_ONE | unknown: 240)"]
+    gdb_test "print (enum flag_enum) 0xf1" [string_to_regexp " = (FE_ONE | unknown: 0xf0)"]
 
     # Test printing an enum not considered a "flag enum" (because one of its
     # enumerators has multiple bits set).
diff --git a/gdb/valprint.c b/gdb/valprint.c
index 77b9a4993d79..bd21be69e1bf 100644
--- a/gdb/valprint.c
+++ b/gdb/valprint.c
@@ -659,8 +659,8 @@  generic_val_print_enum_1 (struct type *type, LONGEST val,
 	{
 	  if (!first)
 	    fputs_filtered (" | ", stream);
-	  fputs_filtered ("unknown: ", stream);
-	  print_longest (stream, 'd', 0, val);
+	  fputs_filtered ("unknown: 0x", stream);
+	  print_longest (stream, 'x', 0, val);
 	}
 
       fputs_filtered (")", stream);