diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/boards/simavr.exp | 37 |
2 files changed, 39 insertions, 4 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 8001ec1..b1bc547 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2020-06-29 Simon Marchi <simon.marchi@efficios.com> + + * boards/simavr.exp (gdb_load): Catch errors when closing + previous connection. Close connection, wait for process and + unset simavr_spawn_id on failure. + 2020-06-29 Tom de Vries <tdevries@suse.de> * lib/gdb.exp (unknown): Make test-case unresolved. diff --git a/gdb/testsuite/boards/simavr.exp b/gdb/testsuite/boards/simavr.exp index 386febf..1bd0226 100644 --- a/gdb/testsuite/boards/simavr.exp +++ b/gdb/testsuite/boards/simavr.exp @@ -70,7 +70,12 @@ proc gdb_load { file } { # Close any previous simavr instance. if { $simavr_spawn_id != "" } { - close -i $simavr_spawn_id + verbose -log "simavr: closing previous spawn id $simavr_spawn_id" + if [catch { close -i $simavr_spawn_id } != 0] { + warning "simavr: failed to close connection to previous simavr instance" + } + + wait -i $simavr_spawn_id set simavr_spawn_id "" } @@ -79,16 +84,40 @@ proc gdb_load { file } { verbose -log "Spawning simavr: $cmd" eval $cmd set simavr_spawn_id $spawn_id - gdb_expect { + + verbose -log "simavr: simavr spawned with spawn id $simavr_spawn_id, pid [exp_pid $simavr_spawn_id]" + + # Wait for "listening on port" message of simavr. + expect { -i $simavr_spawn_id -re ".*avr_gdb_init listening on port 1234" {} - timeout { error "unable to start simavr" } + timeout { + verbose -log "simavr: timeout, closing simavr spawn id" + close -i $simavr_spawn_id + verbose -log "simavr: timeout, waiting for simavr process exit" + wait -i $simavr_spawn_id + set simavr_spawn_id "" + error "unable to start simavr: timeout" + } + eof { + verbose -log "simavr: eof, waiting for simavr process exit" + wait -i $simavr_spawn_id + set simavr_spawn_id "" + error "unable to start simavr: eof" + } } # Connect to simavr. send_gdb "target remote :1234\n" gdb_expect { -re ".*Remote debugging using :1234.*\[\r\n\]+$gdb_prompt $" {} - timeout { error "unable to connect to simavr stub" } + timeout { + verbose -log "simavr: unable to connect to simavr, closing simavr spawn id" + close -i $simavr_spawn_id + verbose -log "simavr: unable to connect to simavr, waiting for simavr process exit" + wait -i $simavr_spawn_id + set simavr_spawn_id "" + error "unable to connect to simavr stub" + } } return 0 |