freebsd-ports/lang/gcc-aux/files/android.exp
John Marino 71f4c0a48a lang/gnatdroid-armv7 (&gcc-aux): Fix socket support and gnat.dg testsuite
The socket support on Gnatdroid was broken, and it had to be fixed at
lang/gcc-aux.

Until now, the dejagnu testsuite did not work on remote targets.  To fix
this, support files had to be installed at ${LOCALBASE}/share/dejagnu.
Dejagnu was not made a run dependency, conditional or otherwise.  The
test targets for gnatdroid are really maintainer targets.

Running the gnat.dg testsuite confirms that everything works in the
cross-compiler except stack checking (there's no support in gcc for this
just yet).
2014-04-12 22:04:15 +00:00

106 lines
2.8 KiB
Text

# This file is part of DejaGnu.
if {![info exists board]} {
error "must set $board before loading android.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"