diff options
author | Frank Ch. Eigler <fche@elastic.org> | 2010-02-23 20:31:00 -0500 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2010-02-23 20:31:00 -0500 |
commit | 30263a7389d5c2712536b74656193708bbc64d49 (patch) | |
tree | b10b72dd3db455abf95a8ab21c540069c0143860 /testsuite/semok/thirtysix.stp | |
parent | d6c273473f7bea4d696c95ca48d55ca26e25ab2f (diff) | |
download | systemtap-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-x | testsuite/semok/thirtysix.stp | 19 |
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 +%) |