summaryrefslogtreecommitdiffstats
path: root/tapsets.cxx
diff options
context:
space:
mode:
authordsmith <dsmith>2007-03-26 18:19:53 +0000
committerdsmith <dsmith>2007-03-26 18:19:53 +0000
commit022b623fa22d305b1d294bf404ec88ca9112f210 (patch)
tree34ea01a0006e4fe38beb00141f9157ac59eb32b4 /tapsets.cxx
parent5d65678dde08d0b2e34ee79c2e0f6c26ff3e4592 (diff)
downloadsystemtap-steved-022b623fa22d305b1d294bf404ec88ca9112f210.tar.gz
systemtap-steved-022b623fa22d305b1d294bf404ec88ca9112f210.tar.xz
systemtap-steved-022b623fa22d305b1d294bf404ec88ca9112f210.zip
2007-03-26 David Smith <dsmith@redhat.com>
* tapsets.cxx (dwflpp::translate_final_fetch_or_store): Improved error messages for invalid types. * elaborate.cxx (typeresolution_info::invalid): Improved the error message for invalid operators.
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: