LLVM 20.0.0git
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
llvm::orc::ELFDebugObject Class Reference

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...

Inheritance diagram for llvm::orc::ELFDebugObject:
Inheritance graph
[legend]

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 OnFinalize)
 
virtual ~DebugObject ()
 
virtual void reportSectionTargetMemoryRange (StringRef Name, SectionRange TargetMem)
 

Static Public Member Functions

static Expected< std::unique_ptr< DebugObject > > Create (MemoryBufferRef Buffer, JITLinkContext &Ctx, ExecutionSession &ES)
 

Protected Member Functions

Expected< SimpleSegmentAllocfinalizeWorkingMemory () override
 
template<typename ELFT >
Error recordSection (StringRef Name, std::unique_ptr< ELFDebugObjectSection< ELFT > > Section)
 
DebugObjectSectiongetSection (StringRef Name)
 
virtual Expected< SimpleSegmentAllocfinalizeWorkingMemory ()=0
 

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
JITLinkMemoryManagerMemMgr
 
const JITLinkDylibJD = nullptr
 

Detailed Description

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 188 of file DebugObjectManagerPlugin.cpp.

Member Function Documentation

◆ Create()

Expected< std::unique_ptr< DebugObject > > llvm::orc::ELFDebugObject::Create ( MemoryBufferRef  Buffer,
JITLinkContext Ctx,
ExecutionSession ES 
)
static

◆ finalizeWorkingMemory()

Expected< SimpleSegmentAlloc > llvm::orc::ELFDebugObject::finalizeWorkingMemory ( )
overrideprotectedvirtual

◆ getBuffer()

StringRef llvm::orc::ELFDebugObject::getBuffer ( ) const
inline

Definition at line 196 of file DebugObjectManagerPlugin.cpp.

References llvm::MemoryBufferRef::getBuffer().

◆ getSection()

DebugObjectSection * llvm::orc::ELFDebugObject::getSection ( StringRef  Name)
protected

Definition at line 368 of file DebugObjectManagerPlugin.cpp.

References Name.

Referenced by reportSectionTargetMemoryRange().

◆ recordSection()

template<typename ELFT >
Error llvm::orc::ELFDebugObject::recordSection ( StringRef  Name,
std::unique_ptr< ELFDebugObjectSection< ELFT > >  Section 
)
protected

◆ reportSectionTargetMemoryRange()

void llvm::orc::ELFDebugObject::reportSectionTargetMemoryRange ( StringRef  Name,
SectionRange  TargetMem 
)
overridevirtual

Reimplemented from llvm::orc::DebugObject.

Definition at line 349 of file DebugObjectManagerPlugin.cpp.

References getSection(), and Name.


The documentation for this class was generated from the following file: