"info tasks" broken by typedefs in ATCB type definitions.
authorJoel Brobecker <brobecker@gnat.com>
Fri, 15 Jan 2010 12:11:21 +0000 (12:11 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Fri, 15 Jan 2010 12:11:21 +0000 (12:11 +0000)
        * ada-lang.c (ada_template_to_fixed_record_type_1): Add call to
        ada_check_typedef before retrieving the length of the type for
        regular fields.

gdb/ChangeLog
gdb/ada-lang.c

index 4d0431a..4224558 100644 (file)
@@ -1,5 +1,12 @@
 2010-01-15  Joel Brobecker  <brobecker@adacore.com>
 
+       "info tasks" broken by typedefs in ATCB type definitions.
+       * ada-lang.c (ada_template_to_fixed_record_type_1): Add call to
+       ada_check_typedef before retrieving the length of the type for
+       regular fields.
+
+2010-01-15  Joel Brobecker  <brobecker@adacore.com>
+
        Do not use name-based lookup for unconstrained packed arrays.
        * ada-lang.c (find_parallel_type_by_descriptive_type):
        Limit the fallback to name-based lookups to the case where
index 8f90711..2f16644 100644 (file)
@@ -6929,14 +6929,16 @@ ada_template_to_fixed_record_type_1 (struct type *type,
         }
       else
         {
-          TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
+          struct type *field_type = TYPE_FIELD_TYPE (type, f);
+
+          TYPE_FIELD_TYPE (rtype, f) = field_type;
           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
           if (TYPE_FIELD_BITSIZE (type, f) > 0)
             bit_incr = fld_bit_len =
               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
           else
             bit_incr = fld_bit_len =
-              TYPE_LENGTH (TYPE_FIELD_TYPE (type, f)) * TARGET_CHAR_BIT;
+              TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
         }
       if (off + fld_bit_len > bit_len)
         bit_len = off + fld_bit_len;