class ELFDebugObject

Declaration

class ELFDebugObject : public DebugObject { /* full declaration omitted */ };

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.

Declared at: llvm/lib/ExecutionEngine/Orc/DebugObjectManagerPlugin.cpp:194

Inherits from: DebugObject

Member Variables

private std::unique_ptr<WritableMemoryBuffer> Buffer
private StringMap<std::unique_ptr<DebugObjectSection>> Sections

Inherited from DebugObject:

protected MemMgr
protected JD = nullptr

Method Overview

  • private static std::unique_ptr<WritableMemoryBuffer> CopyBuffer(llvm::MemoryBufferRef Buffer, llvm::Error & Err)
  • public static Expected<std::unique_ptr<DebugObject>> Create(llvm::MemoryBufferRef Buffer, llvm::jitlink::JITLinkContext & Ctx, llvm::orc::ExecutionSession & ES)
  • private template <typename ELFT>static Expected<std::unique_ptr<ELFDebugObject>> CreateArchType(llvm::MemoryBufferRef Buffer, llvm::jitlink::JITLinkMemoryManager & MemMgr, const llvm::jitlink::JITLinkDylib * JD, llvm::orc::ExecutionSession & ES)
  • private ELFDebugObject(std::unique_ptr<WritableMemoryBuffer> Buffer, llvm::jitlink::JITLinkMemoryManager & MemMgr, const llvm::jitlink::JITLinkDylib * JD, llvm::orc::ExecutionSession & ES)
  • protected Expected<llvm::jitlink::SimpleSegmentAlloc> finalizeWorkingMemory()
  • public llvm::StringRef getBuffer() const
  • protected llvm::orc::DebugObjectSection * getSection(llvm::StringRef Name)
  • protected template <typename ELFT>llvm::Error recordSection(llvm::StringRef Name, std::unique_ptr<ELFDebugObjectSection<ELFT>> Section)
  • public void reportSectionTargetMemoryRange(llvm::StringRef Name, llvm::jitlink::SectionRange TargetMem)

Inherited from DebugObject:

Methods

static std::unique_ptr<WritableMemoryBuffer>
CopyBuffer(llvm::MemoryBufferRef Buffer,
           llvm::Error& Err)

Declared at: llvm/lib/ExecutionEngine/Orc/DebugObjectManagerPlugin.cpp:219

Parameters

llvm::MemoryBufferRef Buffer
llvm::Error& Err

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

Declared at: llvm/lib/ExecutionEngine/Orc/DebugObjectManagerPlugin.cpp:197

Parameters

llvm::MemoryBufferRef Buffer
llvm::jitlink::JITLinkContext& Ctx
llvm::orc::ExecutionSession& ES

template <typename ELFT>
static Expected<std::unique_ptr<ELFDebugObject>>
CreateArchType(
    llvm::MemoryBufferRef Buffer,
    llvm::jitlink::JITLinkMemoryManager& MemMgr,
    const llvm::jitlink::JITLinkDylib* JD,
    llvm::orc::ExecutionSession& ES)

Declared at: llvm/lib/ExecutionEngine/Orc/DebugObjectManagerPlugin.cpp:215

Templates

ELFT

Parameters

llvm::MemoryBufferRef Buffer
llvm::jitlink::JITLinkMemoryManager& MemMgr
const llvm::jitlink::JITLinkDylib* JD
llvm::orc::ExecutionSession& ES

ELFDebugObject(
    std::unique_ptr<WritableMemoryBuffer> Buffer,
    llvm::jitlink::JITLinkMemoryManager& MemMgr,
    const llvm::jitlink::JITLinkDylib* JD,
    llvm::orc::ExecutionSession& ES)

Declared at: llvm/lib/ExecutionEngine/Orc/DebugObjectManagerPlugin.cpp:221

Parameters

std::unique_ptr<WritableMemoryBuffer> Buffer
llvm::jitlink::JITLinkMemoryManager& MemMgr
const llvm::jitlink::JITLinkDylib* JD
llvm::orc::ExecutionSession& ES

Expected<llvm::jitlink::SimpleSegmentAlloc>
finalizeWorkingMemory()

Declared at: llvm/lib/ExecutionEngine/Orc/DebugObjectManagerPlugin.cpp:205

llvm::StringRef getBuffer() const

Declared at: llvm/lib/ExecutionEngine/Orc/DebugObjectManagerPlugin.cpp:202

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

Declared at: llvm/lib/ExecutionEngine/Orc/DebugObjectManagerPlugin.cpp:210

Parameters

llvm::StringRef Name

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

Declared at: llvm/lib/ExecutionEngine/Orc/DebugObjectManagerPlugin.cpp:208

Templates

ELFT

Parameters

llvm::StringRef Name
std::unique_ptr<ELFDebugObjectSection<ELFT>> Section

void reportSectionTargetMemoryRange(
    llvm::StringRef Name,
    llvm::jitlink::SectionRange TargetMem)

Declared at: llvm/lib/ExecutionEngine/Orc/DebugObjectManagerPlugin.cpp:199

Parameters

llvm::StringRef Name
llvm::jitlink::SectionRange TargetMem