LLDB  mainline
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
lldb_private::platform_android::PlatformAndroidRemoteGDBServer Class Reference

#include <PlatformAndroidRemoteGDBServer.h>

Inheritance diagram for lldb_private::platform_android::PlatformAndroidRemoteGDBServer:
Inheritance graph
Collaboration diagram for lldb_private::platform_android::PlatformAndroidRemoteGDBServer:
Collaboration graph

Public Member Functions

 PlatformAndroidRemoteGDBServer ()
 ~PlatformAndroidRemoteGDBServer () override
Status ConnectRemote (Args &args) override
Status DisconnectRemote () override
lldb::ProcessSP ConnectProcess (llvm::StringRef connect_url, llvm::StringRef plugin_name, lldb_private::Debugger &debugger, lldb_private::Target *target, lldb_private::Status &error) override
- Public Member Functions inherited from lldb_private::platform_gdb_server::PlatformRemoteGDBServer
 PlatformRemoteGDBServer ()
 Default Constructor. More...
 ~PlatformRemoteGDBServer () override
 Destructor. More...
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. More...
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. More...
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. More...
Status KillProcess (const lldb::pid_t pid) override
 Kill process on a platform. More...
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 (). More...
lldb::ProcessSP Attach (ProcessAttachInfo &attach_info, Debugger &debugger, Target *target, Status &error) override
 Attach to an existing process using a process ID. More...
std::vector< ArchSpecGetSupportedArchitectures () override
 Get the platform's supported architectures in the order in which they should be searched. More...
size_t GetSoftwareBreakpointTrapOpcode (Target &target, BreakpointSite *bp_site) override
bool GetRemoteOSVersion () override
llvm::Optional< std::stringGetRemoteOSBuildString () override
llvm::Optional< std::stringGetRemoteOSKernelDescription () override
ArchSpec GetRemoteSystemArchitecture () override
FileSpec GetRemoteWorkingDirectory () override
bool SetRemoteWorkingDirectory (const FileSpec &working_dir) override
const char * GetHostname () override
UserIDResolverGetUserIDResolver () 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. More...
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. More...
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. More...
 ~Platform () override
 The destructor is virtual since this class is designed to be inherited from by the plug-in instance. More...
virtual Status ResolveExecutable (const ModuleSpec &module_spec, lldb::ModuleSP &module_sp, const FileSpecList *module_search_paths_ptr)
 Find a platform plugin for a given process. More...
virtual Status ResolveSymbolFile (Target &target, const ModuleSpec &sym_spec, FileSpec &sym_file)
 Find a symbol file given a symbol file module specification. More...
virtual bool ResolveRemotePath (const FileSpec &platform_path, FileSpec &resolved_platform_path)
 Resolves the FileSpec to a (possibly) remote path. More...
virtual llvm::VersionTuple GetOSVersion (Process *process=nullptr)
 Get the OS version from a connected platform. More...
bool SetOSVersion (llvm::VersionTuple os_version)
llvm::Optional< std::stringGetOSBuildString ()
llvm::Optional< std::stringGetOSKernelDescription ()
ConstString GetName ()
virtual ConstString GetFullNameForDylib (ConstString basename)
virtual void GetStatus (Stream &strm)
 Report the current status for this platform. More...
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)
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. More...
virtual bool IsCompatibleArchitecture (const ArchSpec &arch, bool exact_arch_match, ArchSpec *compatible_arch_ptr)
 Lets a platform answer if it is compatible with a given architecture and the target triple contained within. More...
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. More...
virtual lldb::ProcessSP ConnectProcessSynchronous (llvm::StringRef connect_url, llvm::StringRef plugin_name, Debugger &debugger, Stream &stream, Target *target, Status &error)
virtual lldb::BreakpointSP SetThreadCreationBreakpoint (Target &target)
virtual lldb_private::ConstString GetSDKDirectory (lldb_private::Target &target)
const std::stringGetRemoteURL () const
bool IsHost () const
bool IsRemote () const
const ArchSpecGetSystemArchitecture ()
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. More...
size_t GetMaxUserIDNameLength () const
size_t GetMaxGroupIDNameLength () const
ConstString GetSDKRootDirectory () const
void SetSDKRootDirectory (ConstString dir)
ConstString GetSDKBuild () const
void SetSDKBuild (ConstString 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 GetFile (const FileSpec &source, const FileSpec &destination)
virtual Status Install (const FileSpec &src, const FileSpec &dst)
 Install a file or directory to the remote system. More...
virtual Environment GetEnvironment ()
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::OptionGroupOptionsGetConnectionOptions (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 void SetLocalCacheDirectory (const char *local)
virtual const char * GetLocalCacheDirectory ()
virtual std::string GetPlatformSpecificConnectionInformation ()
virtual bool CalculateMD5 (const FileSpec &file_spec, uint64_t &low, uint64_t &high)
virtual uint32_t GetResumeCountForLaunchInfo (ProcessLaunchInfo &launch_info)
lldb::UnixSignalsSP GetUnixSignals ()
virtual std::string GetQueueNameForThreadQAddress (Process *process, lldb::addr_t dispatch_qaddr)
 Locate a queue name given a thread's qaddr. More...
virtual lldb::queue_id_t GetQueueIDForThreadQAddress (Process *process, lldb::addr_t dispatch_qaddr)
 Locate a queue ID given a thread's qaddr. More...
virtual const std::vector< ConstString > & GetTrapHandlerSymbolNames ()
 Provide a list of trap handler function names for this platform. More...
virtual lldb::UnwindPlanSP GetTrapHandlerUnwindPlan (const llvm::Triple &triple, ConstString name)
 Try to get a specific unwind plan for a named trap handler. More...
virtual FileSpec LocateExecutable (const char *basename)
 Find a support executable that may not live within in the standard locations related to LLDB. More...
virtual uint32_t GetDefaultMemoryCacheLineSize ()
 Allow the platform to set preferred memory cache line size. More...
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. More...
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. More...
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 llvm::Expected< StructuredData::DictionarySPFetchExtendedCrashInformation (lldb_private::Process &process)
 Gather all of crash informations into a structured data dictionary. More...
- Public Member Functions inherited from lldb_private::PluginInterface
 PluginInterface ()=default
virtual ~PluginInterface ()=default
 PluginInterface (const PluginInterface &)=delete
PluginInterfaceoperator= (const PluginInterface &)=delete

Protected Member Functions

bool LaunchGDBServer (lldb::pid_t &pid, std::string &connect_url) override
bool KillSpawnedProcess (lldb::pid_t pid) override
void DeleteForwardPort (lldb::pid_t pid)
Status MakeConnectURL (const lldb::pid_t pid, const uint16_t remote_port, llvm::StringRef remote_socket_name, std::string &connect_url)
- Protected Member Functions inherited from lldb_private::platform_gdb_server::PlatformRemoteGDBServer
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. More...
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 ()
virtual Status ResolveRemoteExecutable (const ModuleSpec &module_spec, lldb::ModuleSP &exe_module_sp, const FileSpecList *module_search_paths_ptr)

Protected Attributes

std::string m_device_id
std::map< lldb::pid_t, uint16_tm_port_forwards
llvm::Optional< AdbClient::UnixSocketNamespacem_socket_namespace
- Protected Attributes inherited from lldb_private::platform_gdb_server::PlatformRemoteGDBServer
process_gdb_remote::GDBRemoteCommunicationClient m_gdb_client
process_gdb_remote::GDBRemoteCommunicationReplayServer m_gdb_replay_server
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
ConstString m_sdk_sysroot
ConstString m_sdk_build
FileSpec m_working_dir
std::string m_remote_url
std::string m_name
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< ConstStringm_trap_handlers
bool m_calculated_trap_handlers
const std::unique_ptr< ModuleCachem_module_cache

Private Member Functions

 PlatformAndroidRemoteGDBServer (const PlatformAndroidRemoteGDBServer &)=delete
const PlatformAndroidRemoteGDBServeroperator= (const PlatformAndroidRemoteGDBServer &)=delete

Additional Inherited Members

- Static Public Member Functions inherited from lldb_private::platform_gdb_server::PlatformRemoteGDBServer
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 PlatformPropertiesGetGlobalPlatformProperties ()
static lldb::PlatformSP GetHostPlatform ()
 Get the native host platform plug-in. More...
static lldb::PlatformSP GetPlatformForArchitecture (const ArchSpec &arch, ArchSpec *platform_arch_ptr)
static const char * GetHostPlatformName ()
static void SetHostPlatform (const lldb::PlatformSP &platform_sp)
static lldb::PlatformSP Find (ConstString name)
static lldb::PlatformSP Create (ConstString name, Status &error)
static lldb::PlatformSP Create (const ArchSpec &arch, ArchSpec *platform_arch_ptr, Status &error)
static ArchSpec GetAugmentedArchSpec (Platform *platform, llvm::StringRef triple)
 Augments the triple either with information from platform or the host system (if platform is null). More...
- Protected Types inherited from lldb_private::Platform
typedef std::map< uint32_t, ConstStringIDToNameMap
- Static Protected Member Functions inherited from lldb_private::Platform
static std::vector< ArchSpecCreateArchList (llvm::ArrayRef< llvm::Triple::ArchType > archs, llvm::Triple::OSType os)
 Create a list of ArchSpecs with the given OS and a architectures. More...

Detailed Description

Definition at line 24 of file PlatformAndroidRemoteGDBServer.h.

Constructor & Destructor Documentation

◆ PlatformAndroidRemoteGDBServer() [1/2]

PlatformAndroidRemoteGDBServer::PlatformAndroidRemoteGDBServer ( )

◆ ~PlatformAndroidRemoteGDBServer()

PlatformAndroidRemoteGDBServer::~PlatformAndroidRemoteGDBServer ( )

Definition at line 78 of file PlatformAndroidRemoteGDBServer.cpp.

References DeleteForwardPortWithAdb().

◆ PlatformAndroidRemoteGDBServer() [2/2]

lldb_private::platform_android::PlatformAndroidRemoteGDBServer::PlatformAndroidRemoteGDBServer ( const PlatformAndroidRemoteGDBServer )

Member Function Documentation

◆ ConnectProcess()

lldb::ProcessSP PlatformAndroidRemoteGDBServer::ConnectProcess ( llvm::StringRef  connect_url,
llvm::StringRef  plugin_name,
lldb_private::Debugger debugger,
lldb_private::Target target,
lldb_private::Status error 

Reimplemented from lldb_private::Platform.

Definition at line 199 of file PlatformAndroidRemoteGDBServer.cpp.

References error(), and string().

◆ ConnectRemote()

Status PlatformAndroidRemoteGDBServer::ConnectRemote ( Args args)

◆ DeleteForwardPort()

void PlatformAndroidRemoteGDBServer::DeleteForwardPort ( lldb::pid_t  pid)

◆ DisconnectRemote()

Status PlatformAndroidRemoteGDBServer::DisconnectRemote ( )

Reimplemented from lldb_private::Platform.

Definition at line 147 of file PlatformAndroidRemoteGDBServer.cpp.

References g_remote_platform_pid.

◆ KillSpawnedProcess()

bool PlatformAndroidRemoteGDBServer::KillSpawnedProcess ( lldb::pid_t  pid)

◆ LaunchGDBServer()

bool PlatformAndroidRemoteGDBServer::LaunchGDBServer ( lldb::pid_t pid,
std::string connect_url 

◆ MakeConnectURL()

Status PlatformAndroidRemoteGDBServer::MakeConnectURL ( const lldb::pid_t  pid,
const uint16_t  remote_port,
llvm::StringRef  remote_socket_name,
std::string connect_url 

◆ operator=()

const PlatformAndroidRemoteGDBServer& lldb_private::platform_android::PlatformAndroidRemoteGDBServer::operator= ( const PlatformAndroidRemoteGDBServer )

Member Data Documentation

◆ m_device_id

std::string lldb_private::platform_android::PlatformAndroidRemoteGDBServer::m_device_id

Definition at line 42 of file PlatformAndroidRemoteGDBServer.h.

◆ m_port_forwards

std::map<lldb::pid_t, uint16_t> lldb_private::platform_android::PlatformAndroidRemoteGDBServer::m_port_forwards

Definition at line 43 of file PlatformAndroidRemoteGDBServer.h.

◆ m_socket_namespace

llvm::Optional<AdbClient::UnixSocketNamespace> lldb_private::platform_android::PlatformAndroidRemoteGDBServer::m_socket_namespace

Definition at line 44 of file PlatformAndroidRemoteGDBServer.h.

The documentation for this class was generated from the following files: