summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Smith <dsmith@redhat.com>2010-02-10 16:35:46 -0600
committerDavid Smith <dsmith@redhat.com>2010-02-10 16:35:46 -0600
commit42048078ab7712361ce54fa9face358f75e1d699 (patch)
treeb17e3e87c0212125ac1c10669338098565dfbf81
parent6878a54351f98eff364ba8e9b43bc69a7d63f789 (diff)
downloadsystemtap-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-xtestsuite/systemtap.syscall/nd_sys.stp37
-rw-r--r--testsuite/systemtap.syscall/nd_syscall.exp59
-rw-r--r--testsuite/systemtap.syscall/syscall.exp1
-rwxr-xr-xtestsuite/systemtap.syscall/test.tcl4
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