+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.
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,
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);
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)) {";