[Lldb-commits] [lldb] r202910 - lldb-gdbserver: add support for optional host in connection string and handle other startup errors.

Todd Fiala tfiala at google.com
Tue Mar 4 15:41:34 PST 2014


Author: tfiala
Date: Tue Mar  4 17:41:34 2014
New Revision: 202910

URL: http://llvm.org/viewvc/llvm-project?rev=202910&view=rev
Log:
lldb-gdbserver: add support for optional host in connection string and handle other startup errors.

This change addresses the following bug:
http://www.llvm.org/bugs/show_bug.cgi?id=18814

Modified:
    lldb/trunk/tools/lldb-gdbserver/lldb-gdbserver.cpp

Modified: lldb/trunk/tools/lldb-gdbserver/lldb-gdbserver.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-gdbserver/lldb-gdbserver.cpp?rev=202910&r1=202909&r2=202910&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-gdbserver/lldb-gdbserver.cpp (original)
+++ lldb/trunk/tools/lldb-gdbserver/lldb-gdbserver.cpp Tue Mar  4 17:41:34 2014
@@ -81,7 +81,7 @@ signal_handler(int signo)
 static void
 display_usage (const char *progname)
 {
-    fprintf(stderr, "Usage:\n  %s [--log-file log-file-path] [--log-flags flags] [--lldb-command command]* [--platform platform_name] HOST:PORT "
+    fprintf(stderr, "Usage:\n  %s [--log-file log-file-path] [--log-flags flags] [--lldb-command command]* [--platform platform_name] [[HOST]:PORT] "
             "[-- PROGRAM ARG1 ARG2 ...]\n", progname);
     exit(0);
 }
@@ -331,15 +331,28 @@ main (int argc, char *argv[])
         std::unique_ptr<ConnectionFileDescriptor> conn_ap(new ConnectionFileDescriptor());
         if (conn_ap.get())
         {
+            std::string final_host_and_port;
+
+            // If host_and_port starts with ':', default the host to be "localhost" and expect the remainder to be the port.
+            if (host_and_port[0] == ':')
+                final_host_and_port.append ("localhost");
+            final_host_and_port.append (host_and_port);
+
             std::string connect_url ("listen://");
-            connect_url.append(host_and_port);
+            connect_url.append (final_host_and_port);
 
-            printf ("Listening for a connection on %s...\n", host_and_port);
+            printf ("Listening for a connection on %s...\n", final_host_and_port.c_str ());
             if (conn_ap->Connect(connect_url.c_str(), &error) == eConnectionStatusSuccess)
             {
                 printf ("Connection established.\n");
                 gdb_server.SetConnection (conn_ap.release());
             }
+            else
+            {
+                fprintf (stderr, "failed to connect to '%s': %s\n", final_host_and_port.c_str (), error.AsCString ());
+                display_usage (progname);
+                exit (1);
+            }
         }
 
         if (gdb_server.IsConnected())
@@ -366,6 +379,12 @@ main (int argc, char *argv[])
             }
         }
     }
+    else
+    {
+        fprintf (stderr, "no connection information provided, unable to run\n");
+        display_usage (progname);
+        exit (1);
+    }
 
     terminate_lldb_gdbserver ();
 





More information about the lldb-commits mailing list