URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Subversion Repositories or1k
[/] [or1k/] [trunk/] [insight/] [dejagnu/] [config/] [unix.exp] - Rev 1765
Compare with Previous | Blame | View Log
# Copyright (C) 92, 1993, 1994, 1996, 1997, 1998 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Please email any bugs, comments, and/or additions to this file to:
# bug-gcc@prep.ai.mit.edu
# This file was written by Rob Savoye. (rob@cygnus.com)
if ![info exists board] {
error "must set $board before loading unix.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 "";
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] {
setenv LD_LIBRARY_PATH $ld_library_path
setenv SHLIB_PATH $ld_library_path
}
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] {
unsetenv LD_LIBRARY_PATH
unsetenv SHLIB_PATH
}
} else {
set remotefile "/tmp/[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" ""];
}
if [board_info $dest exists remote_link] {
if [[board_info $dest remote_link] $remotefile] {
verbose -log "Couldn't do remote link"
remote_exec $dest "\\rm -f $remotefile"
return [list "unresolved" ""]
}
verbose "$prog linked ok" 3
} else {
# rcp's to lynx seem not to get marked executable
set status [remote_exec $dest "chmod +x $remotefile"]
if { [lindex $status 0] != 0 } {
remote_file $dest delete ${remotefile}.o $remotefile
verbose -log "chmod +x of $prog on $dest 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]
}
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";