--- gdb-6.3/gdb/dwarf2read.c.orig 2004-10-16 02:41:00.000000000 +0200 +++ gdb-6.3/gdb/dwarf2read.c 2005-04-29 21:08:24.974314896 +0200 @@ -913,6 +913,8 @@ static void read_enumeration_type (struct die_info *, struct dwarf2_cu *); +static void read_set_type (struct die_info *, struct dwarf2_cu *); + static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *); static struct type *dwarf_base_type (int, int, struct dwarf2_cu *); @@ -4009,6 +4011,24 @@ return new_prefix; } + +static void +read_set_type (struct die_info * die, struct dwarf2_cu *cu) +{ + struct type *domain_type; + + /* Return if we've already decoded this type. */ + if (die->type) + { + return; + } + + domain_type = die_type (die, cu); + + die->type = create_set_type (NULL, domain_type); + +} + /* Given a pointer to a die which begins an enumeration, process all the dies that define the members of the enumeration, and create the symbol for the enumeration type. @@ -6096,9 +6116,11 @@ case DW_LANG_Ada95: cu->language = language_ada; break; + case DW_LANG_Pascal83: + cu->language = language_pascal; + break; case DW_LANG_Cobol74: case DW_LANG_Cobol85: - case DW_LANG_Pascal83: case DW_LANG_Modula2: default: cu->language = language_minimal; @@ -6861,6 +6883,7 @@ case DW_TAG_structure_type: case DW_TAG_union_type: case DW_TAG_enumeration_type: + case DW_TAG_set_type: SYMBOL_CLASS (sym) = LOC_TYPEDEF; SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN; @@ -7182,6 +7205,9 @@ case DW_TAG_enumeration_type: read_enumeration_type (die, cu); break; + case DW_TAG_set_type: + read_set_type (die, cu); + break; case DW_TAG_subprogram: case DW_TAG_subroutine_type: read_subroutine_type (die, cu);