LLDB mainline
|
#include <PlatformDarwin.h>
Classes | |
struct | CrashInfoAnnotations |
struct | SDKEnumeratorInfo |
Public Member Functions | |
~PlatformDarwin () override | |
Destructor. | |
Status | PutFile (const FileSpec &source, const FileSpec &destination, uint32_t uid=UINT32_MAX, uint32_t gid=UINT32_MAX) override |
Status | ResolveSymbolFile (Target &target, const ModuleSpec &sym_spec, FileSpec &sym_file) override |
Find a symbol file given a symbol file module specification. | |
FileSpecList | LocateExecutableScriptingResources (Target *target, Module &module, Stream &feedback_stream) override |
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) override |
size_t | GetSoftwareBreakpointTrapOpcode (Target &target, BreakpointSite *bp_site) override |
lldb::BreakpointSP | SetThreadCreationBreakpoint (Target &target) override |
bool | ModuleIsExcludedForUnconstrainedSearches (Target &target, const lldb::ModuleSP &module_sp) override |
void | ARMGetSupportedArchitectures (std::vector< ArchSpec > &archs, std::optional< llvm::Triple::OSType > os={}) |
The architecture selection rules for arm processors These cpu subtypes have distinct names (e.g. | |
void | x86GetSupportedArchitectures (std::vector< ArchSpec > &archs) |
uint32_t | GetResumeCountForLaunchInfo (ProcessLaunchInfo &launch_info) override |
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 (). | |
void | CalculateTrapHandlerSymbolNames () override |
Ask the Platform subclass to fill in the list of trap handler names. | |
llvm::VersionTuple | GetOSVersion (Process *process=nullptr) override |
Get the OS version from a connected platform. | |
bool | SupportsModules () override |
ConstString | GetFullNameForDylib (ConstString basename) override |
FileSpec | LocateExecutable (const char *basename) override |
Find a support executable that may not live within in the standard locations related to LLDB. | |
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. | |
Args | GetExtraStartupCommands () override |
llvm::Expected< StructuredData::DictionarySP > | FetchExtendedCrashInformation (Process &process) override |
Gather all of crash informations into a structured data dictionary. | |
llvm::Expected< std::pair< XcodeSDK, bool > > | GetSDKPathFromDebugInfo (Module &module) override |
Search each CU associated with the specified 'module' for the SDK paths the CUs were compiled against. | |
llvm::Expected< std::string > | ResolveSDKPathFromDebugInfo (Module &module) override |
Returns the full path of the most appropriate SDK for the specified 'module'. | |
PlatformPOSIX (bool is_host) | |
Default Constructor. | |
Public Member Functions inherited from PlatformPOSIX | |
PlatformPOSIX (bool is_host) | |
Default Constructor. | |
~PlatformPOSIX () override | |
Destructor. | |
lldb_private::OptionGroupOptions * | GetConnectionOptions (lldb_private::CommandInterpreter &interpreter) override |
lldb_private::Status | PutFile (const lldb_private::FileSpec &source, const lldb_private::FileSpec &destination, uint32_t uid=UINT32_MAX, uint32_t gid=UINT32_MAX) override |
lldb_private::Status | GetFile (const lldb_private::FileSpec &source, const lldb_private::FileSpec &destination) override |
const lldb::UnixSignalsSP & | GetRemoteUnixSignals () override |
lldb::ProcessSP | Attach (lldb_private::ProcessAttachInfo &attach_info, lldb_private::Debugger &debugger, lldb_private::Target *target, lldb_private::Status &error) override |
Attach to an existing process using a process ID. | |
lldb::ProcessSP | DebugProcess (lldb_private::ProcessLaunchInfo &launch_info, lldb_private::Debugger &debugger, lldb_private::Target &target, lldb_private::Status &error) override |
Subclasses do not need to implement this function as it uses the Platform::LaunchProcess() followed by Platform::Attach (). | |
std::string | GetPlatformSpecificConnectionInformation () override |
void | CalculateTrapHandlerSymbolNames () override |
Ask the Platform subclass to fill in the list of trap handler names. | |
lldb_private::Status | ConnectRemote (lldb_private::Args &args) override |
lldb_private::Status | DisconnectRemote () override |
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_image) override |
lldb_private::Status | UnloadImage (lldb_private::Process *process, uint32_t image_token) override |
lldb_private::ConstString | GetFullNameForDylib (lldb_private::ConstString basename) override |
Public Member Functions inherited from lldb_private::RemoteAwarePlatform | |
virtual Status | ResolveExecutable (const ModuleSpec &module_spec, lldb::ModuleSP &exe_module_sp, const FileSpecList *module_search_paths_ptr) override |
Set the target's executable based off of the existing architecture information in target given a path to an executable exe_file. | |
bool | GetModuleSpec (const FileSpec &module_file_spec, const ArchSpec &arch, ModuleSpec &module_spec) 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 *dst, uint64_t dst_len, Status &error) override |
uint64_t | WriteFile (lldb::user_id_t fd, uint64_t offset, const void *src, uint64_t src_len, Status &error) override |
lldb::user_id_t | GetFileSize (const FileSpec &file_spec) override |
Status | CreateSymlink (const FileSpec &src, const FileSpec &dst) override |
bool | GetFileExists (const FileSpec &file_spec) override |
Status | Unlink (const FileSpec &file_spec) override |
FileSpec | GetRemoteWorkingDirectory () override |
bool | SetRemoteWorkingDirectory (const FileSpec &working_dir) override |
Status | MakeDirectory (const FileSpec &file_spec, uint32_t mode) override |
Status | GetFilePermissions (const FileSpec &file_spec, uint32_t &file_permissions) override |
Status | SetFilePermissions (const FileSpec &file_spec, uint32_t file_permissions) override |
llvm::ErrorOr< llvm::MD5::MD5Result > | CalculateMD5 (const FileSpec &file_spec) override |
Status | GetFileWithUUID (const FileSpec &platform_file, const UUID *uuid, FileSpec &local_file) override |
Locate a file for a platform. | |
bool | GetRemoteOSVersion () override |
std::optional< std::string > | GetRemoteOSBuildString () override |
std::optional< std::string > | GetRemoteOSKernelDescription () override |
ArchSpec | GetRemoteSystemArchitecture () override |
Status | RunShellCommand (llvm::StringRef command, const FileSpec &working_dir, int *status_ptr, int *signo_ptr, std::string *command_output, const Timeout< std::micro > &timeout) override |
Status | RunShellCommand (llvm::StringRef interpreter, llvm::StringRef command, const FileSpec &working_dir, int *status_ptr, int *signo_ptr, std::string *command_output, const Timeout< std::micro > &timeout) override |
const char * | GetHostname () override |
UserIDResolver & | GetUserIDResolver () override |
lldb_private::Environment | GetEnvironment () override |
bool | IsConnected () const override |
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. | |
lldb::ProcessSP | ConnectProcess (llvm::StringRef connect_url, llvm::StringRef plugin_name, Debugger &debugger, Target *target, Status &error) override |
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. | |
size_t | ConnectToWaitingProcesses (Debugger &debugger, Status &error) override |
Connect to all processes waiting for a debugger to attach. | |
Platform (bool is_host_platform) | |
Default Constructor. | |
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 lldb::PlatformSP | CreateInstance (bool force, const ArchSpec *arch) |
static void | DebuggerInitialize (lldb_private::Debugger &debugger) |
static void | Initialize () |
static void | Terminate () |
static llvm::StringRef | GetPluginNameStatic () |
static llvm::StringRef | GetDescriptionStatic () |
static std::tuple< llvm::VersionTuple, llvm::StringRef > | ParseVersionBuildDir (llvm::StringRef str) |
static FileSpec | GetCurrentToolchainDirectory () |
Return the toolchain directory the current LLDB instance is located in. | |
static FileSpec | GetCurrentCommandLineToolsDirectory () |
Return the command line tools directory the current LLDB instance is located in. | |
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 | |
StructuredData::ArraySP | ExtractCrashInfoAnnotations (Process &process) |
Extract the __crash_info annotations from each of the target's modules. | |
StructuredData::DictionarySP | ExtractAppSpecificInfo (Process &process) |
Extract the Application Specific Information messages from a crash report. | |
void | ReadLibdispatchOffsetsAddress (Process *process) |
void | ReadLibdispatchOffsets (Process *process) |
virtual bool | CheckLocalSharedCache () const |
void | AddClangModuleCompilationOptionsForSDKType (Target *target, std::vector< std::string > &options, XcodeSDK::Type sdk_type) |
Status | FindBundleBinaryInExecSearchPaths (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) |
Protected Member Functions inherited from PlatformPOSIX | |
lldb_private::Status | EvaluateLibdlExpression (lldb_private::Process *process, const char *expr_cstr, llvm::StringRef expr_prefix, lldb::ValueObjectSP &result_valobj_sp) |
std::unique_ptr< lldb_private::UtilityFunction > | MakeLoadImageUtilityFunction (lldb_private::ExecutionContext &exe_ctx, lldb_private::Status &error) |
virtual llvm::StringRef | GetLibdlFunctionDeclarations (lldb_private::Process *process) |
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 () |
Static Protected Member Functions | |
static const char * | GetCompatibleArch (ArchSpec::Core core, size_t idx) |
static FileSystem::EnumerateDirectoryResult | DirectoryEnumerator (void *baton, llvm::sys::fs::file_type file_type, llvm::StringRef path) |
static FileSpec | FindSDKInXcodeForModules (XcodeSDK::Type sdk_type, const FileSpec &sdks_spec) |
static FileSpec | GetSDKDirectoryForModules (XcodeSDK::Type sdk_type) |
static std::string | FindComponentInPath (llvm::StringRef path, llvm::StringRef component) |
static llvm::Triple::OSType | GetHostOSType () |
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 Member Functions | |
PlatformDarwin (const PlatformDarwin &)=delete | |
const PlatformDarwin & | operator= (const PlatformDarwin &)=delete |
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 |
Definition at line 45 of file PlatformDarwin.h.
|
overridedefault |
Destructor.
The destructor is virtual since this class is designed to be inherited from by the plug-in instance.
|
privatedelete |
|
protected |
Definition at line 1029 of file PlatformDarwin.cpp.
References lldb_private::XcodeSDK::AppleTVOS, lldb_private::XcodeSDK::AppleTVSimulator, lldb_private::XcodeSDK::bridgeOS, lldb_private::XcodeSDK::GetCanonicalName(), lldb_private::Target::GetExecutableModule(), lldb_private::GetLog(), lldb_private::ObjectFile::GetMinimumOSVersion(), GetOSVersion(), lldb_private::FileSpec::GetPath(), GetSDKDirectoryForModules(), lldb_private::StreamString::GetString(), lldb_private::Host, lldb_private::FileSystem::Instance(), lldb_private::XcodeSDK::iPhoneOS, lldb_private::XcodeSDK::iPhoneSimulator, lldb_private::XcodeSDK::Linux, LLDB_LOG_ERROR, LLDB_LOGF, lldb_private::Platform::m_mutex, lldb_private::XcodeSDK::MacOSX, ResolveSDKPathFromDebugInfo(), lldb_private::XcodeSDK::Info::type, lldb_private::Types, lldb_private::XcodeSDK::unknown, lldb_private::XcodeSDK::watchOS, lldb_private::XcodeSDK::WatchSimulator, lldb_private::XcodeSDK::XROS, and lldb_private::XcodeSDK::XRSimulator.
Referenced by lldb_private::PlatformAppleSimulator::AddClangModuleCompilationOptions(), lldb_private::PlatformMacOSX::AddClangModuleCompilationOptions(), and lldb_private::PlatformRemoteDarwinDevice::AddClangModuleCompilationOptions().
void PlatformDarwin::ARMGetSupportedArchitectures | ( | std::vector< ArchSpec > & | archs, |
std::optional< llvm::Triple::OSType > | os = {} |
||
) |
The architecture selection rules for arm processors These cpu subtypes have distinct names (e.g.
armv7f) but armv7 binaries run fine on an armv7f processor.
Definition at line 600 of file PlatformDarwin.cpp.
References GetCompatibleArchs(), lldb_private::ArchSpec::GetCore(), and lldb_private::Platform::GetSystemArchitecture().
Referenced by lldb_private::PlatformMacOSX::GetSupportedArchitectures(), lldb_private::PlatformRemoteiOS::GetSupportedArchitectures(), and lldb_private::PlatformRemoteMacOSX::GetSupportedArchitectures().
|
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 721 of file PlatformDarwin.cpp.
References lldb_private::Platform::m_trap_handlers.
|
inlineprotectedvirtual |
Reimplemented in lldb_private::PlatformRemoteiOS.
Definition at line 171 of file PlatformDarwin.h.
References lldb_private::Platform::IsHost().
Referenced by lldb_private::PlatformDarwinDevice::GetSharedModuleWithLocalCache().
|
static |
Definition at line 110 of file PlatformDarwin.cpp.
Referenced by Initialize(), and Terminate().
|
static |
Definition at line 159 of file PlatformDarwin.cpp.
References lldb_private::PluginManager::CreateSettingForPlatformPlugin(), ExceptionMaskValidator(), GetGlobalProperties(), lldb_private::PluginManager::GetSettingForPlatformPlugin(), PlatformDarwinProperties::GetSettingName(), and lldb_private::OptionValueString::SetValidator().
Referenced by Initialize().
|
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 698 of file PlatformDarwin.cpp.
References lldb_private::Platform::DebugProcess(), error(), lldb_private::Platform::IsHost(), lldb_private::RemoteAwarePlatform::m_remote_platform_sp, lldb_private::ProcessLaunchInfo::NoOpMonitorCallback(), and lldb_private::ProcessLaunchInfo::SetMonitorProcessCallback().
|
staticprotected |
Definition at line 739 of file PlatformDarwin.cpp.
References lldb_private::FileSystem::eEnumerateDirectoryResultNext, lldb_private::PlatformDarwin::SDKEnumeratorInfo::found_path, lldb_private::PlatformDarwin::SDKEnumeratorInfo::sdk_type, and lldb_private::XcodeSDK::SDKSupportsModules().
Referenced by FindSDKInXcodeForModules().
|
protected |
Extract the Application Specific Information
messages from a crash report.
Definition at line 998 of file PlatformDarwin.cpp.
References lldb_private::StructuredData::Array::AddItem(), lldb_private::StructuredData::Dictionary::ForEach(), lldb_private::StructuredData::Object::GetAsArray(), lldb_private::StructuredData::Array::GetItemAtIndex(), lldb_private::Process::GetMetadata(), and lldb_private::StructuredData::Array::GetSize().
Referenced by FetchExtendedCrashInformation().
|
protected |
Extract the __crash_info
annotations from each of the target's modules.
If the platform have a crashed processes with a __crash_info
section, extract the section to gather the messages annotations and the abort cause.
[in] | process | The crashed process. |
Definition at line 894 of file PlatformDarwin.cpp.
References lldb_private::PlatformDarwin::CrashInfoAnnotations::abort_cause, error(), lldb_private::SectionList::FindSectionByName(), lldb_private::Target::GetImages(), lldb_private::GetLog(), lldb_private::Process::GetTarget(), LLDB_INVALID_ADDRESS, LLDB_LOG, lldb_private::PlatformDarwin::CrashInfoAnnotations::message, lldb_private::PlatformDarwin::CrashInfoAnnotations::message2, lldb_private::ModuleList::Modules(), lldb_private::Process, lldb_private::Process::ReadCStringFromMemory(), lldb_private::Process::ReadMemoryFromInferior(), and lldb_private::PlatformDarwin::CrashInfoAnnotations::version.
Referenced by FetchExtendedCrashInformation().
|
overridevirtual |
Gather all of crash informations into a structured data dictionary.
If the platform have a crashed process with crash information entries, gather all the entries into an structured data dictionary or return a nullptr. This dictionary is generic and extensible, as it contains an array for each different type of crash information.
[in] | process | The crashed process. |
Reimplemented from lldb_private::Platform.
Definition at line 859 of file PlatformDarwin.cpp.
References ExtractAppSpecificInfo(), ExtractCrashInfoAnnotations(), lldb_private::Process::GetExtendedCrashInfoDict(), and lldb_private::StructuredData::Dictionary::GetSize().
|
protected |
Definition at line 1263 of file PlatformDarwin.cpp.
References lldb_private::FileSpec::AppendPathComponent(), lldb_private::FileSpec::GetComponents(), lldb_private::ModuleSpec::GetFileSpec(), lldb_private::FileSpecList::GetFileSpecAtIndex(), lldb_private::GetLog(), lldb_private::FileSpec::GetPath(), lldb_private::Platform::GetSharedModule(), lldb_private::FileSpecList::GetSize(), lldb_private::Host, lldb_private::FileSystem::Instance(), and LLDB_LOGF.
Referenced by lldb_private::PlatformMacOSX::GetSharedModule(), and lldb_private::PlatformRemoteDarwinDevice::GetSharedModule().
|
staticprotected |
Definition at line 1333 of file PlatformDarwin.cpp.
Referenced by GetCurrentCommandLineToolsDirectory(), and GetCurrentToolchainDirectory().
|
staticprotected |
Definition at line 752 of file PlatformDarwin.cpp.
References DirectoryEnumerator(), lldb_private::FileSystem::EnumerateDirectory(), lldb_private::PlatformDarwin::SDKEnumeratorInfo::found_path, lldb_private::FileSpec::GetPath(), lldb_private::FileSystem::Instance(), and lldb_private::PlatformDarwin::SDKEnumeratorInfo::sdk_type.
Referenced by GetSDKDirectoryForModules().
|
staticprotected |
|
static |
Return the command line tools directory the current LLDB instance is located in.
Definition at line 1354 of file PlatformDarwin.cpp.
References FindComponentInPath().
|
static |
Return the toolchain directory the current LLDB instance is located in.
Definition at line 1348 of file PlatformDarwin.cpp.
References FindComponentInPath().
|
static |
Definition at line 106 of file PlatformDarwin.cpp.
Referenced by Initialize().
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 173 of file PlatformDarwin.cpp.
References lldb_private::Args::AppendArgument(), and GetGlobalProperties().
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 1151 of file PlatformDarwin.cpp.
References lldb_private::ConstString::GetCString(), lldb_private::StreamString::GetString(), lldb_private::ConstString::IsEmpty(), and lldb_private::Stream::Printf().
|
staticprotected |
Definition at line 1360 of file PlatformDarwin.cpp.
Referenced by lldb_private::PlatformMacOSX::GetSupportedArchitectures().
|
overridevirtual |
Get the OS version from a connected platform.
Some platforms might not be connected to a remote platform, but can figure out the OS version for a process. This is common for simulator platforms that will run native programs on the current host, but the simulator might be simulating a different OS. The process parameter might be specified to help to determine the OS version.
Reimplemented from lldb_private::Platform.
Definition at line 1160 of file PlatformDarwin.cpp.
References lldb_private::ProcessInfo::GetEnvironment(), lldb_private::Process::GetID(), lldb_private::Platform::GetOSVersion(), lldb_private::PluginInterface::GetPluginName(), lldb_private::Host::GetProcessInfo(), and lldb_private::ApplePropertyList::GetValueAsString().
Referenced by AddClangModuleCompilationOptionsForSDKType(), and lldb_private::PlatformDarwinDevice::GetSDKDirectoryForCurrentOSVersion().
|
inlinestatic |
Definition at line 59 of file PlatformDarwin.h.
Referenced by Initialize().
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 670 of file PlatformDarwin.cpp.
References lldb_private::ProcessInfo::GetEnvironment(), lldb_private::FileSpec::GetPath(), and lldb_private::ProcessLaunchInfo::GetShell().
|
staticprotected |
Definition at line 778 of file PlatformDarwin.cpp.
References lldb_private::FileSpec::AppendPathComponent(), lldb_private::XcodeSDK::AppleTVSimulator, FindSDKInXcodeForModules(), GetCommandLineToolsLibraryPath(), lldb_private::StreamString::GetString(), lldb_private::FileSystem::Instance(), lldb_private::XcodeSDK::iPhoneOS, lldb_private::XcodeSDK::iPhoneSimulator, lldb_private::XcodeSDK::MacOSX, lldb_private::Stream::Printf(), lldb_private::XcodeSDK::SDKSupportsModules(), lldb_private::XcodeSDK::WatchSimulator, and lldb_private::XcodeSDK::XRSimulator.
Referenced by AddClangModuleCompilationOptionsForSDKType().
|
overridevirtual |
Search each CU associated with the specified 'module' for the SDK paths the CUs were compiled against.
In the presence of different SDKs, we try to pick the most appropriate one using XcodeSDK::Merge.
[in] | module | Module whose debug-info CUs to parse for which SDK they were compiled against. |
Reimplemented from lldb_private::Platform.
Definition at line 1383 of file PlatformDarwin.cpp.
References lldb_private::ConstString::AsCString(), lldb_private::SymbolFile::GetCompileUnitAtIndex(), lldb_private::FileSpec::GetFilename(), lldb_private::Module::GetFileSpec(), lldb_private::SymbolFile::GetNumCompileUnits(), lldb_private::Module::GetSymbolFile(), lldb_private::XcodeSDK::IsAppleInternalSDK(), lldb_private::XcodeSDK::Merge(), and lldb_private::SymbolFile::ParseXcodeSDK().
Referenced by ResolveSDKPathFromDebugInfo().
|
overridevirtual |
[in] | module_spec | The ModuleSpec of a binary to find. |
[in] | process | A Process. |
[out] | module_sp | A Module that matches the ModuleSpec, if one is found. |
[in] | module_search_paths_ptr | Locations to possibly look for a binary that matches the ModuleSpec. |
[out] | old_modules | Existing Modules in the Process' Target image list which match the FileSpec. |
[out] | did_create_ptr | Optional boolean, nullptr may be passed for this argument. If this method is returning a new ModuleSP, this will be set to true. If this method is returning a ModuleSP that is already in the Target's image list, it will be false. |
Reimplemented from lldb_private::Platform.
Reimplemented in lldb_private::PlatformMacOSX, and lldb_private::PlatformRemoteDarwinDevice.
Definition at line 329 of file PlatformDarwin.cpp.
References error(), lldb_private::Host::GetBundleDirectory(), lldb_private::ModuleSpec::GetFileSpec(), lldb_private::FileSpecList::GetFileSpecAtIndex(), lldb_private::FileSpec::GetPath(), lldb_private::Platform::GetSharedModule(), lldb_private::FileSpecList::GetSize(), lldb_private::FileSystem::Instance(), lldb_private::Platform::IsRemote(), lldb_private::RemoteAwarePlatform::m_remote_platform_sp, PATH_MAX, and lldb_private::Host::ResolveExecutableInBundle().
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 410 of file PlatformDarwin.cpp.
References lldb_private::eCodeAlternateISA, lldb_private::Target::GetArchitecture(), lldb_private::BreakpointSite::GetConstituentAtIndex(), lldb_private::ArchSpec::GetMachine(), lldb_private::Platform::GetSoftwareBreakpointTrapOpcode(), and lldb_private::BreakpointSite::SetTrapOpcode().
|
static |
Definition at line 85 of file PlatformDarwin.cpp.
References CreateInstance(), DebuggerInitialize(), g_initialize_count, GetDescriptionStatic(), GetPluginNameStatic(), lldb_private::Platform::Initialize(), and lldb_private::PluginManager::RegisterPlugin().
Referenced by lldb_private::PlatformAppleSimulator::Initialize(), lldb_private::PlatformMacOSX::Initialize(), lldb_private::PlatformRemoteAppleBridge::Initialize(), lldb_private::PlatformRemoteAppleTV::Initialize(), lldb_private::PlatformRemoteAppleWatch::Initialize(), lldb_private::PlatformRemoteAppleXR::Initialize(), lldb_private::PlatformRemoteiOS::Initialize(), and lldb_private::PlatformRemoteMacOSX::Initialize().
|
overridevirtual |
Launch a new process on a platform, not necessarily for debugging, it could be just for running the process.
Reimplemented from lldb_private::RemoteAwarePlatform.
Definition at line 1243 of file PlatformDarwin.cpp.
References lldb_private::ProcessInfo::GetEnvironment(), and lldb_private::Platform::LaunchProcess().
|
overridevirtual |
Find a support executable that may not live within in the standard locations related to LLDB.
Executable might exist within the Platform SDK directories, or in standard tool directories within the current IDE that is running LLDB.
[in] | basename | The basename of the executable to locate in the current platform. |
Reimplemented from lldb_private::Platform.
Definition at line 1191 of file PlatformDarwin.cpp.
References lldb_private::FileSpec::AppendPathComponent(), lldb_private::FileSystem::Exists(), GetCommandLineToolsLibraryPath(), lldb_private::FileSpec::GetPathAsConstString(), lldb_private::FileSystem::Instance(), lldb_private::FileSpec::SetDirectory(), and lldb_private::FileSpec::SetFilename().
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 196 of file PlatformDarwin.cpp.
References lldb_private::FileSpecList::Append(), lldb::eScriptLanguagePython, lldb_private::FileSystem::Exists(), lldb_private::ConstString::GetCString(), lldb_private::StreamString::GetData(), lldb_private::Target::GetDebugger(), lldb_private::FileSpec::GetDirectory(), lldb_private::FileSpec::GetFilename(), lldb_private::FileSpec::GetFileNameStrippingExtension(), lldb_private::ObjectFile::GetFileSpec(), lldb_private::Module::GetFileSpec(), lldb_private::FileSpec::GetPath(), lldb_private::Debugger::GetScriptInterpreter(), lldb_private::Debugger::GetScriptLanguage(), lldb_private::StreamString::GetString(), lldb_private::Module::GetSymbolFile(), lldb_private::FileSystem::Instance(), lldb_private::ScriptInterpreter::IsReservedWord(), lldb_private::Stream::Printf(), lldb_private::FileSystem::Resolve(), and lldb_private::FileSpec::SetFilename().
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 467 of file PlatformDarwin.cpp.
References lldb_private::ObjectFile::eTypeDynamicLinker, and lldb_private::ObjectFile::GetType().
|
privatedelete |
|
static |
Definition at line 841 of file PlatformDarwin.cpp.
PlatformPOSIX::PlatformPOSIX | ( | bool | is_host | ) |
Default Constructor.
Definition at line 20 of file PlatformPOSIX.cpp.
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 186 of file PlatformDarwin.cpp.
References PlatformPOSIX::PutFile(), and lldb_private::RemoteAwarePlatform::Unlink().
|
protected |
|
protected |
|
overridevirtual |
Returns the full path of the most appropriate SDK for the specified 'module'.
This function gets this path by parsing debug-info (see `GetSDKPathFromDebugInfo`).
[in] | module | Module whose debug-info to parse for which SDK it was compiled against. |
Reimplemented from lldb_private::Platform.
Definition at line 1411 of file PlatformDarwin.cpp.
References GetSDKPathFromDebugInfo().
Referenced by AddClangModuleCompilationOptionsForSDKType().
|
overridevirtual |
Find a symbol file given a symbol file module specification.
Each platform might have tricks to find symbol files for an executable given information in a symbol file ModuleSpec. Some platforms might also support symbol files that are bundles and know how to extract the right symbol file given a bundle.
[in] | target | The target in which we are trying to resolve the symbol file. The target has a list of modules that we might be able to use in order to help find the right symbol file. If the "m_file" or "m_platform_file" entries in the sym_spec are filled in, then we might be able to locate a module in the target, extract its UUID and locate a symbol file. If just the "m_uuid" is specified, then we might be able to find the module in the target that matches that UUID and pair the symbol file along with it. If just "m_symbol_file" is specified, we can use a variety of tricks to locate the symbols in an SDK, PDK, or other development kit location. |
[in] | sym_spec | A module spec that describes some information about the symbol file we are trying to resolve. The ModuleSpec might contain the following: m_file - A full or partial path to an executable from the target (might be empty). m_platform_file - Another executable hint that contains the path to the file as known on the local/remote platform. m_symbol_file - A full or partial path to a symbol file or symbol bundle that should be used when trying to resolve the symbol file. m_arch - The architecture we are looking for when resolving the symbol file. m_uuid - The UUID of the executable and symbol file. This can often be used to match up an executable with a symbol file, or resolve an symbol file in a symbol file bundle. |
[out] | sym_file | The resolved symbol file spec if the returned error indicates success. |
Reimplemented from lldb_private::Platform.
Definition at line 318 of file PlatformDarwin.cpp.
References lldb_private::PluginManager::FindSymbolFileInBundle(), lldb_private::ModuleSpec::GetArchitecturePtr(), lldb_private::ModuleSpec::GetSymbolFileSpec(), lldb_private::ModuleSpec::GetUUIDPtr(), and lldb_private::FileSystem::Instance().
|
overridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 642 of file PlatformDarwin.cpp.
References lldb_private::Target::CreateBreakpoint(), lldb::eLanguageTypeUnknown, lldb_private::eLazyBoolNo, and lldb_private::FileSpecList::EmplaceBack().
|
inlineoverridevirtual |
Reimplemented from lldb_private::Platform.
Definition at line 104 of file PlatformDarwin.h.
|
static |
Definition at line 96 of file PlatformDarwin.cpp.
References CreateInstance(), g_initialize_count, lldb_private::Platform::Terminate(), and lldb_private::PluginManager::UnregisterPlugin().
Referenced by lldb_private::PlatformAppleSimulator::Terminate(), lldb_private::PlatformMacOSX::Terminate(), lldb_private::PlatformRemoteAppleBridge::Terminate(), lldb_private::PlatformRemoteAppleTV::Terminate(), lldb_private::PlatformRemoteAppleWatch::Terminate(), lldb_private::PlatformRemoteAppleXR::Terminate(), lldb_private::PlatformRemoteiOS::Terminate(), and lldb_private::PlatformRemoteMacOSX::Terminate().
void PlatformDarwin::x86GetSupportedArchitectures | ( | std::vector< ArchSpec > & | archs | ) |
Definition at line 480 of file PlatformDarwin.cpp.
References lldb_private::ArchSpec::eCore_x86_64_x86_64h, lldb_private::ArchSpec::GetCore(), and lldb_private::ArchSpec::IsExactMatch().
Referenced by lldb_private::PlatformMacOSX::GetSupportedArchitectures().
|
protected |
Definition at line 203 of file PlatformDarwin.h.
|
protected |
Definition at line 204 of file PlatformDarwin.h.
|
protected |
Definition at line 205 of file PlatformDarwin.h.