http://gcc.gnu.org/wiki/TemplateParmsDwarf describes
DW_TAG_GNU_template_template_param, DW_TAG_GNU_template_parameter_pack,
DW_TAG_GNU_formal_parameter_pack and DW_AT_GNU_template_name.
Added to libdw/c++/dwarf-knowledge.cc, dwarflint/expected-at.cc and
dwarflint/dwarf_gnu.cc
// http://gcc.gnu.org/wiki/DwarfSeparateTypeInfo
add (const_attribute (DW_AT_GNU_odr_signature));
- add (string_attribute (DW_AT_GNU_template_name)); // xxx ???
+ // http://gcc.gnu.org/wiki/TemplateParmsDwarf
+ add (string_attribute (DW_AT_GNU_template_name));
// GNU extensions for representation of call sites
// http://www.dwarfstd.org/ShowIssue.php?issue=100909.2
.optional (DW_AT_sibling)
.optional (DW_AT_type)
;
+
+ // http://gcc.gnu.org/wiki/TemplateParmsDwarf
+ m_map [DW_TAG_GNU_template_template_param]
+ .required (DW_AT_name)
+ .required (DW_AT_GNU_template_name)
+ ;
+
+ m_map [DW_TAG_GNU_template_parameter_pack]
+ .optional (at_set_decl)
+ .optional (DW_AT_name)
+ .optional (DW_AT_sibling)
+ ;
+
+ m_map [DW_TAG_GNU_formal_parameter_pack]
+ .optional (at_set_decl)
+ .optional (DW_AT_name)
+ .optional (DW_AT_sibling)
+ ;
+
}
case DW_AT_linkage_name:
case DW_AT_MIPS_linkage_name:
+ case DW_AT_GNU_template_name:
return VS(identifier);
case DW_AT_GNU_odr_signature: