From befae7594447817538b52dfa8980abaeab924cec Mon Sep 17 00:00:00 2001 From: Mark Kettenis Date: Tue, 22 Aug 2006 20:32:39 +0000 Subject: [PATCH] * valprint.c (val_print_type_code_flags): Fix for bitfields larger than 32 bits. --- gdb/ChangeLog | 3 +++ gdb/valprint.c | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 618a1dec10d..7ac7591c192 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,8 @@ 2006-08-22 Mark Kettenis + * valprint.c (val_print_type_code_flags): Fix for bitfields larger + than 32 bits. + * gdbtypes.c (init_flags_type): Set all fields to zero instead of just the first one. diff --git a/gdb/valprint.c b/gdb/valprint.c index d730917a08d..4f834f2cf18 100644 --- a/gdb/valprint.c +++ b/gdb/valprint.c @@ -341,13 +341,14 @@ void val_print_type_code_flags (struct type *type, const gdb_byte *valaddr, struct ui_file *stream) { - LONGEST val = unpack_long (type, valaddr); + ULONGEST 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_BITPOS (type, bitpos) != -1 && + (val & ((ULONGEST)1 << bitpos))) { if (TYPE_FIELD_NAME (type, bitpos)) fprintf_filtered (stream, "%s ", TYPE_FIELD_NAME (type, bitpos)); -- 2.30.2