diff options
author | fche <fche> | 2005-08-01 17:40:26 +0000 |
---|---|---|
committer | fche <fche> | 2005-08-01 17:40:26 +0000 |
commit | d8067b24c81ff89a28ece9c52ba35fe6136d35f2 (patch) | |
tree | ec264e0422a39daf7a99a67823dc33f94786fbb6 /elaborate.cxx | |
parent | a85c5829d137b452d1fa5839e8450e08ec61e406 (diff) | |
download | systemtap-steved-d8067b24c81ff89a28ece9c52ba35fe6136d35f2.tar.gz systemtap-steved-d8067b24c81ff89a28ece9c52ba35fe6136d35f2.tar.xz systemtap-steved-d8067b24c81ff89a28ece9c52ba35fe6136d35f2.zip |
2005-08-01 Frank Ch. Eigler <fche@elastic.org>
* elaborate.cxx (derive_probes): Print error if results empty.
* tapsets.cxx (dwflpp_assert): Handle positive RCs, which likely
came from errno.
(dwflpp::setup): Improve missing debug-info messages.
* testsuite/semko/sixteen,seventeen.stp: New tests.
* runtest.sh: Save stdout/stderr of FAIL/XPASS test cases.
* Makefile.am (clean-local): Clean up testsuite/.
* Makefile.in, aclocal.m4: Regenerated.
Diffstat (limited to 'elaborate.cxx')
-rw-r--r-- | elaborate.cxx | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/elaborate.cxx b/elaborate.cxx index 5ba9f0e3..90de32c7 100644 --- a/elaborate.cxx +++ b/elaborate.cxx @@ -363,18 +363,23 @@ symresolution_info::derive_probes (match_node * root, root->find_builder(loc->components, 0, param_vec); if (!builder) - throw semantic_error ("no match for probe point", loc->tok); + throw semantic_error ("no match for probe point family"); param_vec_to_map(param_vec, param_map); + unsigned num_atbegin = dps.size(); builder->build(session, p, loc, param_map, re_expand, dps); - + // Recursively expand any further-expanding results if (!re_expand.empty()) { for (unsigned j = 0; j < re_expand.size(); ++j) derive_probes(root, re_expand[j], dps); } + + unsigned num_atend = dps.size(); + if (num_atbegin == num_atend) // nothing new derived! + throw semantic_error ("no match for probe point"); } } @@ -617,7 +622,7 @@ semantic_pass_symbols (systemtap_session& s) { cerr << "while resolving probe point list:" << endl; for (unsigned k=0; k<p->locations.size(); k++) - cerr << " " << *p->locations[k] << endl; + cerr << " " << *p->locations[k] << endl; s.print_error (e); // dps.erase (dps.begin(), dps.end()); } @@ -672,7 +677,9 @@ systemtap_session::systemtap_session (): void systemtap_session::print_error (const semantic_error& e) { - cerr << "semantic error: " << e.what () << ": "; + cerr << "semantic error: " << e.what (); + if (e.tok1 || e.tok2) + cerr << ": "; if (e.tok1) cerr << *e.tok1; cerr << e.msg2; if (e.tok2) cerr << *e.tok2; |