This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hello, We realized a while ago that we were not handling unchecked union types very well... Unchecked union types are variant records with an Unchecked_Union pragma applied to them, which transforms them into the C-like union. For instance: type Discriminant is (First, Second, Third, Fourth); type Variant (Discr : Discriminant := First) is record Data : Integer; case Discr is when First => F : Integer; when Second => S : Float; E : Float; when Third | Fourth => T : Boolean; H : Boolean; end case; end record; pragma Unchecked_Union (Variant); Since the discriminant is no longer known, the debugger needs to print the value of all branches, just like we do for C unions. The attach patch fixes the various bugs we found. 2008-09-30 Paul Hilfinger <brobecker@adacore.com> * ada-lang.c (ada_lookup_struct_elt_type): Handle case of a "naked" variant branch. (empty_record): Use INIT_CPLUS_SPECIFIC, since this field is not supposed to be null. Fixes debugger segfaults. (is_unchecked_variant): New function. (to_fixed_variant_branch_type): Modify to leave unchecked unions untouched. (ada_template_to_fixed_record_type_1): Fix comment. Tested on x86-linux. No regression. Checked in. -- Joel
Attachment:
unchecked-union.diff
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |