diff options
-rw-r--r-- | elaborate.cxx | 11 | ||||
-rw-r--r-- | testsuite/systemtap.base/tapset/alias.stp | 6 | ||||
-rw-r--r-- | testsuite/systemtap.base/tapset/function.stp | 6 | ||||
-rw-r--r-- | testsuite/systemtap.base/tapset/global.stp | 4 | ||||
-rw-r--r-- | testsuite/systemtap.base/tapset_includes.exp | 21 |
5 files changed, 48 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) diff --git a/testsuite/systemtap.base/tapset/alias.stp b/testsuite/systemtap.base/tapset/alias.stp new file mode 100644 index 00000000..a36009a9 --- /dev/null +++ b/testsuite/systemtap.base/tapset/alias.stp @@ -0,0 +1,6 @@ +probe test_alias = end { + alias_local = 1 +} +probe begin { + println("included alias") +} diff --git a/testsuite/systemtap.base/tapset/function.stp b/testsuite/systemtap.base/tapset/function.stp new file mode 100644 index 00000000..45c5f372 --- /dev/null +++ b/testsuite/systemtap.base/tapset/function.stp @@ -0,0 +1,6 @@ +function test_function:long() { + return 1 +} +probe begin { + println("included function") +} diff --git a/testsuite/systemtap.base/tapset/global.stp b/testsuite/systemtap.base/tapset/global.stp new file mode 100644 index 00000000..4a95ae77 --- /dev/null +++ b/testsuite/systemtap.base/tapset/global.stp @@ -0,0 +1,4 @@ +global test_global = 1 +probe begin { + println("included global") +} diff --git a/testsuite/systemtap.base/tapset_includes.exp b/testsuite/systemtap.base/tapset_includes.exp new file mode 100644 index 00000000..06957e09 --- /dev/null +++ b/testsuite/systemtap.base/tapset_includes.exp @@ -0,0 +1,21 @@ +# Check that globals, functions, and aliases will pull in probes from the +# tapset file in which they are defined. + +if {![installtest_p]} { untested "tapset includes"; return } + +set tapset "$srcdir/$subdir/tapset" + +# global +set script "probe end { if (test_global) println(\"end\") }" +set ::result_string "included global\nend" +stap_run_exact "tapset include global" -I$tapset -e $script -c true + +# function +set script "probe end { if (test_function()) println(\"end\") }" +set ::result_string "included function\nend" +stap_run_exact "tapset include function" -I$tapset -e $script -c true + +# alias +set script "probe test_alias { if (alias_local) println(\"end\") }" +set ::result_string "included alias\nend" +stap_run_exact "tapset include alias" -I$tapset -e $script -c true |