aboutsummaryrefslogtreecommitdiff
path: root/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h')
-rw-r--r--source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h403
1 files changed, 171 insertions, 232 deletions
diff --git a/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h b/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h
index 9d640f3c174b..edc223a2d7fb 100644
--- a/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h
+++ b/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h
@@ -1,4 +1,5 @@
-//===-- PlatformRemoteGDBServer.h ----------------------------------------*- C++ -*-===//
+//===-- PlatformRemoteGDBServer.h ----------------------------------------*- C++
+//-*-===//
//
// The LLVM Compiler Infrastructure
//
@@ -16,256 +17,194 @@
// Other libraries and framework includes
// Project includes
-#include "lldb/Target/Platform.h"
#include "../../Process/gdb-remote/GDBRemoteCommunicationClient.h"
#include "Plugins/Process/Utility/GDBRemoteSignals.h"
+#include "lldb/Target/Platform.h"
namespace lldb_private {
namespace platform_gdb_server {
-class PlatformRemoteGDBServer : public Platform
-{
+class PlatformRemoteGDBServer : public Platform {
public:
+ static void Initialize();
+
+ static void Terminate();
+
+ static lldb::PlatformSP CreateInstance(bool force, const ArchSpec *arch);
+
+ static ConstString GetPluginNameStatic();
+
+ static const char *GetDescriptionStatic();
+
+ PlatformRemoteGDBServer();
+
+ virtual ~PlatformRemoteGDBServer();
+
+ //------------------------------------------------------------
+ // lldb_private::PluginInterface functions
+ //------------------------------------------------------------
+ ConstString GetPluginName() override { return GetPluginNameStatic(); }
+
+ uint32_t GetPluginVersion() override { return 1; }
+
+ //------------------------------------------------------------
+ // lldb_private::Platform functions
+ //------------------------------------------------------------
+ Error ResolveExecutable(const ModuleSpec &module_spec,
+ lldb::ModuleSP &module_sp,
+ const FileSpecList *module_search_paths_ptr) override;
+
+ bool GetModuleSpec(const FileSpec &module_file_spec, const ArchSpec &arch,
+ ModuleSpec &module_spec) override;
+
+ const char *GetDescription() override;
+
+ Error GetFileWithUUID(const FileSpec &platform_file, const UUID *uuid_ptr,
+ FileSpec &local_file) override;
+
+ bool GetProcessInfo(lldb::pid_t pid, ProcessInstanceInfo &proc_info) override;
+
+ uint32_t FindProcesses(const ProcessInstanceInfoMatch &match_info,
+ ProcessInstanceInfoList &process_infos) override;
+
+ Error LaunchProcess(ProcessLaunchInfo &launch_info) override;
+
+ Error KillProcess(const lldb::pid_t pid) override;
+
+ lldb::ProcessSP DebugProcess(ProcessLaunchInfo &launch_info,
+ Debugger &debugger,
+ Target *target, // Can be NULL, if NULL create a
+ // new target, else use existing
+ // one
+ Error &error) override;
+
+ lldb::ProcessSP Attach(ProcessAttachInfo &attach_info, Debugger &debugger,
+ Target *target, // Can be NULL, if NULL create a new
+ // target, else use existing one
+ Error &error) override;
+
+ bool GetSupportedArchitectureAtIndex(uint32_t idx, ArchSpec &arch) override;
+
+ size_t GetSoftwareBreakpointTrapOpcode(Target &target,
+ BreakpointSite *bp_site) override;
+
+ bool GetRemoteOSVersion() override;
+
+ bool GetRemoteOSBuildString(std::string &s) override;
+
+ bool GetRemoteOSKernelDescription(std::string &s) override;
+
+ // Remote Platform subclasses need to override this function
+ ArchSpec GetRemoteSystemArchitecture() override;
- static void
- Initialize ();
-
- static void
- Terminate ();
-
- static lldb::PlatformSP
- CreateInstance (bool force, const ArchSpec *arch);
-
- static ConstString
- GetPluginNameStatic();
-
- static const char *
- GetDescriptionStatic();
-
-
- PlatformRemoteGDBServer ();
-
- virtual
- ~PlatformRemoteGDBServer();
-
- //------------------------------------------------------------
- // lldb_private::PluginInterface functions
- //------------------------------------------------------------
- ConstString
- GetPluginName() override
- {
- return GetPluginNameStatic();
- }
-
- uint32_t
- GetPluginVersion() override
- {
- return 1;
- }
-
-
- //------------------------------------------------------------
- // lldb_private::Platform functions
- //------------------------------------------------------------
- Error
- ResolveExecutable (const ModuleSpec &module_spec,
- lldb::ModuleSP &module_sp,
- const FileSpecList *module_search_paths_ptr) override;
-
- bool
- GetModuleSpec (const FileSpec& module_file_spec,
- const ArchSpec& arch,
- ModuleSpec &module_spec) override;
-
- const char *
- GetDescription () override;
-
- Error
- GetFileWithUUID (const FileSpec &platform_file,
- const UUID *uuid_ptr,
- FileSpec &local_file) override;
-
- bool
- GetProcessInfo (lldb::pid_t pid, ProcessInstanceInfo &proc_info) override;
-
- uint32_t
- FindProcesses (const ProcessInstanceInfoMatch &match_info,
- ProcessInstanceInfoList &process_infos) override;
-
- Error
- LaunchProcess (ProcessLaunchInfo &launch_info) override;
-
- Error
- KillProcess (const lldb::pid_t pid) override;
-
- lldb::ProcessSP
- DebugProcess (ProcessLaunchInfo &launch_info,
- Debugger &debugger,
- Target *target, // Can be NULL, if NULL create a new target, else use existing one
- Error &error) override;
-
- lldb::ProcessSP
- Attach (ProcessAttachInfo &attach_info,
- Debugger &debugger,
- Target *target, // Can be NULL, if NULL create a new target, else use existing one
- Error &error) override;
-
- bool
- GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch) override;
-
- size_t
- GetSoftwareBreakpointTrapOpcode (Target &target, BreakpointSite *bp_site) override;
-
- bool
- GetRemoteOSVersion () override;
-
- bool
- GetRemoteOSBuildString (std::string &s) override;
-
- bool
- GetRemoteOSKernelDescription (std::string &s) override;
-
- // Remote Platform subclasses need to override this function
- ArchSpec
- GetRemoteSystemArchitecture () override;
-
- FileSpec
- GetRemoteWorkingDirectory() override;
-
- bool
- SetRemoteWorkingDirectory(const FileSpec &working_dir) override;
-
- // Remote subclasses should override this and return a valid instance
- // name if connected.
- const char *
- GetHostname () override;
-
- const char *
- GetUserName (uint32_t uid) override;
-
- const char *
- GetGroupName (uint32_t gid) override;
-
- bool
- IsConnected () const override;
-
- Error
- ConnectRemote (Args& args) override;
-
- Error
- DisconnectRemote () override;
-
- Error
- MakeDirectory(const FileSpec &file_spec, uint32_t file_permissions) override;
-
- Error
- GetFilePermissions(const FileSpec &file_spec, uint32_t &file_permissions) override;
-
- Error
- SetFilePermissions(const FileSpec &file_spec, uint32_t file_permissions) override;
-
-
- lldb::user_id_t
- OpenFile (const FileSpec& file_spec, uint32_t flags, uint32_t mode, Error &error) override;
-
- bool
- CloseFile (lldb::user_id_t fd, Error &error) override;
-
- uint64_t
- ReadFile (lldb::user_id_t fd,
- uint64_t offset,
- void *data_ptr,
- uint64_t len,
- Error &error) override;
-
- uint64_t
- WriteFile (lldb::user_id_t fd,
- uint64_t offset,
- const void* data,
- uint64_t len,
- Error &error) override;
-
- lldb::user_id_t
- GetFileSize (const FileSpec& file_spec) override;
-
- Error
- PutFile (const FileSpec& source,
- const FileSpec& destination,
- uint32_t uid = UINT32_MAX,
- uint32_t gid = UINT32_MAX) override;
-
- Error
- CreateSymlink(const FileSpec &src, const FileSpec &dst) override;
-
- bool
- GetFileExists (const FileSpec& file_spec) override;
-
- Error
- Unlink(const FileSpec &path) override;
-
- Error
- RunShellCommand(const char *command, // Shouldn't be NULL
- const FileSpec &working_dir, // Pass empty FileSpec to use the current working directory
- int *status_ptr, // Pass NULL if you don't want the process exit status
- int *signo_ptr, // Pass NULL if you don't want the signal that caused the process to exit
- std::string *command_output, // Pass NULL if you don't want the command output
- uint32_t timeout_sec) override; // Timeout in seconds to wait for shell program to finish
-
- void
- CalculateTrapHandlerSymbolNames () override;
-
- const lldb::UnixSignalsSP &
- GetRemoteUnixSignals() override;
-
- lldb::ProcessSP
- ConnectProcess (const char* connect_url,
- const char* plugin_name,
- lldb_private::Debugger &debugger,
- lldb_private::Target *target,
- lldb_private::Error &error) override;
-
- size_t
- ConnectToWaitingProcesses(lldb_private::Debugger& debugger, lldb_private::Error& error) override;
-
- virtual size_t
- GetPendingGdbServerList(std::vector<std::string>& connection_urls);
+ FileSpec GetRemoteWorkingDirectory() override;
+
+ bool SetRemoteWorkingDirectory(const FileSpec &working_dir) override;
+
+ // Remote subclasses should override this and return a valid instance
+ // name if connected.
+ const char *GetHostname() override;
+
+ const char *GetUserName(uint32_t uid) override;
+
+ const char *GetGroupName(uint32_t gid) override;
+
+ bool IsConnected() const override;
+
+ Error ConnectRemote(Args &args) override;
+
+ Error DisconnectRemote() override;
+
+ Error MakeDirectory(const FileSpec &file_spec,
+ uint32_t file_permissions) override;
+
+ Error GetFilePermissions(const FileSpec &file_spec,
+ uint32_t &file_permissions) override;
+
+ Error SetFilePermissions(const FileSpec &file_spec,
+ uint32_t file_permissions) override;
+
+ lldb::user_id_t OpenFile(const FileSpec &file_spec, uint32_t flags,
+ uint32_t mode, Error &error) override;
+
+ bool CloseFile(lldb::user_id_t fd, Error &error) override;
+
+ uint64_t ReadFile(lldb::user_id_t fd, uint64_t offset, void *data_ptr,
+ uint64_t len, Error &error) override;
+
+ uint64_t WriteFile(lldb::user_id_t fd, uint64_t offset, const void *data,
+ uint64_t len, Error &error) override;
+
+ lldb::user_id_t GetFileSize(const FileSpec &file_spec) override;
+
+ Error PutFile(const FileSpec &source, const FileSpec &destination,
+ uint32_t uid = UINT32_MAX, uint32_t gid = UINT32_MAX) override;
+
+ Error CreateSymlink(const FileSpec &src, const FileSpec &dst) override;
+
+ bool GetFileExists(const FileSpec &file_spec) override;
+
+ Error Unlink(const FileSpec &path) override;
+
+ Error RunShellCommand(
+ const char *command, // Shouldn't be NULL
+ const FileSpec &working_dir, // Pass empty FileSpec to use the current
+ // working directory
+ int *status_ptr, // Pass NULL if you don't want the process exit status
+ int *signo_ptr, // Pass NULL if you don't want the signal that caused the
+ // process to exit
+ std::string
+ *command_output, // Pass NULL if you don't want the command output
+ uint32_t timeout_sec)
+ override; // Timeout in seconds to wait for shell program to finish
+
+ void CalculateTrapHandlerSymbolNames() override;
+
+ const lldb::UnixSignalsSP &GetRemoteUnixSignals() override;
+
+ lldb::ProcessSP ConnectProcess(llvm::StringRef connect_url,
+ llvm::StringRef plugin_name,
+ lldb_private::Debugger &debugger,
+ lldb_private::Target *target,
+ lldb_private::Error &error) override;
+
+ size_t ConnectToWaitingProcesses(lldb_private::Debugger &debugger,
+ lldb_private::Error &error) override;
+
+ virtual size_t
+ GetPendingGdbServerList(std::vector<std::string> &connection_urls);
protected:
- process_gdb_remote::GDBRemoteCommunicationClient m_gdb_client;
- std::string m_platform_description; // After we connect we can get a more complete description of what we are connected to
- std::string m_platform_scheme;
- std::string m_platform_hostname;
+ process_gdb_remote::GDBRemoteCommunicationClient m_gdb_client;
+ std::string m_platform_description; // After we connect we can get a more
+ // complete description of what we are
+ // connected to
+ std::string m_platform_scheme;
+ std::string m_platform_hostname;
- lldb::UnixSignalsSP m_remote_signals_sp;
+ lldb::UnixSignalsSP m_remote_signals_sp;
- // Launch the debug server on the remote host - caller connects to launched
- // debug server using connect_url.
- // Subclasses should override this method if they want to do extra actions before or
- // after launching the debug server.
- virtual bool
- LaunchGDBServer (lldb::pid_t &pid, std::string &connect_url);
+ // Launch the debug server on the remote host - caller connects to launched
+ // debug server using connect_url.
+ // Subclasses should override this method if they want to do extra actions
+ // before or
+ // after launching the debug server.
+ virtual bool LaunchGDBServer(lldb::pid_t &pid, std::string &connect_url);
- virtual bool
- KillSpawnedProcess (lldb::pid_t pid);
+ virtual bool KillSpawnedProcess(lldb::pid_t pid);
- virtual std::string
- MakeUrl(const char* scheme,
- const char* hostname,
- uint16_t port,
- const char* path);
+ virtual std::string MakeUrl(const char *scheme, const char *hostname,
+ uint16_t port, const char *path);
private:
- std::string
- MakeGdbServerUrl(const std::string &platform_scheme,
- const std::string &platform_hostname,
- uint16_t port,
- const char* socket_name);
-
- DISALLOW_COPY_AND_ASSIGN (PlatformRemoteGDBServer);
+ std::string MakeGdbServerUrl(const std::string &platform_scheme,
+ const std::string &platform_hostname,
+ uint16_t port, const char *socket_name);
+ DISALLOW_COPY_AND_ASSIGN(PlatformRemoteGDBServer);
};
} // namespace platform_gdb_server
} // namespace lldb_private
-#endif // liblldb_PlatformRemoteGDBServer_h_
+#endif // liblldb_PlatformRemoteGDBServer_h_