From c69a87e094e5e66daee8399838c8475f023ddc04 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Thu, 25 Feb 2010 13:33:28 -0500 Subject: PR11005: @defined part 2: clarify/standardize internal handling of unresolvable $variables * staptree.cxx (target_symbol::chain): New function. * staptree.h: Declare it. * (*): Use it instead of hand-chaining to target_symbol->saved_conversion_error. * tapset-mark.cxx (*::visit_target_symbol): Chain resolution error object, do not throw. * tapset-procfs.cxx (*::visit_target_symbol): Ditto. * tapset-utrace.cxx (*::visit_target_symbol): Ditto. * tapsets.cxx (*::visit_target_symbol): Ditto. (*::visit_defined_op): Explain & enforce the above. * testsuite/semok/thirtysix.stp: Expand. * testsuite/systemtap.base/sdt_misc.exp: Bonus fix: make work with blddir != srcdir. --- staptree.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'staptree.h') diff --git a/staptree.h b/staptree.h index 62ce37fe..0ad6e9c2 100644 --- a/staptree.h +++ b/staptree.h @@ -255,8 +255,9 @@ struct target_symbol: public symbol std::string base_name; std::vector components; std::string probe_context_var; // NB: this being set implies that target_symbol is *resolved* - semantic_error* saved_conversion_error; + semantic_error* saved_conversion_error; // hand-made linked list target_symbol(): addressof(false), saved_conversion_error (0) {} + void chain (semantic_error* e); void print (std::ostream& o) const; void visit (visitor* u); void visit_components (visitor* u); -- cgit