diff options
Diffstat (limited to 'tapsets.cxx')
-rw-r--r-- | tapsets.cxx | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/tapsets.cxx b/tapsets.cxx index 9fe3fba7..d05b548a 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -1624,6 +1624,8 @@ struct dwflpp Dwarf_Die typedie_mem; Dwarf_Die *typedie; int typetag; + char const *dname; + string diestr; typedie = resolve_unqualified_inner_typedie (&typedie_mem, attr_mem); typetag = dwarf_tag (typedie); @@ -1634,8 +1636,19 @@ struct dwflpp switch (typetag) { default: + dname = dwarf_diename(die); + diestr = (dname != NULL) ? dname : "<unknown>"; throw semantic_error ("unsupported type tag " - + lex_cast<string>(typetag)); + + lex_cast<string>(typetag) + + " for " + diestr); + break; + + case DW_TAG_structure_type: + case DW_TAG_union_type: + dname = dwarf_diename(die); + diestr = (dname != NULL) ? dname : "<unknown>"; + throw semantic_error ("struct/union '" + diestr + + "' is being accessed instead of a member of the struct/union"); break; case DW_TAG_enumeration_type: |