From bb3731548742ddcd7a0e97dc8204e0a5c821926f Mon Sep 17 00:00:00 2001 From: aburgess Date: Thu, 23 Jun 2011 09:51:57 +0000 Subject: http://sourceware.org/ml/gdb-patches/2011-06/msg00136.html 2011-06-23 Andrew Burgess * gdbtypes.c (append_composite_type_field_aligned): Fix calculation of bit position based on alignment. --- gdb/gdbtypes.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'gdb/gdbtypes.c') diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index 2bdb4ebe72d..2572046e39c 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -3654,12 +3654,15 @@ append_composite_type_field_aligned (struct type *t, char *name, if (alignment) { - int left = FIELD_BITPOS (f[0]) % (alignment * TARGET_CHAR_BIT); + int left; + + alignment *= TARGET_CHAR_BIT; + left = FIELD_BITPOS (f[0]) % alignment; if (left) { - FIELD_BITPOS (f[0]) += left; - TYPE_LENGTH (t) += left / TARGET_CHAR_BIT; + FIELD_BITPOS (f[0]) += (alignment - left); + TYPE_LENGTH (t) += (alignment - left) / TARGET_CHAR_BIT; } } } -- cgit v1.2.1