9#ifndef LLDB_SOURCE_PLUGINS_DYNAMICLOADER_FREEBSD_KERNEL_DYNAMICLOADERFREEBSDKERNEL_H
10#define LLDB_SOURCE_PLUGINS_DYNAMICLOADER_FREEBSD_KERNEL_DYNAMICLOADERFREEBSDKERNEL_H
20#include "llvm/BinaryFormat/ELF.h"
52 bool stop_others)
override;
127 void Clear(
bool clear_process);
147 bool *read_error =
nullptr);
153 bool *read_error =
nullptr);
static bool is_kernel(Module *module)
bool LoadImageUsingFileAddress(lldb_private::Process *process)
lldb::addr_t GetLoadAddress() const
lldb::addr_t m_load_address
std::string GetName() const
bool ReadMemoryModule(lldb_private::Process *process)
void SetStopID(uint32_t stop_id)
void SetLoadAddress(lldb::addr_t load_address)
bool LoadImageUsingMemoryModule(lldb_private::Process *process)
void SetModule(lldb::ModuleSP module)
void SetUUID(const lldb_private::UUID uuid)
void SetPath(const char *path)
std::string GetPath() const
lldb_private::UUID GetUUID() const
lldb::ModuleSP GetModule()
lldb::ModuleSP m_module_sp
lldb::ModuleSP m_memory_module_sp
lldb_private::UUID m_uuid
std::vector< KModImageInfo > collection_type
void SetName(const char *name)
void SetIsKernel(bool is_kernel)
void DidAttach() override
Called after attaching a process.
KModImageInfo::collection_type m_linker_files_list
llvm::StringRef GetPluginName() override
static llvm::StringRef GetPluginNameStatic()
bool ReadKmodsListHeader()
lldb_private::Address m_linker_file_list_struct_addr
lldb_private::Process * m_process
void PrivateInitialize(lldb_private::Process *process)
lldb_private::Address m_linker_file_head_addr
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 ParseKmods(lldb_private::Address linker_files_head_address)
static void DebuggerInit(lldb_private::Debugger &debugger)
void SetNotificationBreakPoint()
static lldb::addr_t FindFreeBSDKernel(lldb_private::Process *process)
void Clear(bool clear_process)
lldb_private::Status CanLoadImage() override
Ask if it is ok to try and load or unload an shared library (image).
~DynamicLoaderFreeBSDKernel() override
std::unordered_map< std::string, lldb_private::UUID > m_kld_name_to_uuid
void DidLaunch() override
Called after launching a process.
const DynamicLoaderFreeBSDKernel & operator=(const DynamicLoaderFreeBSDKernel &)=delete
lldb::addr_t m_kernel_load_address
static lldb::addr_t FindKernelAtLoadAddress(lldb_private::Process *process)
KModImageInfo m_kernel_image_info
DynamicLoaderFreeBSDKernel(const DynamicLoaderFreeBSDKernel &)=delete
static llvm::StringRef GetPluginDescriptionStatic()
static lldb_private::UUID CheckForKernelImageAtAddress(lldb_private::Process *process, lldb::addr_t address, bool *read_error=nullptr)
static lldb_private::DynamicLoader * CreateInstance(lldb_private::Process *process, bool force)
static bool ReadELFHeader(lldb_private::Process *process, lldb::addr_t address, llvm::ELF::Elf32_Ehdr &header, bool *read_error=nullptr)
std::recursive_mutex m_mutex
A section + offset based address 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.
#define LLDB_INVALID_ADDRESS
std::shared_ptr< lldb_private::ThreadPlan > ThreadPlanSP
std::shared_ptr< lldb_private::Module > ModuleSP