gdb: print unknown part of flag enum in hex
authorSimon Marchi <simon.marchi@efficios.com>
Tue, 18 Feb 2020 22:30:21 +0000 (17:30 -0500)
committerSimon Marchi <simon.marchi@efficios.com>
Tue, 18 Feb 2020 22:33:04 +0000 (17:33 -0500)
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
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/printcmds.exp
gdb/valprint.c

index 6ea59592fac194329f6a67dfc8249db559f49d22..cc47e2d07472fc98abc8252e9c3f697a02035680 100644 (file)
@@ -1,3 +1,8 @@
+2020-02-18  Simon Marchi  <simon.marchi@efficios.com>
+
+       * valprint.c (generic_val_print_enum_1): Print unknown part of
+       flag enum in hex.
+
 2020-02-18  Simon Marchi  <simon.marchi@efficios.com>
 
        * dwarf2/read.c (update_enumeration_type_from_children): Allow
index 4f63dde12a906c937631710acafd091e228a50a3..087714b0729627b6d81b7b1a3c48d69228e3af6b 100644 (file)
@@ -1,3 +1,8 @@
+2020-02-18  Simon Marchi  <simon.marchi@efficios.com>
+
+       * gdb.base/printcmds.exp (test_print_enums): Expect hex values
+       for "unknown".
+
 2020-02-18  Simon Marchi  <simon.marchi@efficios.com>
 
        * gdb.base/printcmds.c (enum flag_enum): Add FE_TWO_LEGACY
index 6afb965af0668fb4fb2c91757116068b25a80511..d6f5c75650bfa3cc7de4a0c6d6438838fb665a66 100644 (file)
@@ -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).
index 888c9cdb577820b124e58298ddc2978bdd5d0924..67049e74b369cfad42fc9ef05e539c0bd08d046b 100644 (file)
@@ -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);