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>
* 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]
# Export the host:port pair.
set gdbport $debughost$portnum
# Loop till we find a free port.
while 1 {
# Export the host:port pair.
set gdbport $debughost$portnum
# Fire off the debug agent.
set gdbserver_command "$gdbserver"
if { $options != "" } {
append gdbserver_command " $options"
}
append gdbserver_command " :$portnum"
if { $arguments != "" } {
append gdbserver_command " $arguments"
}
# Fire off the debug agent.
set gdbserver_command "$gdbserver"
if { $options != "" } {
append gdbserver_command " $options"
}
append gdbserver_command " :$portnum"
if { $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.
expect {
-i $server_spawn_id
-notransfer
-re "Listening on" { }
# Wait for the server to open its TCP socket, so that GDB can connect.
expect {
-i $server_spawn_id
-notransfer
-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