]> sourceware.org Git - systemtap.git/commitdiff
Ensure that "stap -l ..." only prints probe names, not variables.
authorJosh Stone <joshua.i.stone@intel.com>
Thu, 11 Sep 2008 01:30:45 +0000 (18:30 -0700)
committerJosh Stone <joshua.i.stone@intel.com>
Thu, 11 Sep 2008 01:30:45 +0000 (18:30 -0700)
ChangeLog
main.cxx
testsuite/ChangeLog
testsuite/systemtap.base/probe_list.exp [new file with mode: 0644]

index 1c5755359ad7e055f5c26dfd8be7ac4b4350e9d8..3855d47773b2c16ce9d51ebfee6204e19a7a8dc1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-09-10  Josh Stone  <joshua.i.stone@intel.com>
+
+       * main.cxx (printscript): Ensure no variables are printed in probe lists
+       unless -L was specified.
+
 2008-09-10  Frank Ch. Eigler  <fche@elastic.org>
 
        PR6876: translator speedup for many $vars
index 634feb03ceb2857199dad7d8a733e2dae33c870e..563e4b01e91391b503e8f8cb20848d2b0deb0bd2 100644 (file)
--- a/main.cxx
+++ b/main.cxx
@@ -182,14 +182,15 @@ printscript(systemtap_session& s, ostream& o)
           if (seen.find (pp) == seen.end())
             {
               o << pp;
-              // This list will be empty unless s.unoptimized = true -- i.e., -L mode
-              for (unsigned j=0; j<p->locals.size(); j++)
-                   {
-                     o << " ";
-                      vardecl* v = p->locals[j];
-                     v->printsig (o);
-                   }
-             o << endl;
+              // Print the locals for -L mode only
+              if (s.unoptimized)
+                for (unsigned j=0; j<p->locals.size(); j++)
+                  {
+                    o << " ";
+                    vardecl* v = p->locals[j];
+                    v->printsig (o);
+                  }
+              o << endl;
               seen.insert (pp);
             }
         }
index 3effc92f1882c4834f3160d4c5c763b4f8ef1f03..288705b153b19301539a4af329b066b160fe4085 100644 (file)
@@ -1,3 +1,7 @@
+2008-09-10  Josh Stone  <joshua.i.stone@intel.com>
+
+       * systemtap.base/probe_list.exp: New test for correct probe listing.
+
 2008-09-09  Frank Ch. Eigler  <fche@elastic.org>
 
        * systemtap.base/uprobes.*: Tweak regexps for read-only src tree
diff --git a/testsuite/systemtap.base/probe_list.exp b/testsuite/systemtap.base/probe_list.exp
new file mode 100644 (file)
index 0000000..b3e6884
--- /dev/null
@@ -0,0 +1,19 @@
+# This test ensures that "-l" lists only include probe names, and not any of
+# the local variables.  There was a bug that "-l" would print variables that
+# couldn't be optimized away, due to an incorrect assumption in the
+# implementation.
+
+# NB: This is a bit abusively formed.  Currently -l internally writes "probe"
+# and "{}" around its argument.  For this test we want to introduce a variable
+# that can't be optimized away.  The trailing comment mark lets the auto "{}"
+# get ignored.
+spawn stap -l "begin { if (a) next }#"
+
+expect {
+    # the output should not include anything else, like the 'a' local.
+    -re "^begin\r\n$" {
+        pass "probe list is correct"
+        return
+    }
+}
+fail "probe list is incorrect"
This page took 0.044209 seconds and 5 git commands to generate.