|
LLVM 23.0.0git
|
Debugger support for ELF platforms with the GDB JIT Interface. More...
#include "llvm/ExecutionEngine/Orc/Debugging/ELFDebugObjectPlugin.h"
Public Member Functions | |
| ELFDebugObjectPlugin (ExecutionSession &ES, bool RequireDebugSections, bool AutoRegisterCode, Error &Err) | |
| Create the plugin for the given session and set additional options. | |
| ~ELFDebugObjectPlugin () override | |
| void | notifyMaterializing (MaterializationResponsibility &MR, jitlink::LinkGraph &G, jitlink::JITLinkContext &Ctx, MemoryBufferRef InputObj) override |
| Error | notifyFailed (MaterializationResponsibility &MR) override |
| Error | notifyRemovingResources (JITDylib &JD, ResourceKey K) override |
| void | notifyTransferringResources (JITDylib &JD, ResourceKey DstKey, ResourceKey SrcKey) override |
| void | modifyPassConfig (MaterializationResponsibility &MR, jitlink::LinkGraph &LG, jitlink::PassConfiguration &PassConfig) override |
Debugger support for ELF platforms with the GDB JIT Interface.
The plugin emits and manages a separate debug object allocation in addition to the LinkGraph's own allocation and it notifies the debugger when necessary.
Definition at line 39 of file ELFDebugObjectPlugin.h.
| llvm::orc::ELFDebugObjectPlugin::ELFDebugObjectPlugin | ( | ExecutionSession & | ES, |
| bool | RequireDebugSections, | ||
| bool | AutoRegisterCode, | ||
| Error & | Err ) |
Create the plugin for the given session and set additional options.
RequireDebugSections: Emit debug objects only if the LinkGraph contains debug info. Turning this off allows minimal debugging based on raw symbol names, but it comes with significant overhead for release configurations.
AutoRegisterCode: Notify the debugger for each new debug object. This is a good default mode, but it may cause significant overhead when adding many modules in sequence. Otherwise the user must call __jit_debug_register_code() in the debug session manually.
Definition at line 194 of file ELFDebugObjectPlugin.cpp.
References _, and llvm::orc::rt::RegisterJITLoaderGDBAllocActionName.
|
overridedefault |
|
override |
Definition at line 271 of file ELFDebugObjectPlugin.cpp.
References llvm::Alloc, assert(), llvm::orc::DebugObject::awaitTargetMem(), llvm::cantFail(), llvm::orc::DebugObject::collectTargetAlloc(), llvm::dbgs(), llvm::orc::DebugObject::failMaterialization(), G, llvm::jitlink::SectionRange::getStart(), llvm::orc::DebugObject::hasPendingTargetMem(), isDwarfSection(), LLVM_DEBUG, modifyPassConfig(), llvm::jitlink::PassConfiguration::PostAllocationPasses, llvm::jitlink::PassConfiguration::PostFixupPasses, llvm::orc::Read, llvm::orc::DebugObject::reportTargetMem(), llvm::Error::success(), llvm::Expected< T >::takeError(), llvm::orc::DebugObject::trackFinalizedAlloc(), llvm::orc::DebugObject::visitSections(), and llvm::orc::MaterializationResponsibility::withResourceKeyDo().
Referenced by modifyPassConfig(), and ~ELFDebugObjectPlugin().
|
override |
Definition at line 388 of file ELFDebugObjectPlugin.cpp.
References notifyFailed(), and llvm::Error::success().
Referenced by notifyFailed(), and ~ELFDebugObjectPlugin().
|
override |
Definition at line 218 of file ELFDebugObjectPlugin.cpp.
References llvm::Alloc, llvm::jitlink::SimpleSegmentAlloc::Create(), llvm::createStringError(), llvm::Triple::ELF, llvm::ELF::ELFCLASS32, llvm::ELF::ELFCLASS64, llvm::ELF::ELFDATA2LSB, llvm::ELF::ELFDATA2MSB, G, llvm::MemoryBufferRef::getBuffer(), llvm::MemoryBufferRef::getBufferSize(), llvm::object::getElfArchType(), llvm::sys::Process::getPageSizeEstimate(), llvm::object::invalid_file_type, and Size.
Referenced by ~ELFDebugObjectPlugin().
|
override |
Definition at line 412 of file ELFDebugObjectPlugin.cpp.
References llvm::InnerAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs... >::Key, notifyRemovingResources(), and llvm::Error::success().
Referenced by notifyRemovingResources(), and ~ELFDebugObjectPlugin().
|
override |
Definition at line 396 of file ELFDebugObjectPlugin.cpp.
References notifyTransferringResources().
Referenced by notifyTransferringResources(), and ~ELFDebugObjectPlugin().