|
LLVM 22.0.0git
|
Creates and manages DebugObjects for JITLink artifacts. More...
#include "llvm/ExecutionEngine/Orc/Debugging/ELFDebugObjectPlugin.h"
Public Member Functions | |
| ELFDebugObjectPlugin (ExecutionSession &ES, bool RequireDebugSections, bool AutoRegisterCode, Error &Err) | |
| Create the plugin to submit DebugObjects for JITLink artifacts. | |
| ~ELFDebugObjectPlugin () override | |
| void | notifyMaterializing (MaterializationResponsibility &MR, jitlink::LinkGraph &G, jitlink::JITLinkContext &Ctx, MemoryBufferRef InputObject) 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 |
Creates and manages DebugObjects for JITLink artifacts.
DebugObjects are created when linking for a MaterializationResponsibility starts. They are pending as long as materialization is in progress.
There can only be one pending DebugObject per MaterializationResponsibility. If materialization fails, pending DebugObjects are discarded.
Once executable code for the MaterializationResponsibility is emitted, the corresponding DebugObject is finalized to target memory and the provided DebugObjectRegistrar is notified. Ownership of DebugObjects remains with the plugin.
Definition at line 49 of file ELFDebugObjectPlugin.h.
| llvm::orc::ELFDebugObjectPlugin::ELFDebugObjectPlugin | ( | ExecutionSession & | ES, |
| bool | RequireDebugSections, | ||
| bool | AutoRegisterCode, | ||
| Error & | Err ) |
Create the plugin to submit DebugObjects for JITLink artifacts.
For all options the recommended setting is true.
RequireDebugSections: Submit debug objects to the executor only if they contain actual debug info. Turning this off may allow minimal debugging based on raw symbol names. Note that this may cause significant memory and transport overhead for objects built with a release configuration.
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. When turning this off, the user has to issue the call to __jit_debug_register_code() on the executor side manually.
Definition at line 409 of file ELFDebugObjectPlugin.cpp.
References _, ELFDebugObjectPlugin(), and llvm::orc::rt::RegisterJITLoaderGDBAllocActionName.
Referenced by ELFDebugObjectPlugin().
|
overridedefault |
|
override |
Definition at line 445 of file ELFDebugObjectPlugin.cpp.
References llvm::orc::DebugObject::awaitTargetMem(), llvm::cantFail(), llvm::orc::DebugObject::failMaterialization(), llvm::orc::DebugObject::finalizeAsync(), G, llvm::orc::DebugObject::hasFlags(), llvm::jitlink::PassConfiguration::PostAllocationPasses, llvm::jitlink::PassConfiguration::PostFixupPasses, llvm::jitlink::PassConfiguration::PreFixupPasses, llvm::orc::ReportFinalSectionLoadAddresses, llvm::orc::DebugObject::reportSectionTargetMemoryRange(), llvm::orc::DebugObject::reportTargetMem(), llvm::jitlink::LinkGraph::sections(), llvm::Error::success(), llvm::Expected< T >::takeError(), and llvm::orc::MaterializationResponsibility::withResourceKeyDo().
Referenced by ~ELFDebugObjectPlugin().
|
override |
Definition at line 509 of file ELFDebugObjectPlugin.cpp.
References llvm::Error::success().
Referenced by ~ELFDebugObjectPlugin().
|
override |
Definition at line 422 of file ELFDebugObjectPlugin.cpp.
References assert(), llvm::orc::createDebugObjectFromBuffer(), llvm::dbgs(), G, llvm::orc::HasDebugSections, and LLVM_DEBUG.
Referenced by ~ELFDebugObjectPlugin().
|
override |
Definition at line 531 of file ELFDebugObjectPlugin.cpp.
References llvm::InnerAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs... >::Key, and llvm::Error::success().
Referenced by ~ELFDebugObjectPlugin().
|
override |
Definition at line 515 of file ELFDebugObjectPlugin.cpp.
Referenced by ~ELFDebugObjectPlugin().