Hello, The recent change we made in the DWARF reader regarding typdefs caused a few regressions with Ada. One of them is actually visible through the testsuite, but most of them were found while testing the change through our testsuite (the code is proprietory so can't contribute). In the ada-* files, I really find that these check_typedef calls are obscure and annoying. I've started discussing internally on how to try to get rid of them, or rather localize them so that we wouldn't need to constantly do a check_typdef, just because we might get a typedef... But it's not as simple as I initially hoped, so that's for another rainy day. Actually, I have long-term plans to cleanup the ada-* files, but that's for another couple of rainy years :-). Anyways, I fixed one issue at a time, and ended up with a series of 6 independent patches. Here they are. They have been tested individually through AdaCore's testsuite and then together as a group with the official gdb testsuite (on x86_64-linux). For each of these patches, I will include a brief description of what is happening. 2009-03-23 Joel Brobecker * ada-lang.c (ada_get_field_index): Add handling of the case when TYPE is a typedef of a struct. This one is very visible. In particular, when trying to extract a field of a struct, we end up not finding that field because we expected a struct, not a typedef. 2009-03-23 Joel Brobecker * ada-lang.c (ada_evaluate_subexp): [OP_ATR_FIRST, OP_ATR_LAST] [OP_ATR_LENGTH]: When using the attribute on a type, make sure to get the real type, not the associated typedef. This one fixes issues with the 'First, 'Last and 'Length attributes. We were erroring-out because the type on which the attribute was being applied was no longer a valid type for these attributes, because we ended up with the typedef rather than the "real" type. 2009-03-23 Joel Brobecker * ada-lang.c (ada_evaluate_subexp) [OP_ATR_MODULUS]: Use check_typdef to make sure we try to get the modulus of the actual type, not the associated typedef. Same thing, this time with 'modulus attribute. 2009-03-23 Joel Brobecker * ada-lang.c (ada_evaluate_subexp) [UNOP_IN_RANGE]: make sure we try to apply the attribute on the real type, rather than its associated typedef. Same issue, but with the "in " operator. 2009-03-23 Joel Brobecker * ada-lang.c (resolve_subexp) [UNOP_QUAL]: Resolve typedefs before trying to resolve the type qualification. This time, this is when try to "qualify" an expression (aka in C as "casting"). 2009-03-23 Joel Brobecker * ada-exp.y (get_symbol_field_type): Make sure to resolve typedefs before looking up the fields inside our struct type. This one actually is the second part after the first patch above which fixes the following two regresions: | FAIL | PASS | ptype_field.exp: ptype circle.pos | FAIL | PASS | ptype_field.exp: ptype circle.pos.x That's all, folks! (I left the git log at the start of each patch, to help identify which patch is which) -- Joel