blob: bf18cab991f0206c2fa63ce3f234f083818a33c6 (
plain) (
blame)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
# This file is part of DejaGnu.
if {![info exists board]} {
error "must set $board before loading android6.exp"
}
# For rcp_download, rsh_exec.
load_lib remote.exp
#
# unix_load -- load the program and execute it
#
# See default.exp for explanation of arguments and results.
#
proc unix_load { dest prog args } {
global ld_library_path
set output ""
set orig_ld_library_path ""
if { [llength $args] > 0 } {
set parg [lindex $args 0]
} else {
set parg ""
}
if { [llength $args] > 1 } {
set inp [lindex $args 1]
} else {
set inp ""
}
if {![file exists $prog]} then {
# We call both here because this should never happen.
perror "$prog does not exist in unix_load."
verbose -log "$prog does not exist." 3
return "untested"
}
verbose "loading to $dest" 2
if {![is_remote $dest]} {
if { "$inp" != "" } {
set command "$prog $parg < $inp"
} else {
set command "$prog $parg"
}
if {![info exists ld_library_path]} {
set ld_library_path ""
}
set orig_ld_library_path "[getenv LD_LIBRARY_PATH]"
setenv LD_LIBRARY_PATH "$ld_library_path:$orig_ld_library_path"
setenv SHLIB_PATH "$ld_library_path:$orig_ld_library_path"
verbose -log "Setting LD_LIBRARY_PATH to $ld_library_path:$orig_ld_library_path" 2
set id [remote_spawn $dest "$command" "readonly"]
if { $id < 0 } {
set output "remote_spawn failed"
set status -1
} else {
set status [remote_wait $dest 300]
set output [lindex $status 1]
set status [lindex $status 0]
}
# Unset them so we don't potentially get hosed when we try to run a
# non-testcase executable. (Setting LD_LIBRARY_PATH is the wrong
# fix in the first place; this just tries to minimize the resulting
# crap.)
if {[info exists ld_library_path]} {
setenv LD_LIBRARY_PATH $orig_ld_library_path
setenv SHLIB_PATH $orig_ld_library_path
}
} else {
set remotefile "/data/local/testsuite/[file tail $prog].[pid]"
set remotefile [remote_download $dest $prog $remotefile]
if { $remotefile == "" } {
verbose -log "Download of $prog to [board_info $dest name] failed." 3
return [list "unresolved" ""]
}
set status [remote_exec $dest "$remotefile" $parg $inp]
remote_file $dest delete $remotefile.o $remotefile
if { [lindex $status 0] < 0 } {
verbose -log "Couldn't execute $prog, [lindex $status 1]" 3
return [list "unresolved" ""]
}
set output [lindex $status 1]
set status [lindex $status 0]
}
setenv LD_LIBRARY_PATH $orig_ld_library_path
setenv SHLIB_PATH $orig_ld_library_path
verbose "Executed $prog, status $status" 2
if {![string match "" $output]} {
verbose -- "$output" 2
}
if { $status == 0 } {
set result "pass"
} else {
set result "fail"
}
return [list $result $output]
}
set_board_info protocol "unix"
|