diff options
author | Mark Kettenis <kettenis@gnu.org> | 2006-01-18 21:24:19 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@gnu.org> | 2006-01-18 21:24:19 +0000 |
commit | 4f2aea11c7b01ee007960f6546b58846df591535 (patch) | |
tree | 3a757390fe50177c82e2e416d863290111fd3d58 /gdb/valprint.c | |
parent | 67a4f2b710581acc83afecff55424af285ecbc28 (diff) | |
download | gdb-4f2aea11c7b01ee007960f6546b58846df591535.zip gdb-4f2aea11c7b01ee007960f6546b58846df591535.tar.gz gdb-4f2aea11c7b01ee007960f6546b58846df591535.tar.bz2 |
Based on a previous patch form Michal Ludvig:
* gdbtypes.c (append_flags_type_flag, init_flags_type): New
functions.
(is_integral_type, rank_one_type, recursive_dump_type): Add
support for TYPE_CODE_FLAGS.
* gdbtypes.h (enum type_code): Add TYPE_CODE_FLAGS.
(append_flags_type_field, init_flags_type): New prototypes.
* ada-valprint.c (ada_val_print_1): Add support for
TYPE_CODE_FLAGS.
* c-valprint.c (c_val_print): Likewise.
* f-valprint.c (f_val_print): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* valprint.c (val_print_type_code_flags): New function.
* valprint.h (val_print_type_code_flags): New prototype.
* value.c (unpack_long, value_from_longest): Add support for
TYPE_CODE_FLAGS.
Diffstat (limited to 'gdb/valprint.c')
-rw-r--r-- | gdb/valprint.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gdb/valprint.c b/gdb/valprint.c index 0e1359a..b3a411a 100644 --- a/gdb/valprint.c +++ b/gdb/valprint.c @@ -326,6 +326,27 @@ val_print_type_code_int (struct type *type, const gdb_byte *valaddr, } } +void +val_print_type_code_flags (struct type *type, const gdb_byte *valaddr, + struct ui_file *stream) +{ + LONGEST val = unpack_long (type, valaddr); + int bitpos, nfields = TYPE_NFIELDS (type); + + fputs_filtered ("[ ", stream); + for (bitpos = 0; bitpos < nfields; bitpos++) + { + if (TYPE_FIELD_BITPOS (type, bitpos) != -1 && (val & (1 << bitpos))) + { + if (TYPE_FIELD_NAME (type, bitpos)) + fprintf_filtered (stream, "%s ", TYPE_FIELD_NAME (type, bitpos)); + else + fprintf_filtered (stream, "#%d ", bitpos); + } + } + fputs_filtered ("]", stream); +} + /* Print a number according to FORMAT which is one of d,u,x,o,b,h,w,g. The raison d'etre of this function is to consolidate printing of LONG_LONG's into this one function. The format chars b,h,w,g are |