summaryrefslogtreecommitdiffstats
path: root/testsuite/semok/thirtysix.stp
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2010-02-23 20:31:00 -0500
committerFrank Ch. Eigler <fche@elastic.org>2010-02-23 20:31:00 -0500
commit30263a7389d5c2712536b74656193708bbc64d49 (patch)
treeb10b72dd3db455abf95a8ab21c540069c0143860 /testsuite/semok/thirtysix.stp
parentd6c273473f7bea4d696c95ca48d55ca26e25ab2f (diff)
downloadsystemtap-steved-30263a7389d5c2712536b74656193708bbc64d49.tar.gz
systemtap-steved-30263a7389d5c2712536b74656193708bbc64d49.tar.xz
systemtap-steved-30263a7389d5c2712536b74656193708bbc64d49.zip
PR11005: @defined($tvar) predicate, part 1
* staptree.h (defined_op): New class. * all files: Extend all visitors as appropriate, mostly dummy/pass-through implementation. * parse.cxx (parse_target_symbol): New function, factored out of parse_symbol(). (parse_define_op): New function. * NEWS: Mention it. * parse.h: Corresponding changes. * tapsets.cxx (var_expanding_visitor::visit_defined_op): Implement @defined() semantics. (dwarf_var_expanding_visitor::visit_target_symbol): Adjust. * tapset-utrace.c (visit_target_symbol_arg): Avoid crashes on $argZZZ. * tapsets.cxx (sdt_var_expanding_visitor): Ditto. * semok/thirtysix.stp: New test.
Diffstat (limited to 'testsuite/semok/thirtysix.stp')
-rwxr-xr-xtestsuite/semok/thirtysix.stp19
1 files changed, 19 insertions, 0 deletions
diff --git a/testsuite/semok/thirtysix.stp b/testsuite/semok/thirtysix.stp
new file mode 100755
index 00000000..4f27d9bf
--- /dev/null
+++ b/testsuite/semok/thirtysix.stp
@@ -0,0 +1,19 @@
+#! stap -p4
+
+probe kernel.function("sys_open") { println(@defined($foobar)) } # invalid
+probe kernel.function("sys_open") { println(@defined($mode)) } # valid
+probe kernel.function("sys_open").return { println(@defined($foobar)) } # invalid
+probe kernel.function("sys_open").return { println(@defined($mode)) } # valid
+probe kernel.trace("*")? { println(@defined($rw)) } # valid and invalid in places
+probe kernel.mark("*")? { println(@defined($foo)) } # invalid
+probe kernel.mark("*")? { println(@defined($name)) } # valid
+probe process("stap").mark("*")? { println(@defined($arg1)) } # valid
+probe process("stap").mark("*")? { println(@defined($nosuchvar)) } # invalid
+probe procfs("file").read { println(@defined($nosuchvar)) } # invalid
+probe procfs("file").write { println(@defined($value)) } # valid
+%( CONFIG_UTRACE == "y" %?
+probe process("stap").syscall { println(@defined($arg1)) } # valid
+probe process("stap").syscall { println(@defined($argZZ)) } # invalid
+probe process("stap").syscall.return { println(@defined($nosuchvar)) } # invalid
+probe process("stap").syscall.return { println(@defined($syscall)) } # valid
+%)