diff options
5 files changed, 31 insertions, 4 deletions
diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp index 54aad1022f1..19a29b4654a 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp @@ -46,9 +46,11 @@ using namespace lldb_private::process_gdb_remote;  //----------------------------------------------------------------------  // GDBRemoteCommunicationServerPlatform constructor  //---------------------------------------------------------------------- -GDBRemoteCommunicationServerPlatform::GDBRemoteCommunicationServerPlatform(const Socket::SocketProtocol socket_protocol) : +GDBRemoteCommunicationServerPlatform::GDBRemoteCommunicationServerPlatform(const Socket::SocketProtocol socket_protocol, +                                                                           const char* socket_scheme) :      GDBRemoteCommunicationServerCommon ("gdb-remote.server", "gdb-remote.server.rx_packet"),      m_socket_protocol(socket_protocol), +    m_socket_scheme(socket_scheme),      m_spawned_pids_mutex (Mutex::eMutexTypeRecursive),      m_platform_sp (Platform::GetHostPlatform ()),      m_port_map (), @@ -150,6 +152,7 @@ GDBRemoteCommunicationServerPlatform::Handle_qLaunchGDBServer (StringExtractorGD      std::ostringstream url;      uint16_t* port_ptr = &port; +    url << m_socket_scheme << "://";      if (m_socket_protocol == Socket::ProtocolTcp)          url << platform_ip << ":" << port;      else diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h index 95fa18d4b40..6e8f5b06e16 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h @@ -29,7 +29,8 @@ class GDBRemoteCommunicationServerPlatform :  public:      typedef std::map<uint16_t, lldb::pid_t> PortMap; -    GDBRemoteCommunicationServerPlatform(const Socket::SocketProtocol socket_protocol); +    GDBRemoteCommunicationServerPlatform(const Socket::SocketProtocol socket_protocol, +                                         const char* socket_scheme);      ~GDBRemoteCommunicationServerPlatform() override; @@ -67,6 +68,7 @@ public:  protected:      const Socket::SocketProtocol m_socket_protocol; +    const std::string m_socket_scheme;      Mutex m_spawned_pids_mutex;      std::set<lldb::pid_t> m_spawned_pids;      lldb::PlatformSP m_platform_sp; diff --git a/lldb/tools/lldb-server/Acceptor.cpp b/lldb/tools/lldb-server/Acceptor.cpp index dd32d188846..63431959485 100644 --- a/lldb/tools/lldb-server/Acceptor.cpp +++ b/lldb/tools/lldb-server/Acceptor.cpp @@ -37,7 +37,8 @@ SocketScheme socket_schemes[] = {      {"unix-abstract", Socket::ProtocolUnixAbstract},  }; -bool FindProtocolByScheme(const char* scheme, Socket::SocketProtocol& protocol) +bool +FindProtocolByScheme(const char* scheme, Socket::SocketProtocol& protocol)  {      for (auto s: socket_schemes)      { @@ -50,6 +51,17 @@ bool FindProtocolByScheme(const char* scheme, Socket::SocketProtocol& protocol)      return false;  } +const char* +FindSchemeByProtocol(const Socket::SocketProtocol protocol) +{ +    for (auto s: socket_schemes) +    { +        if (s.m_protocol == protocol) +            return s.m_scheme; +    } +    return nullptr; +} +  }  Error @@ -78,6 +90,12 @@ Acceptor::GetSocketProtocol() const      return m_listener_socket_up->GetSocketProtocol();  } +const char* +Acceptor::GetSocketScheme() const +{ +    return FindSchemeByProtocol(GetSocketProtocol()); +} +  std::string  Acceptor::GetLocalSocketId() const  { diff --git a/lldb/tools/lldb-server/Acceptor.h b/lldb/tools/lldb-server/Acceptor.h index 507309907c8..37fba26c881 100644 --- a/lldb/tools/lldb-server/Acceptor.h +++ b/lldb/tools/lldb-server/Acceptor.h @@ -42,6 +42,9 @@ public:      Socket::SocketProtocol      GetSocketProtocol() const; +    const char* +    GetSocketScheme() const; +      // Returns either TCP port number as string or domain socket path.      // Empty string is returned in case of error.      std::string diff --git a/lldb/tools/lldb-server/lldb-platform.cpp b/lldb/tools/lldb-server/lldb-platform.cpp index be34f49ea4f..8fdc472257c 100644 --- a/lldb/tools/lldb-server/lldb-platform.cpp +++ b/lldb/tools/lldb-server/lldb-platform.cpp @@ -315,7 +315,8 @@ main_platform (int argc, char *argv[])      }      do { -        GDBRemoteCommunicationServerPlatform platform(acceptor_up->GetSocketProtocol()); +        GDBRemoteCommunicationServerPlatform platform(acceptor_up->GetSocketProtocol(), +                                                      acceptor_up->GetSocketScheme());          if (port_offset > 0)              platform.SetPortOffset(port_offset);  | 

