diff options
-rw-r--r-- | testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | testsuite/systemtap.base/uprobes.exp | 36 | ||||
-rwxr-xr-x | testsuite/systemtap.base/uprobes.stp | 3 |
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) } |