summaryrefslogtreecommitdiffstats
path: root/tapsets.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'tapsets.cxx')
-rw-r--r--tapsets.cxx15
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: