Index: lldb/tools/lldb-server/lldb-gdbserver.cpp =================================================================== --- lldb/tools/lldb-server/lldb-gdbserver.cpp +++ lldb/tools/lldb-server/lldb-gdbserver.cpp @@ -230,24 +230,27 @@ final_host_and_port.append("localhost"); final_host_and_port.append(host_and_port.str()); - if (reverse_connect) { + bool is_url = host_and_port.contains("://"); + if (reverse_connect || is_url) { // llgs will connect to the gdb-remote client. - // Ensure we have a port number for the connection. - // Note: use rfind, because the host/port may look like "[::1]:12345". - uint32_t connection_portno = 0; - const std::string::size_type colon_pos = final_host_and_port.rfind(':'); - if (colon_pos != std::string::npos) - llvm::to_integer(final_host_and_port.substr(colon_pos + 1), - connection_portno); - if (connection_portno == 0) { - llvm::errs() << "error: port number must be specified on when using " - "reverse connect\n"; - exit(1); - } + if (!is_url) { + // Ensure we have a port number for the connection. + // Note: use rfind, because the host/port may look like "[::1]:12345". + uint32_t connection_portno = 0; + const std::string::size_type colon_pos = final_host_and_port.rfind(':'); + if (colon_pos != std::string::npos) + llvm::to_integer(final_host_and_port.substr(colon_pos + 1), + connection_portno); + if (connection_portno == 0) { + llvm::errs() << "error: port number must be specified on when using " + "reverse connect\n"; + exit(1); + } - // Build the connection string. - final_host_and_port.insert(0, "connect://"); + // Build the connection string. + final_host_and_port.insert(0, "connect://"); + } // Create the connection. connection_up.reset(new ConnectionFileDescriptor);