summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.base/uprobes.exp
blob: 3b98c8b1431fc9b66352c917d2403633c0e6eac8 (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
44
45
46
47
48


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" }

if {! [uprobes_p]} {
    untested "$test -p4"; untested "$test -p5"
    catch {exec rm -f jennie.c jennie}
    return
}

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";
    catch {exec rm -f jennie.c jennie}
    return
}

spawn stap $srcdir/$subdir/uprobes.stp -w -c "./jennie 1 2 3 4"
set ok 0
expect {
    -re {^process[^\r\n]+jennie[^\r\n]+main[^\r\n]+arg[cv]=0x[0-9a-f]+\ +arg[cv]=0x[0-9a-f]+\r\n} { incr ok; exp_continue }
    -re {^process[^\r\n]+jennie[^\r\n]+main[^\r\n]+return=0x0\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}

catch {exec rm -f jennie.c jennie}