diff options
| author | Oleksiy Vyalov <ovyalov@google.com> | 2015-10-28 19:49:50 +0000 |
|---|---|---|
| committer | Oleksiy Vyalov <ovyalov@google.com> | 2015-10-28 19:49:50 +0000 |
| commit | 1485712648f2d65b55893531b6a8f60c2420e31d (patch) | |
| tree | d0d7b2c5d23c50ec4769aa199bb1fe141364891f /lldb | |
| parent | cf4a128c6e560a60c6ea6a8f77a48650e24eb768 (diff) | |
| download | bcm5719-llvm-1485712648f2d65b55893531b6a8f60c2420e31d.tar.gz bcm5719-llvm-1485712648f2d65b55893531b6a8f60c2420e31d.zip | |
Make lldb-gdbserver to take explicit socket scheme as command line argument.
http://reviews.llvm.org/D14126
llvm-svn: 251547
Diffstat (limited to 'lldb')
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); |

