From: Josh Stone Date: Thu, 11 Sep 2008 01:30:45 +0000 (-0700) Subject: Ensure that "stap -l ..." only prints probe names, not variables. X-Git-Tag: release-0.7.2~16^2 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=223f5b6b6e2c945c442a5dde7e63e637237f575b;p=systemtap.git Ensure that "stap -l ..." only prints probe names, not variables. --- diff --git a/ChangeLog b/ChangeLog index 1c5755359..3855d4777 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-09-10 Josh Stone + + * main.cxx (printscript): Ensure no variables are printed in probe lists + unless -L was specified. + 2008-09-10 Frank Ch. Eigler PR6876: translator speedup for many $vars diff --git a/main.cxx b/main.cxx index 634feb03c..563e4b01e 100644 --- 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; jlocals.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; jlocals.size(); j++) + { + o << " "; + vardecl* v = p->locals[j]; + v->printsig (o); + } + o << endl; seen.insert (pp); } } diff --git a/testsuite/ChangeLog b/testsuite/ChangeLog index 3effc92f1..288705b15 100644 --- a/testsuite/ChangeLog +++ b/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2008-09-10 Josh Stone + + * systemtap.base/probe_list.exp: New test for correct probe listing. + 2008-09-09 Frank Ch. Eigler * 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 index 000000000..b3e6884b9 --- /dev/null +++ b/testsuite/systemtap.base/probe_list.exp @@ -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"