+2014-09-09 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * lib/gdb.exp (gdb_test_multiple): Remove code to select the
+ timeout, don't pass one down to gdb_expect.
+ (gdb_expect): Rework timeout selection.
+
2014-09-09 Maciej W. Rozycki <macro@codesourcery.com>
* lib/gdbserver-support.exp (gdbserver_start): Throw an error
}
}
- if [target_info exists gdb,timeout] {
- set tmt [target_info gdb,timeout]
- } else {
- if [info exists timeout] {
- set tmt $timeout
- } else {
- global timeout
- if [info exists timeout] {
- set tmt $timeout
- } else {
- set tmt 60
- }
- }
- }
-
set code {
-re ".*A problem internal to GDB has been detected" {
fail "$message (GDB internal error)"
}
set result 0
- set code [catch {gdb_expect $tmt $code} string]
+ set code [catch {gdb_expect $code} string]
if {$code == 1} {
global errorInfo errorCode
return -code error -errorinfo $errorInfo -errorcode $errorCode $string
set expcode $args
}
+ # A timeout argument takes precedence, otherwise of all the timeouts
+ # select the largest.
+ upvar #0 timeout gtimeout
upvar timeout timeout
-
- if [target_info exists gdb,timeout] {
+ if [info exists atimeout] {
+ set tmt $atimeout
+ } else {
+ set tmt 0
if [info exists timeout] {
- if { $timeout < [target_info gdb,timeout] } {
- set gtimeout [target_info gdb,timeout]
- } else {
- set gtimeout $timeout
- }
- } else {
- set gtimeout [target_info gdb,timeout]
+ set tmt $timeout
}
- }
-
- if ![info exists gtimeout] {
- global timeout
- if [info exists timeout] {
- set gtimeout $timeout
+ if { [info exists gtimeout] && $gtimeout > $tmt } {
+ set tmt $gtimeout
}
- }
-
- if [info exists atimeout] {
- if { ![info exists gtimeout] || $gtimeout < $atimeout } {
- set gtimeout $atimeout
+ if { [target_info exists gdb,timeout]
+ && [target_info gdb,timeout] > $tmt } {
+ set tmt [target_info gdb,timeout]
}
- } else {
- if ![info exists gtimeout] {
+ if { $tmt == 0 } {
# Eeeeew.
- set gtimeout 60
+ set tmt 60
}
}
}
}
set code [catch \
- {uplevel remote_expect host $gtimeout $expcode} string]
+ {uplevel remote_expect host $tmt $expcode} string]
if [info exists old_val] {
set remote_suppress_flag $old_val
} else {