set test "system_func"
if {![installtest_p]} { untested $test; return }
-spawn stap $srcdir/$subdir/system_func.stp
-set open 0
-set done 0
-set saw_user 0
-set user [exec whoami]
-expect {
- -timeout 30
- -re "($user|sys_open|DONE)\r" {
- switch $expect_out(1,string) {
- sys_open {incr open}
- DONE {incr done}
- default {incr saw_user}
+
+foreach runtime [get_runtime_list] {
+ set test "system_func"
+ if {$runtime != ""} {
+ lappend test "($runtime)"
+ spawn stap --runtime=$runtime $srcdir/$subdir/system_func.stp
+ } else {
+ spawn stap $srcdir/$subdir/system_func.stp
+ }
+ set open 0
+ set done 0
+ set saw_user 0
+ set user [exec whoami]
+ expect {
+ -timeout 30
+ -re "($user|sys_open|DONE)\r" {
+ switch $expect_out(1,string) {
+ sys_open {incr open}
+ DONE {incr done}
+ default {incr saw_user}
+ }
+ exp_continue
}
- exp_continue
+ timeout { fail "$test (timeout)" }
+ eof { }
+ }
+ catch {close}; catch {wait}
+ if {$open == 1 && $saw_user == 1 && $done == 1 } {
+ pass "$test"
+ } else {
+ fail "$test ($open,$saw_user,$done)"
}
- timeout { fail "$test (timeout)" }
- eof { }
}
-catch {close}; wait
-if {$open == 1 && $saw_user == 1 && $done == 1 } { pass "$test" } { fail "$test ($open,$saw_user,$done)" }
global saw_echo, did_cat
-probe kernel.function("do_sys_open") {
+%(runtime == "kernel" %?
+probe kernel.function("do_sys_open")
+%:
+# The dyninst runtime doesn't have kernel.function probes. Instead,
+# we'll just use a begin probe to run system().
+probe begin
+%)
+{
if (!saw_echo) {
# very inefficient. Testing only. DO NOT DO THIS
msg="echo do_sys_open"
probe timer.ms(100) {
# should fail
- system("cat __xyzzy123ABC__")
- did_cat = 1
+ if (!did_cat) {
+ system("cat __xyzzy123ABC__")
+ did_cat = 1
+ }
}
probe timer.ms(150) {