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 | |
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.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | tapsets.cxx | 23 | ||||
-rw-r--r-- | translate.cxx | 2 |
3 files changed, 25 insertions, 7 deletions
@@ -1,3 +1,10 @@ +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. + 2005-08-27 Roland McGrath <roland@redhat.com> * loc2c-test.c (print_type): New function. 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); diff --git a/translate.cxx b/translate.cxx index d9d9840d..71241d00 100644 --- a/translate.cxx +++ b/translate.cxx @@ -657,6 +657,8 @@ c_unparser::emit_module_init () for (unsigned i=0; i<session->probes.size(); i++) { o->newline() << "/* register " << i << " */"; + for (unsigned k=0; k<session->probes[i]->locations.size(); k++) + o->newline() << "/* " << *session->probes[i]->locations[k] << " */"; session->probes[i]->emit_registrations (o, i); o->newline() << "if (unlikely (rc)) {"; |