diff options
author | David Smith <dsmith@redhat.com> | 2010-02-10 16:35:46 -0600 |
---|---|---|
committer | David Smith <dsmith@redhat.com> | 2010-02-10 16:35:46 -0600 |
commit | 42048078ab7712361ce54fa9face358f75e1d699 (patch) | |
tree | b17e3e87c0212125ac1c10669338098565dfbf81 | |
parent | 6878a54351f98eff364ba8e9b43bc69a7d63f789 (diff) | |
download | systemtap-steved-42048078ab7712361ce54fa9face358f75e1d699.tar.gz systemtap-steved-42048078ab7712361ce54fa9face358f75e1d699.tar.xz systemtap-steved-42048078ab7712361ce54fa9face358f75e1d699.zip |
Fixed PR 11270 by adding nd_syscall testcase.
* testsuite/systemtap.syscall/test.tcl: Now uses global variable
'test_script' to find test script to run.
* testsuite/systemtap.syscall/syscall.exp: Sets test_script.
* testsuite/systemtap.syscall/nd_sys.stp: New test script. Copy of
sys.stp, but uses nd_syscall probes.
* testsuite/systemtap.syscall/nd_syscall.exp: New testcase. Copy of
syscall.exp, but uses nd_sys.stp test script.
-rwxr-xr-x | testsuite/systemtap.syscall/nd_sys.stp | 37 | ||||
-rw-r--r-- | testsuite/systemtap.syscall/nd_syscall.exp | 59 | ||||
-rw-r--r-- | testsuite/systemtap.syscall/syscall.exp | 1 | ||||
-rwxr-xr-x | testsuite/systemtap.syscall/test.tcl | 4 |
4 files changed, 99 insertions, 2 deletions
diff --git a/testsuite/systemtap.syscall/nd_sys.stp b/testsuite/systemtap.syscall/nd_sys.stp new file mode 100755 index 00000000..5936cb77 --- /dev/null +++ b/testsuite/systemtap.syscall/nd_sys.stp @@ -0,0 +1,37 @@ +global indent, indent_str, entry_p + +probe begin { + indent = 0 + for (i=0; i<20; i++) { + if (i == 0) + indent_str[0] = "" + else + indent_str[i] = indent_str[i-1] . " " + } +} + + +probe nd_syscall.* ? { + if (pid() == target()) { + if (entry_p) printf("\n") + printf("%s%s: %s (%s) = ", indent_str[indent], execname(), name, argstr) +# printf("%s%s: %s (%s) = ", indent_str[indent], execname(), probefunc(), argstr) + indent++ + entry_p = 1 + } +} + +probe nd_syscall.*.return ? { + if (pid() == target()) { + if (indent) indent-- + if (entry_p) + printf("%s\n", retstr) + else + printf("%s%s\n", indent_str[indent],retstr) + entry_p = 0 + } +} + +probe end { + printf("\n") +} diff --git a/testsuite/systemtap.syscall/nd_syscall.exp b/testsuite/systemtap.syscall/nd_syscall.exp new file mode 100644 index 00000000..4aefcf4b --- /dev/null +++ b/testsuite/systemtap.syscall/nd_syscall.exp @@ -0,0 +1,59 @@ +set test_script "nd_sys.stp" +source $srcdir/$subdir/test.tcl + +proc test_procedure {} { + global srcdir subdir + set wd [pwd] + set flags "" + if {$srcdir == ""} { + set pattern "*.c" + } else { + set pattern "$srcdir/$subdir/*.c" + } + + # for first pass, force 64-bit compilation for 64-bit systems + # Add any other 64-bit arcvhitecture you want tested below. + # To find tcl's platform name for your machine, run the following: + # echo "puts $::tcl_platform(machine)" | tclsh + + switch -regexp $::tcl_platform(machine) { + ^ia64$ { + set do_64_bit_pass 1 + set flags "" + } + ^(x86_64|ppc64|s390x)$ { + set do_64_bit_pass 1 + set flags "additional_flags=-m64" + } + default { + set do_64_bit_pass 0 + } + } + + if {$do_64_bit_pass} { + foreach filename [lsort [glob $pattern]] { + set testname [file tail [string range $filename 0 end-2]] + if {![installtest_p]} { untested "64-bit $testname"; continue } + send_log "Testing 64-bit ${testname}\n" + run_one_test $filename $flags 64 + } + } + + set do_32_bit_pass 1 + switch -regexp $::tcl_platform(machine) { + {^(x86_64|ppc64)$} { set flags "additional_flags=-m32" } + {^s390x$} { set flags "additional_flags=-m31" } + {^ia64$} { set do_32_bit_pass 0 } + } + + if {$do_32_bit_pass} { + foreach filename [lsort [glob $pattern]] { + set testname [file tail [string range $filename 0 end-2]] + if {![installtest_p]} { untested "32-bit $testname"; continue } + send_log "Testing 32-bit ${testname}\n" + run_one_test $filename $flags 32 + } + } +} + +test_procedure diff --git a/testsuite/systemtap.syscall/syscall.exp b/testsuite/systemtap.syscall/syscall.exp index a4978997..3316c4a5 100644 --- a/testsuite/systemtap.syscall/syscall.exp +++ b/testsuite/systemtap.syscall/syscall.exp @@ -1,3 +1,4 @@ +set test_script "sys.stp" source $srcdir/$subdir/test.tcl proc test_procedure {} { diff --git a/testsuite/systemtap.syscall/test.tcl b/testsuite/systemtap.syscall/test.tcl index 9d620d74..477fae70 100755 --- a/testsuite/systemtap.syscall/test.tcl +++ b/testsuite/systemtap.syscall/test.tcl @@ -27,7 +27,7 @@ proc bgerror {error} { trap {cleanup_and_exit} SIGINT proc run_one_test {filename flags bits} { - global dir current_dir + global dir current_dir test_script set testname [file tail [string range $filename 0 end-2]] @@ -43,7 +43,7 @@ proc run_one_test {filename flags bits} { return } - set sys_prog "[file dirname [file normalize $filename]]/sys.stp" + set sys_prog "[file dirname [file normalize $filename]]/${test_script}" set cmd "stap --skip-badvars -c $dir/${testname} ${sys_prog}" # Extract additional C flags needed to compile |