diff options
author | Josh Stone <jistone@redhat.com> | 2009-08-27 15:43:51 -0700 |
---|---|---|
committer | Josh Stone <jistone@redhat.com> | 2009-08-27 15:50:07 -0700 |
commit | a3b4f52cd67ff11dfc12e8e878744ea1319308ef (patch) | |
tree | 56e1de369a44e58104013d07e1cec93748d3c6f5 /elaborate.cxx | |
parent | 59996ccdab9c43ac0f5603faabfa9f83746e346a (diff) | |
download | systemtap-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.cxx | 11 |
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) |