diff options
author | Greg Clayton <gclayton@apple.com> | 2013-12-05 22:58:22 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2013-12-05 22:58:22 +0000 |
commit | 00fe87b4888b230325edd96a4c2df866d91da64e (patch) | |
tree | 350e9be859041c218dd63882cc04d56dcb3f93c0 /lldb/tools/lldb-gdbserver | |
parent | 58683755ed7929af96a139ca9e36e3d819d0bd87 (diff) | |
download | bcm5719-llvm-00fe87b4888b230325edd96a4c2df866d91da64e.tar.gz bcm5719-llvm-00fe87b4888b230325edd96a4c2df866d91da64e.zip |
Modified local spawning in debugserver processes to use a new --reverse-connect option so that debugserver actually connects back to LLDB instead of LLDB connecting to debugserver.
This gets rid of our hacky "get_random_port()" which would grab a random port and tell debugserver to open that port. Now LLDB creates, binds, listens and accepts a connection by binding to port zero and sending the correctly bound port down as the host:port to connect back to.
Fixed the "ConnectionFileDescriptor" to be able to correctly listen for connections from a specified host, localhost, or any host. Prior to this fix "listen://" only accepted the following format:
listen://<port>
But now it can accept:
listen://<port> // Listen for connection from localhost on port <port>
listen://<host>:<port> // Listen for connection from <host> and <port>
listen://*:<port> // Listen for connection from any host on port <port>
llvm-svn: 196547
Diffstat (limited to 'lldb/tools/lldb-gdbserver')
-rw-r--r-- | lldb/tools/lldb-gdbserver/lldb-gdbserver.cpp | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/lldb/tools/lldb-gdbserver/lldb-gdbserver.cpp b/lldb/tools/lldb-gdbserver/lldb-gdbserver.cpp index b675dadceb7..4d9f02d07c9 100644 --- a/lldb/tools/lldb-gdbserver/lldb-gdbserver.cpp +++ b/lldb/tools/lldb-gdbserver/lldb-gdbserver.cpp @@ -221,18 +221,14 @@ main (int argc, char *argv[]) std::unique_ptr<ConnectionFileDescriptor> conn_ap(new ConnectionFileDescriptor()); if (conn_ap.get()) { - std::auto_ptr<ConnectionFileDescriptor> conn_ap(new ConnectionFileDescriptor()); - if (conn_ap.get()) - { - std::string connect_url ("listen://"); - connect_url.append(host_and_port); + std::string connect_url ("listen://"); + connect_url.append(host_and_port); - printf ("Listening for a connection on %s...\n", host_and_port); - if (conn_ap->Connect(connect_url.c_str(), &error) == eConnectionStatusSuccess) - { - printf ("Connection established.\n"); - gdb_server.SetConnection (conn_ap.release()); - } + printf ("Listening for a connection on %s...\n", host_and_port); + if (conn_ap->Connect(connect_url.c_str(), &error) == eConnectionStatusSuccess) + { + printf ("Connection established.\n"); + gdb_server.SetConnection (conn_ap.release()); } } |