|
LLVM 22.0.0git
|
The current implementation of ELFDebugObject replicates the approach used in RuntimeDyld: It patches executable and data section headers in the given object buffer with load-addresses of their corresponding sections in target memory. More...
Public Member Functions | |
| void | reportSectionTargetMemoryRange (StringRef Name, SectionRange TargetMem) override |
| StringRef | getBuffer () const |
| Public Member Functions inherited from llvm::orc::DebugObject | |
| DebugObject (JITLinkMemoryManager &MemMgr, const JITLinkDylib *JD, ExecutionSession &ES) | |
| bool | hasFlags (DebugObjectFlags F) const |
| void | setFlags (DebugObjectFlags F) |
| void | clearFlags (DebugObjectFlags F) |
| void | finalizeAsync (FinalizeContinuation OnAsync) |
| void | failMaterialization (Error Err) |
| void | reportTargetMem (ExecutorAddrRange TargetMem) |
| Expected< ExecutorAddrRange > | awaitTargetMem () |
| virtual | ~DebugObject () |
Static Public Member Functions | |
| static Expected< std::unique_ptr< DebugObject > > | Create (MemoryBufferRef Buffer, JITLinkContext &Ctx, ExecutionSession &ES) |
Protected Member Functions | |
| Expected< SimpleSegmentAlloc > | finalizeWorkingMemory () override |
| template<typename ELFT> | |
| Error | recordSection (StringRef Name, std::unique_ptr< ELFDebugObjectSection< ELFT > > Section) |
| DebugObjectSection * | getSection (StringRef Name) |
Additional Inherited Members | |
| Public Types inherited from llvm::orc::DebugObject | |
| using | FinalizeContinuation = std::function<void(Expected<ExecutorAddrRange>)> |
| Protected Types inherited from llvm::orc::DebugObject | |
| using | InFlightAlloc = JITLinkMemoryManager::InFlightAlloc |
| using | FinalizedAlloc = JITLinkMemoryManager::FinalizedAlloc |
| Protected Attributes inherited from llvm::orc::DebugObject | |
| JITLinkMemoryManager & | MemMgr |
| const JITLinkDylib * | JD = nullptr |
| ExecutionSession & | ES |
| std::promise< MSVCPExpected< ExecutorAddrRange > > | FinalizePromise |
| std::future< MSVCPExpected< ExecutorAddrRange > > | FinalizeFuture |
The current implementation of ELFDebugObject replicates the approach used in RuntimeDyld: It patches executable and data section headers in the given object buffer with load-addresses of their corresponding sections in target memory.
Definition at line 206 of file ELFDebugObjectPlugin.cpp.
|
static |
Definition at line 315 of file ELFDebugObjectPlugin.cpp.
References llvm::ELF::ELFCLASS32, llvm::ELF::ELFCLASS64, llvm::ELF::ELFDATA2LSB, llvm::ELF::ELFDATA2MSB, llvm::orc::DebugObject::ES, and llvm::object::getElfArchType().
Referenced by llvm::orc::createDebugObjectFromBuffer().
|
overrideprotectedvirtual |
Implements llvm::orc::DebugObject.
Definition at line 341 of file ELFDebugObjectPlugin.cpp.
References llvm::jitlink::SimpleSegmentAlloc::Create(), llvm::dbgs(), llvm::orc::DebugObject::ES, llvm::sys::Process::getPageSizeEstimate(), llvm::orc::DebugObject::JD, LLVM_DEBUG, llvm::orc::DebugObject::MemMgr, PageSize, and Size.
|
inline |
Definition at line 214 of file ELFDebugObjectPlugin.cpp.
|
protected |
Definition at line 387 of file ELFDebugObjectPlugin.cpp.
References getSection().
Referenced by getSection().
|
protected |
Definition at line 375 of file ELFDebugObjectPlugin.cpp.
References llvm::dbgs(), LLVM_DEBUG, recordSection(), and llvm::Error::success().
Referenced by recordSection().
|
overridevirtual |
Reimplemented from llvm::orc::DebugObject.
Definition at line 368 of file ELFDebugObjectPlugin.cpp.
References llvm::object::getSection(), and reportSectionTargetMemoryRange().
Referenced by reportSectionTargetMemoryRange().