diff options
author | Josh Stone <jistone@redhat.com> | 2009-06-09 19:58:15 -0700 |
---|---|---|
committer | Josh Stone <jistone@redhat.com> | 2009-06-09 20:08:12 -0700 |
commit | 67146982d334acdb25f43da2a74c02fcabc3c45d (patch) | |
tree | 61198a6a941aed9efdd8f9878b71fd2683c1447a /testsuite | |
parent | b608bb8322085893877078d76e3e50f7d9918c5a (diff) | |
download | systemtap-steved-67146982d334acdb25f43da2a74c02fcabc3c45d.tar.gz systemtap-steved-67146982d334acdb25f43da2a74c02fcabc3c45d.tar.xz systemtap-steved-67146982d334acdb25f43da2a74c02fcabc3c45d.zip |
Fix condition propagation across aliases
When an instance of an alias has a condition, that condition gets
propagated to each of the locations that the alias defines. However,
the copy of the location list was not a deep copy, and so all other
instances of the alias would also incorrectly receive the condition.
This patch makes the location list copy a little deeper, and adds a
test case which demonstrates the issue.
Diffstat (limited to 'testsuite')
-rw-r--r-- | testsuite/systemtap.base/alias-condition.exp | 5 | ||||
-rw-r--r-- | testsuite/systemtap.base/alias-condition.stp | 26 |
2 files changed, 31 insertions, 0 deletions
diff --git a/testsuite/systemtap.base/alias-condition.exp b/testsuite/systemtap.base/alias-condition.exp new file mode 100644 index 00000000..58438340 --- /dev/null +++ b/testsuite/systemtap.base/alias-condition.exp @@ -0,0 +1,5 @@ +# Check that conditions are copied correctly across aliases + +set test "alias-condition" + +stap_run $srcdir/$subdir/$test.stp no_load $all_pass_string diff --git a/testsuite/systemtap.base/alias-condition.stp b/testsuite/systemtap.base/alias-condition.stp new file mode 100644 index 00000000..89708886 --- /dev/null +++ b/testsuite/systemtap.base/alias-condition.stp @@ -0,0 +1,26 @@ +/* + * alias-condition.stp + * + * Check that conditions are copied correctly across aliases + */ + +/* x should be incremented exactly once */ +global x = 0 +probe foo = begin { } +probe foo if (x < 0), foo { ++x } + +probe begin(1) +{ + println("systemtap starting probe") + exit() +} + +probe end +{ + println("systemtap ending probe") + if ( x != 1 ) { + println("systemtap test failure") + } else { + println("systemtap test success") + } +} |