LLDB mainline
|
#include <PlatformRemoteGDBServer.h>
Public Member Functions | |
PlatformRemoteGDBServer () | |
Default Constructor. | |
~PlatformRemoteGDBServer () override | |
Destructor. | |
llvm::StringRef | GetPluginName () override |
bool | GetModuleSpec (const FileSpec &module_file_spec, const ArchSpec &arch, ModuleSpec &module_spec) override |
llvm::StringRef | GetDescription () override |
Status | GetFileWithUUID (const FileSpec &platform_file, const UUID *uuid_ptr, FileSpec &local_file) override |
Locate a file for a platform. | |
bool | GetProcessInfo (lldb::pid_t pid, ProcessInstanceInfo &proc_info) override |
uint32_t | FindProcesses (const ProcessInstanceInfoMatch &match_info, ProcessInstanceInfoList &process_infos) override |
Attach to an existing process by process name. | |
Status | LaunchProcess (ProcessLaunchInfo &launch_info) override |
Launch a new process on a platform, not necessarily for debugging, it could be just for running the process. | |
Status | KillProcess (const lldb::pid_t pid) override |
Kill process on a platform. | |
lldb::ProcessSP | DebugProcess (ProcessLaunchInfo &launch_info, Debugger &debugger, Target &target, Status &error) override |
Subclasses do not need to implement this function as it uses the Platform::LaunchProcess() followed by Platform::Attach (). | |
lldb::ProcessSP | Attach (ProcessAttachInfo &attach_info, Debugger &debugger, Target *target, Status &error) override |
Attach to an existing process using a process ID. | |
std::vector< ArchSpec > | GetSupportedArchitectures (const ArchSpec &process_host_arch) override |
Get the platform's supported architectures in the order in which they should be searched. | |
size_t | GetSoftwareBreakpointTrapOpcode (Target &target, BreakpointSite *bp_site) override |
bool | GetRemoteOSVersion () override |
std::optional< std::string > | GetRemoteOSBuildString () override |
std::optional< std::string > | GetRemoteOSKernelDescription () override |
ArchSpec | GetRemoteSystemArchitecture () override |
FileSpec | GetRemoteWorkingDirectory () override |
bool | SetRemoteWorkingDirectory (const FileSpec &working_dir) override |
const char * | GetHostname () override |
UserIDResolver & | GetUserIDResolver () override |
bool | IsConnected () const override |
Status | ConnectRemote (Args &args) override |
Status | DisconnectRemote () override |
Status | MakeDirectory (const FileSpec &file_spec, uint32_t file_permissions) override |
Status | GetFilePermissions (const FileSpec &file_spec, uint32_t &file_permissions) override |
Status | SetFilePermissions (const FileSpec &file_spec, uint32_t file_permissions) override |
lldb::user_id_t | OpenFile (const FileSpec &file_spec, File::OpenOptions flags, uint32_t mode, Status &error) override |
bool | CloseFile (lldb::user_id_t fd, Status &error) override |
uint64_t | ReadFile (lldb::user_id_t fd, uint64_t offset, void *data_ptr, uint64_t len, Status &error) override |
uint64_t | WriteFile (lldb::user_id_t fd, uint64_t offset, const void *data, uint64_t len, Status &error) override |
lldb::user_id_t | GetFileSize (const FileSpec &file_spec) override |
void | AutoCompleteDiskFileOrDirectory (CompletionRequest &request, bool only_dir) override |
Status | PutFile (const FileSpec &source, const FileSpec &destination, uint32_t uid=UINT32_MAX, uint32_t gid=UINT32_MAX) override |
Status | CreateSymlink (const FileSpec &src, const FileSpec &dst) override |
bool | GetFileExists (const FileSpec &file_spec) override |
Status | Unlink (const FileSpec &path) override |
Status | RunShellCommand (llvm::StringRef shell, llvm::StringRef command, const FileSpec &working_dir, int *status_ptr, int *signo_ptr, std::string *command_output, const lldb_private::Timeout< std::micro > &timeout) override |
void | CalculateTrapHandlerSymbolNames () override |
Ask the Platform subclass to fill in the list of trap handler names. | |
llvm::ErrorOr< llvm::MD5::MD5Result > | CalculateMD5 (const FileSpec &file_spec) override |
const lldb::UnixSignalsSP & | GetRemoteUnixSignals () override |
size_t | ConnectToWaitingProcesses (lldb_private::Debugger &debugger, lldb_private::Status &error) override |
Connect to all processes waiting for a debugger to attach. | |
virtual size_t | GetPendingGdbServerList (std::vector< std::string > &connection_urls) |
Public Member Functions inherited from lldb_private::Platform | |
Platform (bool is_host_platform) | |
Default Constructor. | |
~Platform () override | |
The destructor is virtual since this class is designed to be inherited from by the plug-in instance. | |
virtual Status | ResolveExecutable (const ModuleSpec &module_spec, lldb::ModuleSP &exe_module_sp, const FileSpecList *module_search_paths_ptr) |
Set the target's executable based off of the existing architecture information in target given a path to an executable exe_file. | |
virtual Status | ResolveSymbolFile (Target &target, const ModuleSpec &sym_spec, FileSpec &sym_file) |
Find a symbol file given a symbol file module specification. | |
virtual bool | ResolveRemotePath (const FileSpec &platform_path, FileSpec &resolved_platform_path) |
Resolves the FileSpec to a (possibly) remote path. | |
virtual llvm::VersionTuple | GetOSVersion (Process *process=nullptr) |
Get the OS version from a connected platform. | |
bool | SetOSVersion (llvm::VersionTuple os_version) |
std::optional< std::string > | GetOSBuildString () |
std::optional< std::string > | GetOSKernelDescription () |
llvm::StringRef | GetName () |
virtual const char * | GetHostname () |
virtual ConstString | GetFullNameForDylib (ConstString basename) |
virtual llvm::StringRef | GetDescription ()=0 |
virtual void | GetStatus (Stream &strm) |
Report the current status for this platform. | |
virtual bool | GetRemoteOSVersion () |
virtual std::optional< std::string > | GetRemoteOSBuildString () |
virtual std::optional< std::string > | GetRemoteOSKernelDescription () |
virtual ArchSpec | GetRemoteSystemArchitecture () |
virtual FileSpec | GetRemoteWorkingDirectory () |
virtual bool | SetRemoteWorkingDirectory (const FileSpec &working_dir) |
virtual UserIDResolver & | GetUserIDResolver () |
virtual Status | GetFileWithUUID (const FileSpec &platform_file, const UUID *uuid_ptr, FileSpec &local_file) |
Locate a file for a platform. | |
virtual FileSpecList | LocateExecutableScriptingResources (Target *target, Module &module, Stream &feedback_stream) |
virtual Status | GetSharedModule (const ModuleSpec &module_spec, Process *process, lldb::ModuleSP &module_sp, const FileSpecList *module_search_paths_ptr, llvm::SmallVectorImpl< lldb::ModuleSP > *old_modules, bool *did_create_ptr) |
void | CallLocateModuleCallbackIfSet (const ModuleSpec &module_spec, lldb::ModuleSP &module_sp, FileSpec &symbol_file_spec, bool *did_create_ptr) |
virtual bool | GetModuleSpec (const FileSpec &module_file_spec, const ArchSpec &arch, ModuleSpec &module_spec) |
virtual Status | ConnectRemote (Args &args) |
virtual Status | DisconnectRemote () |
virtual std::vector< ArchSpec > | GetSupportedArchitectures (const ArchSpec &process_host_arch)=0 |
Get the platform's supported architectures in the order in which they should be searched. | |
virtual size_t | GetSoftwareBreakpointTrapOpcode (Target &target, BreakpointSite *bp_site) |
virtual Status | LaunchProcess (ProcessLaunchInfo &launch_info) |
Launch a new process on a platform, not necessarily for debugging, it could be just for running the process. | |
virtual Status | ShellExpandArguments (ProcessLaunchInfo &launch_info) |
Perform expansion of the command-line for this launch info This can potentially involve wildcard expansion environment variable replacement, and whatever other argument magic the platform defines as part of its typical user experience. | |
virtual Status | KillProcess (const lldb::pid_t pid) |
Kill process on a platform. | |
virtual bool | IsCompatibleArchitecture (const ArchSpec &arch, const ArchSpec &process_host_arch, ArchSpec::MatchType match, ArchSpec *compatible_arch_ptr) |
Lets a platform answer if it is compatible with a given architecture and the target triple contained within. | |
virtual bool | CanDebugProcess () |
Not all platforms will support debugging a process by spawning somehow halted for a debugger (specified using the "eLaunchFlagDebug" launch flag) and then attaching. | |
virtual lldb::ProcessSP | DebugProcess (ProcessLaunchInfo &launch_info, Debugger &debugger, Target &target, Status &error) |
Subclasses do not need to implement this function as it uses the Platform::LaunchProcess() followed by Platform::Attach (). | |
virtual lldb::ProcessSP | ConnectProcess (llvm::StringRef connect_url, llvm::StringRef plugin_name, Debugger &debugger, Target *target, Status &error) |
virtual lldb::ProcessSP | ConnectProcessSynchronous (llvm::StringRef connect_url, llvm::StringRef plugin_name, Debugger &debugger, Stream &stream, Target *target, Status &error) |
virtual lldb::ProcessSP | Attach (ProcessAttachInfo &attach_info, Debugger &debugger, Target *target, Status &error)=0 |
Attach to an existing process using a process ID. | |
virtual uint32_t | FindProcesses (const ProcessInstanceInfoMatch &match_info, ProcessInstanceInfoList &proc_infos) |
Attach to an existing process by process name. | |
ProcessInstanceInfoList | GetAllProcesses () |
virtual bool | GetProcessInfo (lldb::pid_t pid, ProcessInstanceInfo &proc_info) |
virtual lldb::BreakpointSP | SetThreadCreationBreakpoint (Target &target) |
virtual lldb_private::ConstString | GetSDKDirectory (lldb_private::Target &target) |
virtual llvm::Expected< std::pair< XcodeSDK, bool > > | GetSDKPathFromDebugInfo (Module &module) |
Search each CU associated with the specified 'module' for the SDK paths the CUs were compiled against. | |
virtual llvm::Expected< std::string > | ResolveSDKPathFromDebugInfo (Module &module) |
Returns the full path of the most appropriate SDK for the specified 'module'. | |
const std::string & | GetRemoteURL () const |
bool | IsHost () const |
bool | IsRemote () const |
virtual bool | IsConnected () const |
const ArchSpec & | GetSystemArchitecture () |
void | SetSystemArchitecture (const ArchSpec &arch) |
ArchSpec | GetAugmentedArchSpec (llvm::StringRef triple) |
If the triple contains not specify the vendor, os, and environment parts, we "augment" these using information from the platform and return the resulting ArchSpec object. | |
size_t | GetMaxUserIDNameLength () const |
size_t | GetMaxGroupIDNameLength () const |
const std::string & | GetSDKRootDirectory () const |
void | SetSDKRootDirectory (std::string dir) |
const std::string & | GetSDKBuild () const |
void | SetSDKBuild (std::string sdk_build) |
virtual bool | SupportsModules () |
virtual void | AddClangModuleCompilationOptions (Target *target, std::vector< std::string > &options) |
FileSpec | GetWorkingDirectory () |
bool | SetWorkingDirectory (const FileSpec &working_dir) |
virtual bool | ModuleIsExcludedForUnconstrainedSearches (Target &target, const lldb::ModuleSP &module_sp) |
virtual Status | MakeDirectory (const FileSpec &file_spec, uint32_t permissions) |
virtual Status | GetFilePermissions (const FileSpec &file_spec, uint32_t &file_permissions) |
virtual Status | SetFilePermissions (const FileSpec &file_spec, uint32_t file_permissions) |
virtual lldb::user_id_t | OpenFile (const FileSpec &file_spec, File::OpenOptions flags, uint32_t mode, Status &error) |
virtual bool | CloseFile (lldb::user_id_t fd, Status &error) |
virtual lldb::user_id_t | GetFileSize (const FileSpec &file_spec) |
virtual void | AutoCompleteDiskFileOrDirectory (CompletionRequest &request, bool only_dir) |
virtual uint64_t | ReadFile (lldb::user_id_t fd, uint64_t offset, void *dst, uint64_t dst_len, Status &error) |
virtual uint64_t | WriteFile (lldb::user_id_t fd, uint64_t offset, const void *src, uint64_t src_len, Status &error) |
virtual Status | GetFile (const FileSpec &source, const FileSpec &destination) |
virtual Status | PutFile (const FileSpec &source, const FileSpec &destination, uint32_t uid=UINT32_MAX, uint32_t gid=UINT32_MAX) |
virtual Status | CreateSymlink (const FileSpec &src, const FileSpec &dst) |
virtual Status | Install (const FileSpec &src, const FileSpec &dst) |
Install a file or directory to the remote system. | |
virtual Environment | GetEnvironment () |
virtual bool | GetFileExists (const lldb_private::FileSpec &file_spec) |
virtual Status | Unlink (const FileSpec &file_spec) |
virtual MmapArgList | GetMmapArgumentList (const ArchSpec &arch, lldb::addr_t addr, lldb::addr_t length, unsigned prot, unsigned flags, lldb::addr_t fd, lldb::addr_t offset) |
virtual bool | GetSupportsRSync () |
virtual void | SetSupportsRSync (bool flag) |
virtual const char * | GetRSyncOpts () |
virtual void | SetRSyncOpts (const char *opts) |
virtual const char * | GetRSyncPrefix () |
virtual void | SetRSyncPrefix (const char *prefix) |
virtual bool | GetSupportsSSH () |
virtual void | SetSupportsSSH (bool flag) |
virtual const char * | GetSSHOpts () |
virtual void | SetSSHOpts (const char *opts) |
virtual bool | GetIgnoresRemoteHostname () |
virtual void | SetIgnoresRemoteHostname (bool flag) |
virtual lldb_private::OptionGroupOptions * | GetConnectionOptions (CommandInterpreter &interpreter) |
virtual lldb_private::Status | RunShellCommand (llvm::StringRef command, const FileSpec &working_dir, int *status_ptr, int *signo_ptr, std::string *command_output, const Timeout< std::micro > &timeout) |
virtual lldb_private::Status | RunShellCommand (llvm::StringRef shell, llvm::StringRef command, const FileSpec &working_dir, int *status_ptr, int *signo_ptr, std::string *command_output, const Timeout< std::micro > &timeout) |
virtual void | SetLocalCacheDirectory (const char *local) |
virtual const char * | GetLocalCacheDirectory () |
virtual std::string | GetPlatformSpecificConnectionInformation () |
virtual llvm::ErrorOr< llvm::MD5::MD5Result > | CalculateMD5 (const FileSpec &file_spec) |
virtual uint32_t | GetResumeCountForLaunchInfo (ProcessLaunchInfo &launch_info) |
virtual const lldb::UnixSignalsSP & | GetRemoteUnixSignals () |
lldb::UnixSignalsSP | GetUnixSignals () |
virtual std::string | GetQueueNameForThreadQAddress (Process *process, lldb::addr_t dispatch_qaddr) |
Locate a queue name given a thread's qaddr. | |
virtual lldb::queue_id_t | GetQueueIDForThreadQAddress (Process *process, lldb::addr_t dispatch_qaddr) |
Locate a queue ID given a thread's qaddr. | |
virtual const std::vector< ConstString > & | GetTrapHandlerSymbolNames () |
Provide a list of trap handler function names for this platform. | |
virtual lldb::UnwindPlanSP | GetTrapHandlerUnwindPlan (const llvm::Triple &triple, ConstString name) |
Try to get a specific unwind plan for a named trap handler. | |
virtual FileSpec | LocateExecutable (const char *basename) |
Find a support executable that may not live within in the standard locations related to LLDB. | |
virtual uint32_t | GetDefaultMemoryCacheLineSize () |
Allow the platform to set preferred memory cache line size. | |
uint32_t | LoadImage (lldb_private::Process *process, const lldb_private::FileSpec &local_file, const lldb_private::FileSpec &remote_file, lldb_private::Status &error) |
Load a shared library into this process. | |
uint32_t | LoadImageUsingPaths (lldb_private::Process *process, const lldb_private::FileSpec &library_name, const std::vector< std::string > &paths, lldb_private::Status &error, lldb_private::FileSpec *loaded_path) |
Load a shared library specified by base name into this process, looking by hand along a set of paths. | |
virtual uint32_t | DoLoadImage (lldb_private::Process *process, const lldb_private::FileSpec &remote_file, const std::vector< std::string > *paths, lldb_private::Status &error, lldb_private::FileSpec *loaded_path=nullptr) |
virtual Status | UnloadImage (lldb_private::Process *process, uint32_t image_token) |
virtual size_t | ConnectToWaitingProcesses (lldb_private::Debugger &debugger, lldb_private::Status &error) |
Connect to all processes waiting for a debugger to attach. | |
virtual llvm::Expected< StructuredData::DictionarySP > | FetchExtendedCrashInformation (lldb_private::Process &process) |
Gather all of crash informations into a structured data dictionary. | |
virtual bool | LoadPlatformBinaryAndSetup (Process *process, lldb::addr_t addr, bool notify) |
Detect a binary in memory that will determine which Platform and DynamicLoader should be used in this target/process, and update the Platform/DynamicLoader. | |
virtual CompilerType | GetSiginfoType (const llvm::Triple &triple) |
virtual Args | GetExtraStartupCommands () |
void | SetLocateModuleCallback (LocateModuleCallback callback) |
Set locate module callback. | |
LocateModuleCallback | GetLocateModuleCallback () const |
Public Member Functions inherited from lldb_private::PluginInterface | |
PluginInterface ()=default | |
virtual | ~PluginInterface ()=default |
virtual llvm::StringRef | GetPluginName ()=0 |
PluginInterface (const PluginInterface &)=delete | |
PluginInterface & | operator= (const PluginInterface &)=delete |
Static Public Member Functions | |
static void | Initialize () |
static void | Terminate () |
static lldb::PlatformSP | CreateInstance (bool force, const ArchSpec *arch) |
static llvm::StringRef | GetPluginNameStatic () |
static llvm::StringRef | GetDescriptionStatic () |
Static Public Member Functions inherited from lldb_private::Platform | |
static void | Initialize () |
static void | Terminate () |
static PlatformProperties & | GetGlobalPlatformProperties () |
static lldb::PlatformSP | GetHostPlatform () |
Get the native host platform plug-in. | |
static const char * | GetHostPlatformName () |
static void | SetHostPlatform (const lldb::PlatformSP &platform_sp) |
static lldb::PlatformSP | Create (llvm::StringRef name) |
static ArchSpec | GetAugmentedArchSpec (Platform *platform, llvm::StringRef triple) |
Augments the triple either with information from platform or the host system (if platform is null). | |
Protected Member Functions | |
virtual bool | LaunchGDBServer (lldb::pid_t &pid, std::string &connect_url) |
virtual bool | KillSpawnedProcess (lldb::pid_t pid) |
virtual std::string | MakeUrl (const char *scheme, const char *hostname, uint16_t port, const char *path) |
Protected Member Functions inherited from lldb_private::Platform | |
lldb::ProcessSP | DoConnectProcess (llvm::StringRef connect_url, llvm::StringRef plugin_name, Debugger &debugger, Stream *stream, Target *target, Status &error) |
Private implementation of connecting to a process. | |
virtual void | CalculateTrapHandlerSymbolNames ()=0 |
Ask the Platform subclass to fill in the list of trap handler names. | |
Status | GetCachedExecutable (ModuleSpec &module_spec, lldb::ModuleSP &module_sp, const FileSpecList *module_search_paths_ptr) |
virtual Status | DownloadModuleSlice (const FileSpec &src_file_spec, const uint64_t src_offset, const uint64_t src_size, const FileSpec &dst_file_spec) |
virtual Status | DownloadSymbolFile (const lldb::ModuleSP &module_sp, const FileSpec &dst_file_spec) |
virtual const char * | GetCacheHostname () |
Protected Attributes | |
std::unique_ptr< process_gdb_remote::GDBRemoteCommunicationClient > | m_gdb_client_up |
std::string | m_platform_description |
std::string | m_platform_scheme |
std::string | m_platform_hostname |
lldb::UnixSignalsSP | m_remote_signals_sp |
Protected Attributes inherited from lldb_private::Platform | |
bool | m_is_host |
bool | m_os_version_set_while_connected |
bool | m_system_arch_set_while_connected |
std::string | m_sdk_sysroot |
std::string | m_sdk_build |
FileSpec | m_working_dir |
std::string | m_remote_url |
std::string | m_hostname |
llvm::VersionTuple | m_os_version |
ArchSpec | m_system_arch |
std::mutex | m_mutex |
size_t | m_max_uid_name_len |
size_t | m_max_gid_name_len |
bool | m_supports_rsync |
std::string | m_rsync_opts |
std::string | m_rsync_prefix |
bool | m_supports_ssh |
std::string | m_ssh_opts |
bool | m_ignores_remote_hostname |
std::string | m_local_cache_directory |
std::vector< ConstString > | m_trap_handlers |
bool | m_calculated_trap_handlers |
const std::unique_ptr< ModuleCache > | m_module_cache |
LocateModuleCallback | m_locate_module_callback |
Private Member Functions | |
std::string | MakeGdbServerUrl (const std::string &platform_scheme, const std::string &platform_hostname, uint16_t port, const char *socket_name) |
std::optional< std::string > | DoGetUserName (UserIDResolver::id_t uid) override |
std::optional< std::string > | DoGetGroupName (UserIDResolver::id_t uid) override |
PlatformRemoteGDBServer (const PlatformRemoteGDBServer &)=delete | |
const PlatformRemoteGDBServer & | operator= (const PlatformRemoteGDBServer &)=delete |
Private Member Functions inherited from lldb_private::UserIDResolver | |
virtual | ~UserIDResolver () |
std::optional< llvm::StringRef > | GetUserName (id_t uid) |
std::optional< llvm::StringRef > | GetGroupName (id_t gid) |
virtual std::optional< std::string > | DoGetUserName (id_t uid)=0 |
virtual std::optional< std::string > | DoGetGroupName (id_t gid)=0 |
Private Attributes | |
std::vector< ArchSpec > | m_supported_architectures |
Additional Inherited Members | |
Public Types inherited from lldb_private::Platform | |
typedef std::function< Status(const ModuleSpec &module_spec, FileSpec &module_file_spec, FileSpec &symbol_file_spec)> | LocateModuleCallback |
Protected Types inherited from lldb_private::Platform | |
typedef std::map< uint32_t, ConstString > | IDToNameMap |
Static Protected Member Functions inherited from lldb_private::Platform | |
static std::vector< ArchSpec > | CreateArchList (llvm::ArrayRef< llvm::Triple::ArchType > archs, llvm::Triple::OSType os) |
Create a list of ArchSpecs with the given OS and a architectures. | |
Private Types inherited from lldb_private::UserIDResolver | |
typedef uint32_t | id_t |
Static Private Member Functions inherited from lldb_private::UserIDResolver | |
static UserIDResolver & | GetNoopResolver () |
Returns a resolver which returns a failure value for each query. | |
Definition at line 23 of file PlatformRemoteGDBServer.h.
PlatformRemoteGDBServer::PlatformRemoteGDBServer | ( | ) |
Default Constructor.
Definition at line 139 of file PlatformRemoteGDBServer.cpp.
Referenced by CreateInstance().
|
overridedefault |
Destructor.
The destructor is virtual since this class is designed to be inherited from by the plug-in instance.
|
privatedelete |
|
overridevirtual |
Attach to an existing process using a process ID.
Each platform subclass needs to implement this function and attempt to attach to the process with the process ID of pid. The platform subclass should return an appropriate ProcessSP subclass that is attached to the process, or an empty shared pointer with an appropriate error.
Implements lldb_private::Platform.
Definition at line 490 of file PlatformRemoteGDBServer.cpp.
References lldb_private::Target::CreateProcess(), lldb_private::TargetList::CreateTarget(), lldb_private::eLoadDependentsNo, error(), lldb_private::ProcessInfo::GetHijackListener(), GetHostname(), lldb_private::ProcessAttachInfo::GetListenerForProcess(), lldb_private::ProcessInfo::GetShadowListener(), lldb_private::Debugger::GetTargetList(), IsConnected(), lldb_private::Platform::IsRemote(), KillSpawnedProcess(), LaunchGDBServer(), and LLDB_INVALID_PROCESS_ID.
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 609 of file PlatformRemoteGDBServer.cpp.
References IsConnected(), and m_gdb_client_up.
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 688 of file PlatformRemoteGDBServer.cpp.
References IsConnected(), and m_gdb_client_up.
|
overridevirtual |
Ask the Platform subclass to fill in the list of trap handler names.
For most Unix user process environments, this will be a single function name, _sigtramp. More specialized environments may have additional handler names. The unwinder code needs to know when a trap handler is on the stack because the unwind rules for the frame that caused the trap are different.
The base class Platform ivar m_trap_handlers should be updated by the Platform subclass when this method is called. If there are no predefined trap handlers, this method may be a no-op.
Implements lldb_private::Platform.
Definition at line 695 of file PlatformRemoteGDBServer.cpp.
References lldb_private::Platform::m_trap_handlers.
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 595 of file PlatformRemoteGDBServer.cpp.
References error(), IsConnected(), and m_gdb_client_up.
Reimplemented from lldb_private::Platform.
Definition at line 216 of file PlatformRemoteGDBServer.cpp.
References error(), lldb_private::Args::GetArgumentAtIndex(), lldb_private::Args::GetArgumentCount(), GetHostname(), lldb_private::process_gdb_remote::ProcessGDBRemote::GetPacketTimeout(), lldb_private::ArchSpec::GetTriple(), IsConnected(), m_gdb_client_up, m_platform_hostname, m_platform_scheme, m_supported_architectures, lldb_private::Platform::m_working_dir, and lldb_private::URI::Parse().
|
overridevirtual |
Connect to all processes waiting for a debugger to attach.
If the platform have a list of processes waiting for a debugger to connect to them then connect to all of these pending processes.
[in] | debugger | The debugger used for the connect. |
[out] | error | If an error occurred during the connect then this object will contain the error message. |
Reimplemented from lldb_private::Platform.
Definition at line 817 of file PlatformRemoteGDBServer.cpp.
References lldb_private::Platform::ConnectProcess(), error(), and GetPendingGdbServerList().
|
static |
Definition at line 73 of file PlatformRemoteGDBServer.cpp.
References PlatformRemoteGDBServer(), lldb_private::ArchSpec::TripleOSWasSpecified(), and lldb_private::ArchSpec::TripleVendorWasSpecified().
Referenced by PlatformPOSIX::ConnectRemote(), lldb_private::PlatformWindows::ConnectRemote(), Initialize(), and Terminate().
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 639 of file PlatformRemoteGDBServer.cpp.
References error(), lldb_private::GetLog(), lldb_private::FileSpec::GetPath(), IsConnected(), LLDB_LOGF, m_gdb_client_up, and lldb_private::Platform.
|
overridevirtual |
Subclasses do not need to implement this function as it uses the Platform::LaunchProcess() followed by Platform::Attach ().
Remote platforms will want to subclass this function in order to be able to intercept STDIO and possibly launch a separate process that will debug the debuggee.
Reimplemented from lldb_private::Platform.
Definition at line 413 of file PlatformRemoteGDBServer.cpp.
References lldb_private::Target::CreateProcess(), error(), lldb_private::ProcessInfo::GetHijackListener(), GetHostname(), lldb_private::ProcessInfo::GetListener(), lldb_private::ProcessInfo::GetShadowListener(), IsConnected(), lldb_private::Platform::IsRemote(), KillSpawnedProcess(), LaunchGDBServer(), and LLDB_INVALID_PROCESS_ID.
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 278 of file PlatformRemoteGDBServer.cpp.
References error(), m_gdb_client_up, and m_remote_signals_sp.
|
overrideprivatevirtual |
Implements lldb_private::UserIDResolver.
Definition at line 302 of file PlatformRemoteGDBServer.cpp.
References m_gdb_client_up.
|
overrideprivatevirtual |
Implements lldb_private::UserIDResolver.
Definition at line 294 of file PlatformRemoteGDBServer.cpp.
References m_gdb_client_up.
|
overridevirtual |
Attach to an existing process by process name.
This function is not meant to be overridden by Process subclasses. It will first call Process::WillAttach (const char *) and if that returns true, Process::DoAttach (const char *) will be called to actually do the attach. If DoAttach returns true, then Process::DidAttach() will be called.
[in] | process_name | A process name to match against the current process list. |
Reimplemented from lldb_private::Platform.
Definition at line 309 of file PlatformRemoteGDBServer.cpp.
References m_gdb_client_up.
|
overridevirtual |
Implements lldb_private::Platform.
Definition at line 89 of file PlatformRemoteGDBServer.cpp.
References GetDescriptionStatic(), IsConnected(), and m_platform_description.
|
static |
Definition at line 84 of file PlatformRemoteGDBServer.cpp.
Referenced by GetDescription(), and Initialize().
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 665 of file PlatformRemoteGDBServer.cpp.
References IsConnected(), and m_gdb_client_up.
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 556 of file PlatformRemoteGDBServer.cpp.
References error(), lldb_private::GetLog(), lldb_private::FileSpec::GetPath(), IsConnected(), LLDB_LOGF, m_gdb_client_up, and lldb_private::Platform.
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 603 of file PlatformRemoteGDBServer.cpp.
References IsConnected(), LLDB_INVALID_UID, and m_gdb_client_up.
|
overridevirtual |
Locate a file for a platform.
The default implementation of this function will return the same file patch in local_file as was in platform_file.
[in] | platform_file | The platform file path to locate and cache locally. |
[in] | uuid_ptr | If we know the exact UUID of the file we are looking for, it can be specified. If it is not specified, we might now know the exact file. The UUID is usually some sort of MD5 checksum for the file and is sometimes known by dynamic linkers/loaders. If the UUID is known, it is best to supply it to platform file queries to ensure we are finding the correct file, not just a file at the correct path. |
[out] | local_file | A locally cached version of the platform file. For platforms that describe the current host computer, this will just be the same file. For remote platforms, this file might come from and SDK directory, or might need to be sync'ed over to the current machine for efficient debugging access. |
Reimplemented from lldb_private::Platform.
Definition at line 130 of file PlatformRemoteGDBServer.cpp.
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 285 of file PlatformRemoteGDBServer.cpp.
References m_gdb_client_up, and lldb_private::Platform::m_hostname.
Referenced by Attach(), ConnectRemote(), and DebugProcess().
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 101 of file PlatformRemoteGDBServer.cpp.
References lldb_private::ModuleSpec::Dump(), lldb_private::StreamString::GetData(), lldb_private::GetLog(), lldb_private::FileSpec::GetPath(), lldb_private::ArchSpec::GetTriple(), LLDB_LOGF, m_gdb_client_up, and lldb_private::Platform.
|
virtual |
Definition at line 830 of file PlatformRemoteGDBServer.cpp.
References IsConnected(), m_gdb_client_up, m_platform_hostname, m_platform_scheme, and MakeGdbServerUrl().
Referenced by ConnectToWaitingProcesses().
|
inlineoverridevirtual |
Implements lldb_private::PluginInterface.
Definition at line 40 of file PlatformRemoteGDBServer.h.
References GetPluginNameStatic().
|
inlinestatic |
Definition at line 31 of file PlatformRemoteGDBServer.h.
Referenced by GetPluginName(), and Initialize().
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 317 of file PlatformRemoteGDBServer.cpp.
References m_gdb_client_up.
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 161 of file PlatformRemoteGDBServer.cpp.
References m_gdb_client_up.
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 168 of file PlatformRemoteGDBServer.cpp.
References m_gdb_client_up.
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 155 of file PlatformRemoteGDBServer.cpp.
References m_gdb_client_up, and lldb_private::Platform::m_os_version.
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 175 of file PlatformRemoteGDBServer.cpp.
References m_gdb_client_up.
Referenced by GetRemoteUnixSignals(), and LaunchGDBServer().
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 699 of file PlatformRemoteGDBServer.cpp.
References lldb_private::UnixSignals::Create(), StringExtractorGDBRemote::eResponse, lldb_private::StructuredData::Object::GetAsDictionary(), GetRemoteSystemArchitecture(), lldb_private::Platform::GetRemoteUnixSignals(), StringExtractorGDBRemote::GetResponseType(), StringExtractor::GetStringRef(), lldb_private::StructuredData::Dictionary::GetValueForKey(), IsConnected(), lldb_private::StructuredData::Object::IsValid(), m_gdb_client_up, m_remote_signals_sp, lldb_private::StructuredData::ParseJSON(), and lldb_private::Success.
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 181 of file PlatformRemoteGDBServer.cpp.
References lldb_private::GetLog(), lldb_private::FileSpec::GetPath(), lldb_private::Platform::GetRemoteWorkingDirectory(), IsConnected(), LLDB_LOGF, m_gdb_client_up, and lldb_private::Platform.
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 148 of file PlatformRemoteGDBServer.cpp.
|
inlineoverridevirtual |
Get the platform's supported architectures in the order in which they should be searched.
[in] | process_host_arch | The process host architecture if it's known. An invalid ArchSpec represents that the process host architecture is unknown. |
Implements lldb_private::Platform.
Definition at line 70 of file PlatformRemoteGDBServer.h.
References m_supported_architectures.
|
inlineoverridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 94 of file PlatformRemoteGDBServer.h.
|
static |
Definition at line 52 of file PlatformRemoteGDBServer.cpp.
References CreateInstance(), g_initialized, GetDescriptionStatic(), GetPluginNameStatic(), lldb_private::Platform::Initialize(), and lldb_private::PluginManager::RegisterPlugin().
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 208 of file PlatformRemoteGDBServer.cpp.
References m_gdb_client_up.
Referenced by Attach(), AutoCompleteDiskFileOrDirectory(), CalculateMD5(), CloseFile(), ConnectRemote(), CreateSymlink(), DebugProcess(), GetDescription(), GetFileExists(), GetFilePermissions(), GetFileSize(), GetPendingGdbServerList(), GetRemoteUnixSignals(), GetRemoteWorkingDirectory(), KillSpawnedProcess(), lldb_private::platform_android::PlatformAndroidRemoteGDBServer::KillSpawnedProcess(), LaunchGDBServer(), lldb_private::platform_android::PlatformAndroidRemoteGDBServer::LaunchGDBServer(), LaunchProcess(), MakeDirectory(), OpenFile(), ReadFile(), RunShellCommand(), SetFilePermissions(), SetRemoteWorkingDirectory(), Unlink(), and WriteFile().
|
overridevirtual |
Kill process on a platform.
Reimplemented from lldb_private::Platform.
Definition at line 406 of file PlatformRemoteGDBServer.cpp.
References KillSpawnedProcess().
|
protectedvirtual |
Reimplemented in lldb_private::platform_android::PlatformAndroidRemoteGDBServer.
Definition at line 485 of file PlatformRemoteGDBServer.cpp.
References IsConnected(), and m_gdb_client_up.
Referenced by Attach(), DebugProcess(), and KillProcess().
|
protectedvirtual |
Reimplemented in lldb_private::platform_android::PlatformAndroidRemoteGDBServer.
Definition at line 453 of file PlatformRemoteGDBServer.cpp.
References GetRemoteSystemArchitecture(), lldb_private::ArchSpec::GetTriple(), IsConnected(), m_gdb_client_up, m_platform_hostname, m_platform_scheme, and MakeGdbServerUrl().
Referenced by Attach(), and DebugProcess().
|
overridevirtual |
Launch a new process on a platform, not necessarily for debugging, it could be just for running the process.
Reimplemented from lldb_private::Platform.
Definition at line 324 of file PlatformRemoteGDBServer.cpp.
References lldb_private::FileAction::eFileActionOpen, error(), lldb_private::ProcessInfo::GetArchitecture(), lldb_private::Args::GetArgumentAtIndex(), lldb_private::ProcessInfo::GetArguments(), lldb_private::ProcessInfo::GetEnvironment(), lldb_private::ProcessInfo::GetExecutableFile(), lldb_private::ProcessLaunchInfo::GetFileActionAtIndex(), lldb_private::ProcessLaunchInfo::GetFlags(), lldb_private::GetLog(), lldb_private::ProcessLaunchInfo::GetNumFileActions(), lldb_private::ArchSpec::GetTriple(), lldb_private::ProcessLaunchInfo::GetWorkingDirectory(), IsConnected(), LLDB_INVALID_PROCESS_ID, LLDB_LOGF, m_gdb_client_up, lldb_private::Platform, lldb_private::Args::ReplaceArgumentAtIndex(), lldb_private::ProcessInfo::SetProcessID(), and lldb_private::Flags::Test().
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 542 of file PlatformRemoteGDBServer.cpp.
References error(), lldb_private::GetLog(), lldb_private::FileSpec::GetPath(), IsConnected(), LLDB_LOGF, m_gdb_client_up, and lldb_private::Platform.
|
private |
Definition at line 788 of file PlatformRemoteGDBServer.cpp.
References MakeUrl().
Referenced by GetPendingGdbServerList(), and LaunchGDBServer().
|
protectedvirtual |
Definition at line 805 of file PlatformRemoteGDBServer.cpp.
References lldb_private::StreamString::GetString(), lldb_private::Stream::Printf(), and lldb_private::Stream::Write().
Referenced by MakeGdbServerUrl().
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 586 of file PlatformRemoteGDBServer.cpp.
References error(), IsConnected(), LLDB_INVALID_UID, and m_gdb_client_up.
|
privatedelete |
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 633 of file PlatformRemoteGDBServer.cpp.
References lldb_private::Platform::PutFile().
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 615 of file PlatformRemoteGDBServer.cpp.
References error(), IsConnected(), and m_gdb_client_up.
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 671 of file PlatformRemoteGDBServer.cpp.
References IsConnected(), and m_gdb_client_up.
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 571 of file PlatformRemoteGDBServer.cpp.
References error(), lldb_private::GetLog(), lldb_private::FileSpec::GetPath(), IsConnected(), LLDB_LOGF, m_gdb_client_up, and lldb_private::Platform.
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 195 of file PlatformRemoteGDBServer.cpp.
References lldb_private::GetLog(), lldb_private::FileSpec::GetPath(), IsConnected(), LLDB_LOGF, m_gdb_client_up, lldb_private::Platform, and lldb_private::Platform::SetRemoteWorkingDirectory().
|
static |
Definition at line 64 of file PlatformRemoteGDBServer.cpp.
References CreateInstance(), g_initialized, lldb_private::Platform::Terminate(), and lldb_private::PluginManager::UnregisterPlugin().
Reimplemented from lldb_private::Platform.
Definition at line 655 of file PlatformRemoteGDBServer.cpp.
References error(), lldb_private::GetLog(), lldb_private::FileSpec::GetPath(), IsConnected(), LLDB_LOGF, m_gdb_client_up, and lldb_private::Platform.
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 624 of file PlatformRemoteGDBServer.cpp.
References error(), IsConnected(), and m_gdb_client_up.
|
protected |
Definition at line 162 of file PlatformRemoteGDBServer.h.
Referenced by AutoCompleteDiskFileOrDirectory(), CalculateMD5(), CloseFile(), ConnectRemote(), CreateSymlink(), DisconnectRemote(), DoGetGroupName(), DoGetUserName(), FindProcesses(), GetFileExists(), GetFilePermissions(), GetFileSize(), GetHostname(), GetModuleSpec(), GetPendingGdbServerList(), GetProcessInfo(), GetRemoteOSBuildString(), GetRemoteOSKernelDescription(), GetRemoteOSVersion(), GetRemoteSystemArchitecture(), GetRemoteUnixSignals(), GetRemoteWorkingDirectory(), IsConnected(), KillSpawnedProcess(), lldb_private::platform_android::PlatformAndroidRemoteGDBServer::KillSpawnedProcess(), LaunchGDBServer(), lldb_private::platform_android::PlatformAndroidRemoteGDBServer::LaunchGDBServer(), LaunchProcess(), MakeDirectory(), OpenFile(), ReadFile(), RunShellCommand(), SetFilePermissions(), SetRemoteWorkingDirectory(), Unlink(), and WriteFile().
|
protected |
Definition at line 163 of file PlatformRemoteGDBServer.h.
Referenced by GetDescription().
|
protected |
Definition at line 167 of file PlatformRemoteGDBServer.h.
Referenced by ConnectRemote(), GetPendingGdbServerList(), and LaunchGDBServer().
|
protected |
Definition at line 166 of file PlatformRemoteGDBServer.h.
Referenced by ConnectRemote(), GetPendingGdbServerList(), and LaunchGDBServer().
|
protected |
Definition at line 169 of file PlatformRemoteGDBServer.h.
Referenced by DisconnectRemote(), and GetRemoteUnixSignals().
|
private |
Definition at line 191 of file PlatformRemoteGDBServer.h.
Referenced by ConnectRemote(), and GetSupportedArchitectures().