From b29a2df0002f541b5408ee28f1f8e88c844d2ffc Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Tue, 18 Feb 2020 17:30:21 -0500 Subject: [PATCH] gdb: print unknown part of flag enum in hex 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/ChangeLog | 5 +++++ gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/gdb.base/printcmds.exp | 4 ++-- gdb/valprint.c | 4 ++-- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 6ea59592fa..cc47e2d074 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2020-02-18 Simon Marchi + + * valprint.c (generic_val_print_enum_1): Print unknown part of + flag enum in hex. + 2020-02-18 Simon Marchi * dwarf2/read.c (update_enumeration_type_from_children): Allow diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 4f63dde12a..087714b072 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2020-02-18 Simon Marchi + + * gdb.base/printcmds.exp (test_print_enums): Expect hex values + for "unknown". + 2020-02-18 Simon Marchi * gdb.base/printcmds.c (enum flag_enum): Add FE_TWO_LEGACY diff --git a/gdb/testsuite/gdb.base/printcmds.exp b/gdb/testsuite/gdb.base/printcmds.exp index 6afb965af0..d6f5c75650 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 888c9cdb57..67049e74b3 100644 --- a/gdb/valprint.c +++ b/gdb/valprint.c @@ -660,8 +660,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); -- 2.34.1