9#ifndef LLDB_SOURCE_PLUGINS_DYNAMICLOADER_MACOSX_DYLD_DYNAMICLOADERDARWIN_H
10#define LLDB_SOURCE_PLUGINS_DYNAMICLOADER_MACOSX_DYLD_DYNAMICLOADERDARWIN_H
23#include "llvm/TargetParser/Triple.h"
42 bool stop_others)
override;
69 void Clear(
bool clear_process);
120 llvm::Triple::OSType
os_type = llvm::Triple::OSType::UnknownOS;
123 llvm::Triple::EnvironmentType::UnknownEnvironment;
129 void Clear(
bool load_cmd_data_only) {
130 if (!load_cmd_data_only) {
139 os_type = llvm::Triple::OSType::UnknownOS;
140 os_env = llvm::Triple::EnvironmentType::UnknownEnvironment;
156 if (
header.cputype & llvm::MachO::CPU_ARCH_ABI64)
181 bool *did_create_ptr);
183 void UnloadImages(
const std::vector<lldb::addr_t> &solib_addresses);
210 std::vector<std::pair<ImageInfo, lldb::ModuleSP>>
217 std::vector<std::pair<ImageInfo, lldb::ModuleSP>> &images);
228 std::vector<std::pair<ImageInfo, lldb::ModuleSP>> &images);
A section + offset based address class.
An architecture specification class.
A uniqued constant string class.
A class to manage flag bits.
lldb_private::ConstString name
bool operator==(const Segment &rhs) const
void PutToLog(lldb_private::Log *log, lldb::addr_t slide) const
lldb::addr_t GetThreadLocalData(const lldb::ModuleSP module, const lldb::ThreadSP thread, lldb::addr_t tls_file_addr) override
Retrieves the per-module TLS block for a given thread.
bool UpdateDYLDImageInfoFromNewImageInfo(ImageInfo &image_info)
const DynamicLoaderDarwin & operator=(const DynamicLoaderDarwin &)=delete
std::map< lldb::user_id_t, PthreadKeyToTLSMap > ThreadIDToTLSMap
lldb::ModuleSP GetDYLDModule()
bool AlwaysRelyOnEHUnwindInfo(lldb_private::SymbolContext &sym_ctx) override
Ask if the eh_frame information for the given SymbolContext should be relied on even when it's the fi...
virtual bool NeedToDoInitialImageFetch()=0
ImageInfo::collection m_dyld_image_infos
DynamicLoaderDarwin(const DynamicLoaderDarwin &)=delete
virtual void DoInitialImageFetch()=0
void AddExecutableModuleIfInImageInfos(ImageInfo::collection &image_infos)
std::map< uint64_t, lldb::addr_t > PthreadKeyToTLSMap
std::recursive_mutex m_mutex
uint32_t m_dyld_image_infos_stop_id
std::recursive_mutex & GetMutex() const
void PrivateProcessStateChanged(lldb_private::Process *process, lldb::StateType state)
void DidLaunch() override
Called after attaching a process.
lldb::ModuleWP m_dyld_module_wp
static void CreateSettings(lldb_private::Debugger &debugger)
void FindEquivalentSymbols(lldb_private::Symbol *original_symbol, lldb_private::ModuleList &module_list, lldb_private::SymbolContextList &equivalent_symbols) override
Some dynamic loaders provide features where there are a group of symbols "equivalent to" a given symb...
lldb::ModuleSP FindTargetModuleForImageInfo(const ImageInfo &image_info, bool can_create, bool *did_create_ptr)
virtual bool SetNotificationBreakpoint()=0
bool AddModulesUsingImageInfos(ImageInfo::collection &image_infos)
void DidAttach() override
Called after attaching a process.
lldb::ThreadPlanSP GetStepThroughTrampolinePlan(lldb_private::Thread &thread, bool stop_others) override
Provides a plan to step through the dynamic loader trampoline for the current state of thread.
std::vector< std::pair< ImageInfo, lldb::ModuleSP > > PreloadModulesFromImageInfos(const ImageInfo::collection &image_infos)
lldb::ModuleWP m_libpthread_module_wp
bool JSONImageInformationIntoImageInfo(lldb_private::StructuredData::ObjectSP image_details, ImageInfo::collection &image_infos)
bool UpdateImageLoadAddress(lldb_private::Module *module, ImageInfo &info)
std::optional< lldb_private::Address > GetStartAddress() override
Return the start address in the dynamic loader module.
void UpdateSpecialBinariesFromPreloadedModules(std::vector< std::pair< ImageInfo, lldb::ModuleSP > > &images)
void PrivateInitialize(lldb_private::Process *process)
~DynamicLoaderDarwin() override
lldb_private::Address GetPthreadSetSpecificAddress()
void Clear(bool clear_process)
virtual void ClearNotificationBreakpoint()=0
bool AddModulesUsingPreloadedModules(std::vector< std::pair< ImageInfo, lldb::ModuleSP > > &images)
void SetDYLDModule(lldb::ModuleSP &dyld_module_sp)
ThreadIDToTLSMap m_tid_to_tls_map
static bool UseDYLDSPI(lldb_private::Process *process)
lldb_private::Address m_pthread_getspecific_addr
bool UnloadModuleSections(lldb_private::Module *module, ImageInfo &info)
lldb::ModuleSP GetPThreadLibraryModule()
void UnloadImages(const std::vector< lldb::addr_t > &solib_addresses)
virtual bool DidSetNotificationBreakpoint()=0
A plug-in interface definition class for dynamic loaders.
void Clear()
Clears the object state.
A collection class for Module objects.
A class that describes an executable image and its associated object and symbol files.
A plug-in interface definition class for debugging a process.
std::shared_ptr< Object > ObjectSP
Defines a list of symbol context objects.
Defines a symbol context baton that can be handed other debug core functions.
#define LLDB_INVALID_ADDRESS
A class that represents a running process on the host machine.
std::shared_ptr< lldb_private::ThreadPlan > ThreadPlanSP
std::weak_ptr< lldb_private::Module > ModuleWP
std::shared_ptr< lldb_private::Thread > ThreadSP
StateType
Process and Thread States.
std::shared_ptr< lldb_private::Module > ModuleSP
lldb_private::ArchSpec GetArchitecture() const
collection::iterator iterator
std::vector< ImageInfo > collection
lldb_private::UUID uuid
UUID for this dylib if it has one, else all zeros.
lldb::addr_t address
Address of mach header for this dylib.
std::string min_version_os_sdk
LC_VERSION_MIN_... SDK.
lldb::addr_t slide
The amount to slide all segments by if there is a global slide.
bool operator==(const ImageInfo &rhs) const
llvm::MachO::mach_header header
The mach header for this image.
llvm::Triple::OSType os_type
LC_VERSION_MIN_... load command os type.
std::vector< Segment > segments
All segment vmaddr and vmsize pairs for this executable (from memory of inferior).
const Segment * FindSegment(lldb_private::ConstString name) const
lldb_private::FileSpec file_spec
Resolved path for this dylib.
void Clear(bool load_cmd_data_only)
collection::const_iterator const_iterator
llvm::Triple::EnvironmentType os_env
LC_VERSION_MIN_... load command os environment.
uint32_t load_stop_id
The process stop ID that the sections for this image were loaded.
void PutToLog(lldb_private::Log *log) const
uint32_t GetAddressByteSize()