|
LLVM 22.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 186 of file ELFDebugObjectPlugin.cpp.
References _, and llvm::orc::rt::RegisterJITLoaderGDBAllocActionName.
|
overridedefault |
|
override |
Definition at line 246 of file ELFDebugObjectPlugin.cpp.
References llvm::Alloc, assert(), llvm::orc::DebugObject::awaitTargetMem(), llvm::cantFail(), llvm::dbgs(), llvm::orc::DebugObject::failMaterialization(), G, llvm::jitlink::SectionRange::getStart(), llvm::orc::DebugObject::getTargetAlloc(), 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 341 of file ELFDebugObjectPlugin.cpp.
References notifyFailed(), and llvm::Error::success().
Referenced by notifyFailed(), and ~ELFDebugObjectPlugin().
|
override |
Definition at line 210 of file ELFDebugObjectPlugin.cpp.
References llvm::Alloc, llvm::jitlink::SimpleSegmentAlloc::Create(), llvm::Triple::ELF, G, llvm::MemoryBufferRef::getBufferSize(), llvm::sys::Process::getPageSizeEstimate(), and Size.
Referenced by ~ELFDebugObjectPlugin().
|
override |
Definition at line 363 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 347 of file ELFDebugObjectPlugin.cpp.
References notifyTransferringResources().
Referenced by notifyTransferringResources(), and ~ELFDebugObjectPlugin().