9#ifndef LLDB_SOURCE_PLUGINS_DYNAMICLOADER_DARWIN_KERNEL_DYNAMICLOADERDARWINKERNEL_H
10#define LLDB_SOURCE_PLUGINS_DYNAMICLOADER_DARWIN_KERNEL_DYNAMICLOADERDARWINKERNEL_H
57 bool stop_others)
override;
74 void Clear(
bool clear_process);
257 uint32_t infos_count,
258 bool update_executable);
261 uint32_t image_infos_count,
277 bool *read_error =
nullptr);
282 bool *read_error =
nullptr);
static bool is_kernel(Module *module)
uint32_t m_load_process_stop_id
void PutToLog(lldb_private::Log *log) const
lldb::ModuleSP m_memory_module_sp
bool operator==(const KextImageInfo &rhs) const
void SetLoadAddress(lldb::addr_t load_addr)
uint32_t GetAddressByteSize()
bool ReadMemoryModule(lldb_private::Process *process)
void SetProcessStopId(uint32_t stop_id)
lldb_private::ArchSpec GetArchitecture() const
lldb::ModuleSP GetModule()
void SetUUID(const lldb_private::UUID &uuid)
void SetName(const char *)
void SetModule(lldb::ModuleSP module)
bool LoadImageUsingMemoryModule(lldb_private::Process *process, lldb_private::Progress *progress=nullptr)
bool LoadImageAtFileAddress(lldb_private::Process *process)
void SetSize(uint64_t size)
lldb::addr_t GetLoadAddress() const
collection::const_iterator const_iterator
lldb_private::UUID m_uuid
lldb::addr_t m_load_address
lldb::ByteOrder GetByteOrder()
std::string GetName() const
lldb::ModuleSP m_module_sp
void SetIsKernel(bool is_kernel)
uint32_t GetProcessStopId() const
lldb_private::UUID GetUUID() const
collection::iterator iterator
std::vector< KextImageInfo > collection
const DynamicLoaderDarwinKernel & operator=(const DynamicLoaderDarwinKernel &)=delete
void DidLaunch() override
Called after attaching a process.
lldb_private::Address m_kext_summary_header_ptr_addr
void UnregisterNotificationCallbacks()
void PrivateProcessStateChanged(lldb_private::Process *process, lldb::StateType state)
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.
static lldb_private::DynamicLoader * CreateInstance(lldb_private::Process *process, bool force)
lldb_private::Address m_kext_summary_header_addr
static void DebuggerInitialize(lldb_private::Debugger &debugger)
static bool ReadMachHeader(lldb::addr_t addr, lldb_private::Process *process, llvm::MachO::mach_header &mh, bool *read_error=nullptr)
uint32_t GetAddrByteSize()
void PutToLog(lldb_private::Log *log) const
static lldb::addr_t SearchForKernelViaExhaustiveSearch(lldb_private::Process *process)
lldb::user_id_t m_break_id
void UpdateImageInfosHeaderAndLoadCommands(KextImageInfo::collection &image_infos, uint32_t infos_count, bool update_executable)
static llvm::StringRef GetPluginDescriptionStatic()
lldb_private::Status CanLoadImage() override
Ask if it is ok to try and load or unload an shared library (image).
void DidAttach() override
Called after attaching a process.
~DynamicLoaderDarwinKernel() override
void RegisterNotificationCallbacks()
static lldb::addr_t SearchForKernelAtSameLoadAddr(lldb_private::Process *process)
static llvm::StringRef GetPluginNameStatic()
bool ReadAllKextSummaries()
llvm::StringRef GetPluginName() override
OSKextLoadedKextSummaryHeader m_kext_summary_header
void PrivateInitialize(lldb_private::Process *process)
static lldb_private::UUID CheckForKernelImageAtAddress(lldb::addr_t addr, lldb_private::Process *process, bool *read_error=nullptr)
static bool BreakpointHitCallback(void *baton, lldb_private::StoppointCallbackContext *context, lldb::user_id_t break_id, lldb::user_id_t break_loc_id)
void Clear(bool clear_process)
static lldb::ByteOrder GetByteOrderFromMagic(uint32_t magic)
bool BreakpointHit(lldb_private::StoppointCallbackContext *context, lldb::user_id_t break_id, lldb::user_id_t break_loc_id)
std::recursive_mutex m_mutex
static lldb::addr_t SearchForKernelNearPC(lldb_private::Process *process)
DynamicLoaderDarwinKernel(const DynamicLoaderDarwinKernel &)=delete
uint32_t ReadKextSummaries(const lldb_private::Address &kext_summary_addr, uint32_t image_infos_count, KextImageInfo::collection &image_infos)
static lldb::addr_t SearchForDarwinKernel(lldb_private::Process *process)
KextImageInfo::collection m_known_kexts
void SetNotificationBreakpointIfNeeded()
lldb::addr_t m_kernel_load_address
void LoadKernelModuleIfNeeded()
bool ReadKextSummaryHeader()
static lldb::addr_t SearchForKernelWithDebugHints(lldb_private::Process *process)
bool ParseKextSummaries(const lldb_private::Address &kext_summary_addr, uint32_t count)
@ KERNEL_MODULE_ENTRY_SIZE_VERSION_1
A section + offset based address class.
An architecture specification class.
A class to manage flag bits.
A plug-in interface definition class for dynamic loaders.
A plug-in interface definition class for debugging a process.
A Progress indicator helper class.
General Outline: When we hit a breakpoint we need to package up whatever information is needed to eva...
#define LLDB_INVALID_ADDRESS
std::shared_ptr< lldb_private::ThreadPlan > ThreadPlanSP
StateType
Process and Thread States.
ByteOrder
Byte ordering definitions.
std::shared_ptr< lldb_private::Module > ModuleSP