diff options
Diffstat (limited to 'contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h')
-rw-r--r-- | contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h | 52 |
1 files changed, 45 insertions, 7 deletions
diff --git a/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h b/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h index 5c011371a3eb..1fe7207d2bc2 100644 --- a/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h +++ b/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h @@ -10,7 +10,15 @@ #ifndef liblldb_GDBRemoteCommunicationServerPlatform_h_ #define liblldb_GDBRemoteCommunicationServerPlatform_h_ +// C Includes +// C++ Includes +#include <map> +#include <set> + +// Other libraries and framework includes +// Project includes #include "GDBRemoteCommunicationServerCommon.h" +#include "lldb/Host/Socket.h" namespace lldb_private { namespace process_gdb_remote { @@ -21,10 +29,10 @@ class GDBRemoteCommunicationServerPlatform : public: typedef std::map<uint16_t, lldb::pid_t> PortMap; - GDBRemoteCommunicationServerPlatform(); + GDBRemoteCommunicationServerPlatform(const Socket::SocketProtocol socket_protocol, + const char* socket_scheme); - virtual - ~GDBRemoteCommunicationServerPlatform(); + ~GDBRemoteCommunicationServerPlatform() override; Error LaunchProcess () override; @@ -58,16 +66,40 @@ public: void SetPortOffset (uint16_t port_offset); + void + SetInferiorArguments (const lldb_private::Args& args); + + Error + LaunchGDBServer(const lldb_private::Args& args, + std::string hostname, + lldb::pid_t& pid, + uint16_t& port, + std::string& socket_name); + + void + SetPendingGdbServer(lldb::pid_t pid, uint16_t port, const std::string& socket_name); + 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; PortMap m_port_map; uint16_t m_port_offset; + struct { lldb::pid_t pid; uint16_t port; std::string socket_name; } m_pending_gdb_server; PacketResult Handle_qLaunchGDBServer (StringExtractorGDBRemote &packet); PacketResult + Handle_qQueryGDBServer (StringExtractorGDBRemote &packet); + + PacketResult + Handle_qKillSpawnedProcess (StringExtractorGDBRemote &packet); + + PacketResult Handle_qProcessInfo (StringExtractorGDBRemote &packet); PacketResult @@ -84,6 +116,9 @@ protected: private: bool + KillSpawnedProcess (lldb::pid_t pid); + + bool DebugserverProcessReaped (lldb::pid_t pid); static bool @@ -93,13 +128,16 @@ private: int signal, int status); - //------------------------------------------------------------------ - // For GDBRemoteCommunicationServerPlatform only - //------------------------------------------------------------------ + static const FileSpec& + GetDomainSocketDir(); + + static FileSpec + GetDomainSocketPath(const char* prefix); + DISALLOW_COPY_AND_ASSIGN (GDBRemoteCommunicationServerPlatform); }; } // namespace process_gdb_remote } // namespace lldb_private -#endif // liblldb_GDBRemoteCommunicationServerPlatform_h_ +#endif // liblldb_GDBRemoteCommunicationServerPlatform_h_ |