gdb/testsuite/

* lib/gdbserver-support.exp (gdbserver_start): Loop spawning
	gdbserver increasing $portnum if "Can't bind address" has been seen.
This commit is contained in:
Jan Kratochvil
2009-07-06 18:51:10 +00:00
parent ac8c974e4f
commit 047427a8a8
2 changed files with 35 additions and 17 deletions

View File

@ -1,3 +1,8 @@
2009-07-06 Jan Kratochvil <jan.kratochvil@redhat.com>
* lib/gdbserver-support.exp (gdbserver_start): Loop spawning
gdbserver increasing $portnum if "Can't bind address" has been seen.
2009-07-05 Pedro Alves <pedro@codesourcery.com> 2009-07-05 Pedro Alves <pedro@codesourcery.com>
* gdb.base/ending-run.exp: Add "step out of main" pattern for * gdb.base/ending-run.exp: Add "step out of main" pattern for

View File

@ -209,26 +209,39 @@ proc gdbserver_start { options arguments } {
set gdbserver [find_gdbserver] set gdbserver [find_gdbserver]
# Export the host:port pair. # Loop till we find a free port.
set gdbport $debughost$portnum while 1 {
# Export the host:port pair.
set gdbport $debughost$portnum
# Fire off the debug agent. # Fire off the debug agent.
set gdbserver_command "$gdbserver" set gdbserver_command "$gdbserver"
if { $options != "" } { if { $options != "" } {
append gdbserver_command " $options" append gdbserver_command " $options"
} }
append gdbserver_command " :$portnum" append gdbserver_command " :$portnum"
if { $arguments != "" } { if { $arguments != "" } {
append gdbserver_command " $arguments" append gdbserver_command " $arguments"
} }
set server_spawn_id [remote_spawn target $gdbserver_command] set server_spawn_id [remote_spawn target $gdbserver_command]
# Wait for the server to open its TCP socket, so that GDB can connect. # Wait for the server to open its TCP socket, so that GDB can connect.
expect { expect {
-i $server_spawn_id -i $server_spawn_id
-notransfer -notransfer
-re "Listening on" { } -re "Listening on" { }
-re "Can't bind address: Address already in use\\.\r\n" {
verbose -log "Port $portnum is already in use."
if ![target_info exists gdb,socketport] {
# Bump the port number to avoid the conflict.
wait -i $expect_out(spawn_id)
incr portnum
continue
}
}
}
break
} }
# We can't just call close, because if gdbserver is local then that means # We can't just call close, because if gdbserver is local then that means