Go to the documentation of this file.
9 #ifndef LLDB_SOURCE_PLUGINS_DYNAMICLOADER_POSIX_DYLD_DYNAMICLOADERPOSIXDYLD_H
10 #define LLDB_SOURCE_PLUGINS_DYNAMICLOADER_POSIX_DYLD_DYNAMICLOADERPOSIXDYLD_H
47 bool stop_others)
override;
52 const lldb::ThreadSP thread,
61 bool base_addr_is_offset)
override;
91 std::map<lldb::ModuleWP, lldb::addr_t, std::owner_less<lldb::ModuleWP>>
121 bool base_addr_is_offset)
override;
176 #endif // LLDB_SOURCE_PLUGINS_DYNAMICLOADER_POSIX_DYLD_DYNAMICLOADERPOSIXDYLD_H
void DidLaunch() override
Called after launching a process.
General Outline: When we hit a breakpoint we need to package up whatever information is needed to eva...
bool m_initial_modules_added
Indicates whether the initial set of modules was reported added.
lldb::addr_t GetEntryPoint()
Computes a value for m_entry_point returning the computed address on success and LLDB_INVALID_ADDRESS...
lldb::addr_t m_load_offset
Virtual load address of the inferior process.
void RefreshModules()
Helper method for RendezvousBreakpointHit.
std::map< lldb::ModuleWP, lldb::addr_t, std::owner_less< lldb::ModuleWP > > m_loaded_modules
Loaded module list. (link map for each module)
lldb::addr_t m_interpreter_base
Contains AT_BASE, which means a dynamic loader has been mapped to the address space.
const DynamicLoaderPOSIXDYLD & operator=(const DynamicLoaderPOSIXDYLD &)=delete
lldb::addr_t m_vdso_base
Contains AT_SYSINFO_EHDR, which means a vDSO has been mapped to the address space.
static bool EntryBreakpointHit(void *baton, lldb_private::StoppointCallbackContext *context, lldb::user_id_t break_id, lldb::user_id_t break_loc_id)
Callback routine invoked when we hit the breakpoint on process entry.
DynamicLoaderPOSIXDYLD(lldb_private::Process *process)
static llvm::StringRef GetPluginNameStatic()
static bool RendezvousBreakpointHit(void *baton, lldb_private::StoppointCallbackContext *context, lldb::user_id_t break_id, lldb::user_id_t break_loc_id)
Callback routine which updates the current list of loaded modules based on the information supplied b...
lldb::addr_t ComputeLoadOffset()
Computes a value for m_load_offset returning the computed address on success and LLDB_INVALID_ADDRESS...
void ResolveExecutableModule(lldb::ModuleSP &module_sp)
Loads Module from inferior process.
llvm::StringRef GetPluginName() override
bool SetRendezvousBreakpoint()
If possible sets a breakpoint on a function called by the runtime linker each time a module is loaded...
static llvm::StringRef GetPluginDescriptionStatic()
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.
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...
void EvalSpecialModulesStatus()
Evaluate if Aux vectors contain vDSO and LD information in case they do, read and assign the address ...
std::unique_ptr< AuxVector > m_auxv
Auxiliary vector of the inferior process.
lldb::ModuleSP LoadModuleAtAddress(const lldb_private::FileSpec &file, lldb::addr_t link_map_addr, lldb::addr_t base_addr, bool base_addr_is_offset) override
Locates or creates a module given by file and updates/loads the resulting module at the virtual base ...
void UnloadSections(const lldb::ModuleSP module) override
Removes the loaded sections from the target in module.
lldb::addr_t m_entry_point
Virtual entry address of the inferior process.
static lldb_private::DynamicLoader * CreateInstance(lldb_private::Process *process, bool force)
DYLDRendezvous m_rendezvous
Runtime linker rendezvous structure.
void UpdateLoadedSections(lldb::ModuleSP module, lldb::addr_t link_map_addr, lldb::addr_t base_addr, bool base_addr_is_offset) override
Updates the load address of every allocatable section in module.
lldb_private::Status CanLoadImage() override
Ask if it is ok to try and load or unload an shared library (image).
lldb::ModuleSP LoadInterpreterModule()
virtual void LoadAllCurrentModules()
Helper for the entry breakpoint callback.
~DynamicLoaderPOSIXDYLD() override
lldb::break_id_t m_dyld_bid
Rendezvous breakpoint.
void ProbeEntry()
Resolves the entry point for the current inferior process and sets a breakpoint at that address.
void DidAttach() override
Called after attaching a process.
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.
std::weak_ptr< lldb_private::Module > m_interpreter_module
Contains the pointer to the interpret module, if loaded.