summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--elaborate.cxx11
-rw-r--r--testsuite/systemtap.base/tapset/alias.stp6
-rw-r--r--testsuite/systemtap.base/tapset/function.stp6
-rw-r--r--testsuite/systemtap.base/tapset/global.stp4
-rw-r--r--testsuite/systemtap.base/tapset_includes.exp21
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