diff options
author | Frank Ch. Eigler <fche@elastic.org> | 2008-06-27 21:45:37 -0400 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2008-06-27 21:45:37 -0400 |
commit | 53ca410a6a6032c2cde6aac6e95b57c68585e48a (patch) | |
tree | 79cda31e77dd2fee51b8f2f20e2e76989f4c8ad7 /testsuite | |
parent | 4494bb1367876f3067d0e7c90b1466b9bd88633f (diff) | |
parent | cfa2ca3cbf2da7bbabcdf35c3085a969bd2370e4 (diff) | |
download | systemtap-steved-53ca410a6a6032c2cde6aac6e95b57c68585e48a.tar.gz systemtap-steved-53ca410a6a6032c2cde6aac6e95b57c68585e48a.tar.xz systemtap-steved-53ca410a6a6032c2cde6aac6e95b57c68585e48a.zip |
Merge commit 'origin/master' into pr6429-comp-unwindsyms
* commit 'origin/master':
Always include libdw using link groups.
Fix bug in handling process(PID) probes.
Added tests for 'process(PID)' variants.
This commit makes changes to the VFS tapset. The changes include deprecation of
syscalls2.stp: Add sys_renameat.
Only probe lines once for the :* wildcard line pattern.
Revert checking address in runtime
bz451707: fix conversions.exp test $name
Cleanup in tapsets.cxx
Added powerpc support to runtime/syscall.h.
Remove validating _stext due to many aliased symbols
PR6646: Add checking address in runtime
Fixed offset argument to vm_callback.
Diffstat (limited to 'testsuite')
-rw-r--r-- | testsuite/ChangeLog | 11 | ||||
-rw-r--r-- | testsuite/buildok/vfs_testcase.stp | 461 | ||||
-rw-r--r-- | testsuite/systemtap.base/utrace_p4.exp | 68 | ||||
-rw-r--r-- | testsuite/systemtap.stress/conversions.exp | 4 |
4 files changed, 536 insertions, 8 deletions
diff --git a/testsuite/ChangeLog b/testsuite/ChangeLog index 4fda9c5f..eda51529 100644 --- a/testsuite/ChangeLog +++ b/testsuite/ChangeLog @@ -1,3 +1,14 @@ +2008-06-27 David Smith <dsmith@redhat.com> + + * systemtap.base/utrace_p4.exp: Added tests for 'process(PID)' + variants. + +2008-06-24 Frank Ch. Eigler <fche@elastic.org> + + rhbz 451707 + * systemtap.stress/conversions.exp: Reorder value overrides + so $test name conveys correct tested value. + 2008-06-23 Stan Cox <scox@redhat.com> * systemtap.base/stmt_rel.stp: Added test for diff --git a/testsuite/buildok/vfs_testcase.stp b/testsuite/buildok/vfs_testcase.stp new file mode 100644 index 00000000..dc78399c --- /dev/null +++ b/testsuite/buildok/vfs_testcase.stp @@ -0,0 +1,461 @@ +#! stap -up4 +probe generic.fop.llseek +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("dev = %l\n", dev); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("file = %p\n", file); + print("offset = %ll\n", offset); + print("origin = %d\n", origin); + print("maxbyte = %l\n", maxbyte); +} + +probe generic.fop.llseek.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} + +probe generic.fop.aio_read +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("file = %p\n", file); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("pos = %ll\n", pos); + print("size = %l\n", size); + print("buf = %p\n", buf); +} + +probe generic.fop.aio_read.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} + +probe generic.fop.aio_write +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("file = %p\n", file); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("pos = %ll\n", pos); + print("size = %l\n", size); + print("buf = %p\n", buf); +} + +probe generic.fop.aio_write.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} + +%( kernel_v < "2.6.19" %? +probe generic.fop.readv +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("dev = %l\n", dev); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("size = %lu\n", size); + print("pos = %ll\n", pos); +} + +probe generic.fop.readv.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} + +probe generic.fop.writev +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("dev = %l\n", dev); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("size = %lu\n", size); + print("pos = %ll\n", pos); +} + +probe generic.fop.writev.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} +%: +%) + +probe generic.fop.mmap +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("file = %p\n", file); + print("dev = %l\n", dev); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("vm_start = %lu\n", vm_start); + print("vm_end = %lu\n", vm_end); + print("vm_flags = %lu\n", vm_flags); +} + +probe generic.fop.mmap.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} + +probe generic.fop.open +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("dev = %l\n", dev); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("size = %lu\n", size); + print("filename: %s\n", filename); + print("flag = %u\n", flag); +} + +probe generic.fop.open.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} + +%( kernel_v < "2.6.23" %? +probe generic.fop.sendfile +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("file = %p\n", file); + print("dev = %l\n", dev); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("pos = %ll\n", pos); + print("size = %l\n", size); +} + +probe generic.fop.sendfile.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} +%) + + +probe generic.fop.splice_read +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("file = %p\n", file); + print("dev = %l\n", dev); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("size = %l\n", size); + print("flags = %u\n", flags); +} + +probe generic.fop.splice_read.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} + +probe generic.fop.splice_write +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("file = %p\n", file); + print("dev = %l\n", dev); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("size = %l\n", size); + print("flags = %u\n", flags); +} + +probe generic.fop.splice_write.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} + +%( kernel_v < "2.6.19" %? +probe generic.fop.read +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("file = %p\n", file); + print("dev = %l\n", dev); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("size = %l\n", size); +} + +probe generic.fop.read.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} + +probe generic.fop.write +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("dev = %l\n", dev); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("size = %l\n", size); +} + +probe generic.fop.write.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} +%) + +probe generic.aop.writepages +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("dev = %l\n", dev); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("size = %l\n", size); +} + +probe generic.aop.writepages.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} + +probe vfs.do_sync_read +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("dev = %l\n", dev); + print("ino = %l\n", ino); + print("size = %l\n", size); + print("pos = %ll\n", pos); + print("buf = %u\n", buf); +} + +probe vfs.do_sync_read.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} + +probe vfs.do_sync_write +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("dev = %l\n", dev); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("size = %l\n", size); + print("pos = %ll\n", pos); + print("buf = %u\n", buf); +} + +probe vfs.do_sync_write.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} + +probe vfs.block_sync_page +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("dev = %l\n", dev); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("size = %l\n", size); + print("page_index = %l\n", page_index); +} + +probe vfs.block_sync_page.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} + + +probe vfs.__set_page_dirty_buffers +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("dev = %l\n", dev); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("size = %l\n", size); + print("index = %l\n", index); +} + +probe vfs.__set_page_dirty_buffers.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} + +probe vfs.do_mpage_readpage +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("dev = %l\n", dev); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("size = %l\n", size); + print("index = %l\n", index); +} + +probe vfs.do_mpage_readpage.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} + +probe vfs.add_to_page_cache +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("dev = %l\n", dev); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("index = %ll\n", index); + print("nrpages = %lu\n", nrpages); +} + +probe vfs.add_to_page_cache.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} + +probe vfs.remove_from_page_cache +{ + print("Probe hit the function: %s\n", name); + print("Probe function argstr: %s\n", argstr); + print("dev = %l\n", dev); + print("devname = %s\n", devname); + print("ino = %l\n", ino); + print("index = %ll\n", index); +} + +probe vfs.remove_from_page_cache.return +{ + print("Probe return from function: %s with return value = %s\n", name, retstr); +} + +probe vfs.read +{ + print("Probe hit the function: %s\n", probefunc()); + print("file = %p\n", file); + print("pos = %p\n", pos); + print("buf = %p\n", buf); +} + +probe vfs.read.return +{ + print("Probe return from function: %s with return value = %s\n", probefunc(), ret); +} + +probe vfs.readv +{ + print("Probe hit the function: %s\n", probefunc()); + print("file = %p\n", file); + print("pos = %p\n", pos); + print("vec = %p\n", vec); + print("vlen = %lu\n", vlen); +} + +probe vfs.readv.return +{ + print("Probe return from function: %s with return value = %s\n", probefunc(), ret); +} + +probe vfs.write +{ + print("Probe hit the function: %s\n", probefunc()); + print("file = %p\n", file); + print("pos = %p\n", pos); + print("buf = %p\n", buf); +} + +probe vfs.write.return +{ + print("Probe return from function: %s with return value = %s\n", probefunc(), ret); +} + +probe vfs.writev +{ + print("Probe hit the function: %s\n", probefunc()); + print("file = %p\n", file); + print("pos = %p\n", pos); + print("vec = %p\n", vec); + print("vlen = %lu\n", vlen); +} + +probe vfs.writev.return +{ + print("Probe return from function: %s with return value = %s\n", probefunc(), ret); +} + +probe _vfs.generic_file_readonly_mmap +{ + print("Probe hit the function: %s\n", probefunc()); + print("file = %p\n", file); + print("vma = %p\n", vma); +} + +probe _vfs.generic_file_readonly_mmap.return +{ + print("Probe return from function: %s with return value = %s\n", probefunc(), ret); +} + +probe _vfs.generic_block_bmap +{ + print("Probe hit the function: %s\n", probefunc()); + print("mapping = %p\n", mapping); + print("block = %llu\n", block); + print("get_block = %p\n", get_block); +} + +probe _vfs.generic_commit_write +{ + print("Probe hit the function: %s\n", probefunc()); + print("file = %p\n", file); + print("page = %p\n", page); + print("from = %u to=%u\n", from, to); +} + +probe _vfs.block_prepare_write +{ + print("Probe hit the function: %s\n", probefunc()); + print("_inode = %p\n", _inode); + print("page = %p\n", page); + print("write_from = %u write_upto=%u\n", write_from, write_upto); +} +probe _vfs.block_prepare_write.return +{ + print("Probe return from function: %s with return value = %s\n", probefunc(), ret); +} + +probe _vfs.block_write_begin +{ + print("Probe hit the function: %s\n", probefunc()); + print("file = %p\n", file); + print("pos = %llu\n", pos); + print("len = %u\n", len); + print("flags = %u\n", flags); + print("_inode = %l\n", _inode); +} +probe _vfs.block_write_begin.return +{ + print("Probe return from function: %s with return value = %s\n", probefunc(), ret); +} + +probe _vfs.block_write_end +{ + print("Probe hit the function: %s\n", probefunc()); + print("file = %p\n", file); + print("pos = %llu\n", pos); + print("len = %u\n", len); + print("page = %p\n", page); + print("_inode = %l\n", _inode); +} + +probe _vfs.block_write_end.return +{ + print("Probe return from function: %s with return value = %s\n", probefunc(), ret); +} + diff --git a/testsuite/systemtap.base/utrace_p4.exp b/testsuite/systemtap.base/utrace_p4.exp index 5544ee55..333cff21 100644 --- a/testsuite/systemtap.base/utrace_p4.exp +++ b/testsuite/systemtap.base/utrace_p4.exp @@ -25,6 +25,7 @@ proc stap_compile { TEST_NAME compile script args } { -re "parse error" { incr compile_errors 1; exp_continue} -re "compilation failed" {incr compile_errors 1; exp_continue} -re "semantic error:" {incr compile_errors 1; exp_continue} + -re "terminate called" {incr compile_errors 1; exp_continue} } catch close wait @@ -56,6 +57,13 @@ set syscall_return_script {"probe process(\"/bin/ls\").syscall.return { printf(\ set thread_begin_script {"probe process(\"/bin/ls\").thread.begin { print(\"ls thread.begin\") }"} set thread_end_script {"probe process(\"/bin/ls\").thread.end { print(\"ls thread.end\") }"} +set pid_begin_script {"probe process(123).begin { print(\"123 begin\") }"} +set pid_end_script {"probe process(123).end { print(\"123 end\") }"} +set pid_syscall_script {"probe process(123).syscall { printf(\"|%d\", \$syscall) }"} +set pid_syscall_return_script {"probe process(123).syscall.return { printf(\"|%d\", \$syscall) }"} +set pid_thread_begin_script {"probe process(123).thread.begin { print(\"123 thread.begin\") }"} +set pid_thread_end_script {"probe process(123).thread.end { print(\"123 thread.end\") }"} + # Try to find utrace_attach symbol in /proc/kallsyms set path "/proc/kallsyms" if {! [catch {exec grep -q utrace_attach $path} dummy]} { @@ -70,46 +78,94 @@ set TEST_NAME "UTRACE_P4_01" if {$utrace_support_found == 0} { untested "$TEST_NAME : no kernel utrace support found" } else { - # Try compiling a begin script + # Try compiling a begin script using a path stap_compile $TEST_NAME 1 $begin_script } +set TEST_NAME "UTRACE_P4_01_pid" +if {$utrace_support_found == 0} { + untested "$TEST_NAME : no kernel utrace support found" +} else { + # Try compiling a begin script using a pid + stap_compile $TEST_NAME 1 $pid_begin_script +} + set TEST_NAME "UTRACE_P4_02" if {$utrace_support_found == 0} { untested "$TEST_NAME : no kernel utrace support found" } else { - # Try compiling a end script + # Try compiling a end script using a path stap_compile $TEST_NAME 1 $end_script } +set TEST_NAME "UTRACE_P4_02_pid" +if {$utrace_support_found == 0} { + untested "$TEST_NAME : no kernel utrace support found" +} else { + # Try compiling a end script using a pid + stap_compile $TEST_NAME 1 $pid_end_script +} + set TEST_NAME "UTRACE_P4_03" if {$utrace_support_found == 0} { untested "$TEST_NAME : no kernel utrace support found" } else { - # Try compiling a syscall script + # Try compiling a syscall script using a path stap_compile $TEST_NAME 1 $syscall_script } +set TEST_NAME "UTRACE_P4_03_pid" +if {$utrace_support_found == 0} { + untested "$TEST_NAME : no kernel utrace support found" +} else { + # Try compiling a syscall script using a pid + stap_compile $TEST_NAME 1 $pid_syscall_script +} + set TEST_NAME "UTRACE_P4_04" if {$utrace_support_found == 0} { untested "$TEST_NAME : no kernel utrace support found" } else { - # Try compiling a syscall return script + # Try compiling a syscall return script using a path stap_compile $TEST_NAME 1 $syscall_return_script } +set TEST_NAME "UTRACE_P4_04_pid" +if {$utrace_support_found == 0} { + untested "$TEST_NAME : no kernel utrace support found" +} else { + # Try compiling a syscall return script using a pid + stap_compile $TEST_NAME 1 $pid_syscall_return_script +} + set TEST_NAME "UTRACE_P4_05" if {$utrace_support_found == 0} { untested "$TEST_NAME : no kernel utrace support found" } else { - # Try compiling an thread.begin script + # Try compiling an thread.begin script using a path stap_compile $TEST_NAME 1 $thread_begin_script } +set TEST_NAME "UTRACE_P4_05_pid" +if {$utrace_support_found == 0} { + untested "$TEST_NAME : no kernel utrace support found" +} else { + # Try compiling an thread.begin script using a pid + stap_compile $TEST_NAME 1 $pid_thread_begin_script +} + set TEST_NAME "UTRACE_P4_06" if {$utrace_support_found == 0} { untested "$TEST_NAME : no kernel utrace support found" } else { - # Try compiling an thread.end script + # Try compiling an thread.end script using a path stap_compile $TEST_NAME 1 $thread_end_script } + +set TEST_NAME "UTRACE_P4_06_pid" +if {$utrace_support_found == 0} { + untested "$TEST_NAME : no kernel utrace support found" +} else { + # Try compiling an thread.end script using a pid + stap_compile $TEST_NAME 1 $pid_thread_end_script +} diff --git a/testsuite/systemtap.stress/conversions.exp b/testsuite/systemtap.stress/conversions.exp index 9c2c2fa9..27de10c2 100644 --- a/testsuite/systemtap.stress/conversions.exp +++ b/testsuite/systemtap.stress/conversions.exp @@ -1,12 +1,12 @@ set file $srcdir/$subdir/conversions.stp foreach value {0 0xffffffff 0xffffffffffffffff} { - set test "conversions.stp $value" - if {![installtest_p]} { untested $test; continue } # PR 4121: address 0 is valid on s390x if {[istarget s390x-*-*] && $value == 0} { set value 0x7777777777 } # PR 4540: ia64 thinks 0xffffffffffffffff okay for character accesses if {[istarget ia64-*-*] && $value == 0xffffffffffffffff } { set value 0xafffffffffffffff } + set test "conversions.stp $value" + if {![installtest_p]} { untested $test; continue } spawn stap -DMAXERRORS=40 $file $value set errs 0 verbose -log "exp $test $errs" |