summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--testsuite/ChangeLog5
-rw-r--r--testsuite/systemtap.base/uprobes.exp36
-rwxr-xr-xtestsuite/systemtap.base/uprobes.stp3
3 files changed, 44 insertions, 0 deletions
diff --git a/testsuite/ChangeLog b/testsuite/ChangeLog
index 9ca00077..ff907094 100644
--- a/testsuite/ChangeLog
+++ b/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2008-09-05 Frank Ch. Eigler <fche@elastic.org>
+
+ PR 4255.
+ * systemtap.base/uprobes.{exp,stp}: New file.
+
2008-09-05 Wenji Huang <wenji.huang@oracle.com>
* systemtap.base/cmd_parse.stp: Add test for "-L" option.
diff --git a/testsuite/systemtap.base/uprobes.exp b/testsuite/systemtap.base/uprobes.exp
new file mode 100644
index 00000000..a0ae3e76
--- /dev/null
+++ b/testsuite/systemtap.base/uprobes.exp
@@ -0,0 +1,36 @@
+
+
+set test uprobes
+
+# Compile a little C program to use as the user-space probing victim
+set path "jennie.c"
+set fp [open $path "w"]
+puts $fp "int main (int argc, char *argv[])"
+puts $fp "{"
+puts $fp "if (argc > 1) main (argc - 1, argv);"
+puts $fp "}"
+close $fp
+
+# too easy
+if [file exists $path] then { pass "$test prep" } else { fail "$test prep" }
+
+catch {exec gcc -g -o jennie jennie.c} err
+if {$err == "" && [file exists jennie]} then { pass "$test compile" } else { pass "$test compile" }
+
+set rc [stap_run_batch $srcdir/$subdir/uprobes.stp]
+if {$rc == 0} then { pass "$test -p4" } else { fail "$test -p4" }
+
+if {! [installtest_p]} { untested "$test -p5"; return }
+
+spawn sudo stap -v $srcdir/$subdir/uprobes.stp -c "./jennie 1 2 3 4"
+set ok 0
+expect {
+ -re {^Pass[^\r\n]*\r\n} { exp_continue }
+ -re {^process[^\r\n]*jennie[^\r\n]*main[^\r\n]*call[^\r\n]*\r\n} { incr ok; exp_continue }
+ -re {^process[^\r\n]*jennie[^\r\n]*main[^\r\n]*return[^\r\n]*\r\n} { incr ok; exp_continue }
+ -timeout 30
+ timeout { }
+ eof { }
+}
+if {$ok == 10} then { pass "$test -p5" } else { fail "$test -p5 ($ok)" }
+catch {wait; close}
diff --git a/testsuite/systemtap.base/uprobes.stp b/testsuite/systemtap.base/uprobes.stp
new file mode 100755
index 00000000..957cbe16
--- /dev/null
+++ b/testsuite/systemtap.base/uprobes.stp
@@ -0,0 +1,3 @@
+#! stap -p4
+probe process("./jennie").function("main").call { log (pp() . " " . $$parms) }
+probe process("./jennie").function("main").return { log (pp() . " " . $$return) }