summaryrefslogtreecommitdiffstats
path: root/elaborate.cxx
diff options
context:
space:
mode:
authorJosh Stone <jistone@redhat.com>2009-08-27 15:43:51 -0700
committerJosh Stone <jistone@redhat.com>2009-08-27 15:50:07 -0700
commita3b4f52cd67ff11dfc12e8e878744ea1319308ef (patch)
tree56e1de369a44e58104013d07e1cec93748d3c6f5 /elaborate.cxx
parent59996ccdab9c43ac0f5603faabfa9f83746e346a (diff)
downloadsystemtap-steved-a3b4f52cd67ff11dfc12e8e878744ea1319308ef.tar.gz
systemtap-steved-a3b4f52cd67ff11dfc12e8e878744ea1319308ef.tar.xz
systemtap-steved-a3b4f52cd67ff11dfc12e8e878744ea1319308ef.zip
PR10568: Ensure that aliases pull in their tapset
When a probe alias is resolved in a tapset, the contents of that tapset should be included in the compiled script, just as we do for global variables and functions. * elaborate.cxx (alias_expansion_builder::build): When an alias is instantiated, add its stapfile to the session files. * testsuite/systemtap.base/tapset_includes.exp: New test. * testsuite/systemtap.base/tapset/*.stp: Testing tapsets for above.
Diffstat (limited to 'elaborate.cxx')
-rw-r--r--elaborate.cxx11
1 files changed, 11 insertions, 0 deletions
diff --git a/elaborate.cxx b/elaborate.cxx
index bf57f88f..17f335d0 100644
--- a/elaborate.cxx
+++ b/elaborate.cxx
@@ -540,7 +540,18 @@ alias_expansion_builder
else
n->body = new block (alias->body, use->body);
+ unsigned old_num_results = finished_results.size();
derive_probes (sess, n, finished_results, location->optional);
+
+ // Check whether we resolved something. If so, put the
+ // whole library into the queue if not already there.
+ if (finished_results.size() > old_num_results)
+ {
+ stapfile *f = alias->tok->location.file;
+ if (find (sess.files.begin(), sess.files.end(), f)
+ == sess.files.end())
+ sess.files.push_back (f);
+ }
}
bool checkForRecursiveExpansion (probe *use)