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}