blob: 02a0fd33b2cbd6dadc001013b8d47843ac76f293 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
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 "return 0;"
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 { fail "$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"; exec rm -f jennie.c jennie; 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 {^Warning[^\r\n]*\r\n} { exp_continue }
-re {^Disabling[^\r\n]*\r\n} { exp_continue }
-re {^Uprobes[^\r\n]*\r\n} { exp_continue }
-re {^Cache[^\r\n]*\r\n} { exp_continue }
-re {^process[^\r\n]*jennie[^\r\n]*main[^\r\n]*call argc=0x[1-5][^\r\n]*\r\n} { incr ok; exp_continue }
-re {^process[^\r\n]*jennie[^\r\n]*main[^\r\n]*return return=0x0[^\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}
exec rm -f jennie.c jennie
|