This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: ld tests hang on older arm-linux hosts
- From: Nick Clifton <nickc at redhat dot com>
- To: Richard Earnshaw <rearnsha at gcc dot gnu dot org>
- Cc: binutils at sources dot redhat dot com
- Date: Wed, 17 Aug 2005 16:11:49 +0100
- Subject: Re: ld tests hang on older arm-linux hosts
- References: <1123685963.21196.11.camel@pc960.cambridge.arm.com>
Hi Richard,
The new init-array family of tests are spinning for ever on some older
arm-linux platforms (where there appears to be a bug in ld-linux.so).
The test framework executes a generated test using
catch "exec $binfile > $binfile.out" exec_output
but this doesn't take a timeout, so if the executable doesn't terminate
the testsuite just hangs. I think it needs to use the remote_exec (or
local_exec) proc in dejagnu's remote.exp framework file which can take a
timeout, but my expect knowledge is limited and I've been unsuccessful
in producing a viable patch.
Are you still struggling with this ?
If so then I think that it may be file redirection that is causing the
problems. For example I found that replacing this:
set failed 0
send_log "Running: $binfile > $binfile.out\n"
verbose "Running: $binfile > $binfile.out"
catch "exec $binfile > $binfile.out" exec_output
if ![string match "" $exec_output] then {
send_log "$exec_output\n"
verbose "$exec_output" 1
set failed 1
} else {
with this:
set failed 0
send_log "Running: $binfile\n"
verbose "Running: $binfile"
set tmp [local_exec $binfile "" "" 100]
set status [lindex $tmp 0]
set bin_output [lindex $tmp 1]
if { $status != 0 } then {
set failed 1
} else {
worked. Of course at this point you have the output of the program in a
variable called $bin_output but the code is about to go on and do a
"diff $binfile.out...." but I am sure that you can fix that.
Also you would probably want the timeout to be set on a per-target basis
and not hardcoded to 100.
Cheers
Nick