|
LLVM 24.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, 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, | ||
| 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.
Definition at line 194 of file ELFDebugObjectPlugin.cpp.
References _, and llvm::orc::rt::RegisterJITLoaderGDBAllocActionName.
|
overridedefault |
|
override |
Definition at line 270 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 386 of file ELFDebugObjectPlugin.cpp.
References notifyFailed(), and llvm::Error::success().
Referenced by notifyFailed(), and ~ELFDebugObjectPlugin().
|
override |
Definition at line 217 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 410 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 394 of file ELFDebugObjectPlugin.cpp.
References notifyTransferringResources().
Referenced by notifyTransferringResources(), and ~ELFDebugObjectPlugin().