diff options
author | fche <fche> | 2005-08-28 15:21:00 +0000 |
---|---|---|
committer | fche <fche> | 2005-08-28 15:21:00 +0000 |
commit | 66d284f47e7ce141ef6325d16f855dc27c05535a (patch) | |
tree | a232c992218471b5cad2c9656105ea6636ce1069 /tapsets.cxx | |
parent | 19feb39f0d4dd5e2173df0fc54d505fdb492fb5b (diff) | |
download | systemtap-steved-66d284f47e7ce141ef6325d16f855dc27c05535a.tar.gz systemtap-steved-66d284f47e7ce141ef6325d16f855dc27c05535a.tar.xz systemtap-steved-66d284f47e7ce141ef6325d16f855dc27c05535a.zip |
2005-08-28 Frank Ch. Eigler <fche@redhat.com>
* translate.cxx (visit_target): Make target variable exceptions
more informative.
(literal_stmt_for_local): Improve bad-type exception message.
* translate.cxx (emit_module_init): Include probe point in comments.
Diffstat (limited to 'tapsets.cxx')
-rw-r--r-- | tapsets.cxx | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/tapsets.cxx b/tapsets.cxx index b99e570f..632bd389 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -892,11 +892,11 @@ dwflpp string prelude, postlude; switch (typetag) { - default: - throw semantic_error ("target location not a base or pointer type"); + throw semantic_error ("unsupported type tag " + + lex_cast<string>(typetag)); break; - + case DW_TAG_base_type: ty = pe_long; c_translate_fetch (&pool, 1, module_bias, die, typedie, &tail, @@ -1715,10 +1715,19 @@ var_expanding_copy_visitor::visit_target_symbol (target_symbol *e) functiondecl *fdecl = new functiondecl; embeddedcode *ec = new embeddedcode; ec->tok = e->tok; - ec->code = q.dw.literal_stmt_for_local(addr, - e->base_name.substr(1), - e->components, - fdecl->type); + try + { + ec->code = q.dw.literal_stmt_for_local(addr, + e->base_name.substr(1), + e->components, + fdecl->type); + } + catch (const semantic_error& er) + { + semantic_error er2 (er); + er2.tok1 = e->tok; + throw er2; + } fdecl->name = fname; fdecl->body = ec; q.sess.functions.push_back(fdecl); |