diff options
author | dsmith <dsmith> | 2007-03-26 18:19:53 +0000 |
---|---|---|
committer | dsmith <dsmith> | 2007-03-26 18:19:53 +0000 |
commit | 022b623fa22d305b1d294bf404ec88ca9112f210 (patch) | |
tree | 34ea01a0006e4fe38beb00141f9157ac59eb32b4 /tapsets.cxx | |
parent | 5d65678dde08d0b2e34ee79c2e0f6c26ff3e4592 (diff) | |
download | systemtap-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.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: |