class Symbol

Declaration

class Symbol { /* full declaration omitted */ };

Description

Symbol representation. Symbols represent locations within Addressable objects. They can be either Named or Anonymous. Anonymous symbols have neither linkage nor visibility, and must point at ContentBlocks. Named symbols may be in one of four states: - Null: Default initialized. Assignable, but otherwise unusable. - Defined: Has both linkage and visibility and points to a ContentBlock - Common: Has both linkage and visibility, points to a null Addressable. - External: Has neither linkage nor visibility, points to an external Addressable.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:400

Member Variables

private llvm::StringRef Name
private llvm::jitlink::Addressable* Base = nullptr
private uint64_t Offset
private uint64_t L
private uint64_t S
private uint64_t IsLive
private uint64_t IsCallable
private orc::ExecutorAddrDiff Size = 0
private static const uint64_t MaxOffset = (1ULL << 59) - 1

Method Overview

  • public Symbol()
  • public Symbol(const llvm::jitlink::Symbol &)
  • public Symbol(llvm::jitlink::Symbol &&)
  • private Symbol(llvm::jitlink::Addressable & Base, orc::ExecutorAddrDiff Offset, llvm::StringRef Name, orc::ExecutorAddrDiff Size, llvm::jitlink::Linkage L, llvm::jitlink::Scope S, bool IsLive, bool IsCallable)
  • private static llvm::jitlink::Symbol & constructAbsolute(void * SymStorage, llvm::jitlink::Addressable & Base, llvm::StringRef Name, orc::ExecutorAddrDiff Size, llvm::jitlink::Linkage L, llvm::jitlink::Scope S, bool IsLive)
  • private static llvm::jitlink::Symbol & constructAnonDef(void * SymStorage, llvm::jitlink::Block & Base, orc::ExecutorAddrDiff Offset, orc::ExecutorAddrDiff Size, bool IsCallable, bool IsLive)
  • private static llvm::jitlink::Symbol & constructCommon(void * SymStorage, llvm::jitlink::Block & Base, llvm::StringRef Name, orc::ExecutorAddrDiff Size, llvm::jitlink::Scope S, bool IsLive)
  • private static llvm::jitlink::Symbol & constructExternal(void * SymStorage, llvm::jitlink::Addressable & Base, llvm::StringRef Name, orc::ExecutorAddrDiff Size, llvm::jitlink::Linkage L)
  • private static llvm::jitlink::Symbol & constructNamedDef(void * SymStorage, llvm::jitlink::Block & Base, orc::ExecutorAddrDiff Offset, llvm::StringRef Name, orc::ExecutorAddrDiff Size, llvm::jitlink::Linkage L, llvm::jitlink::Scope S, bool IsLive, bool IsCallable)
  • public orc::ExecutorAddr getAddress() const
  • public llvm::jitlink::Addressable & getAddressable()
  • public const llvm::jitlink::Addressable & getAddressable() const
  • public llvm::jitlink::Block & getBlock()
  • public const llvm::jitlink::Block & getBlock() const
  • public llvm::jitlink::Linkage getLinkage() const
  • public llvm::StringRef getName() const
  • public orc::ExecutorAddrDiff getOffset() const
  • public orc::ExecutorAddrRange getRange() const
  • public llvm::jitlink::Scope getScope() const
  • public orc::ExecutorAddrDiff getSize() const
  • public ArrayRef<char> getSymbolContent() const
  • public bool hasName() const
  • public bool isAbsolute() const
  • public bool isCallable() const
  • public bool isDefined() const
  • public bool isExternal() const
  • public bool isLive() const
  • public bool isSymbolZeroFill() const
  • private void makeAbsolute(llvm::jitlink::Addressable & A)
  • private void makeExternal(llvm::jitlink::Addressable & A)
  • private void setBlock(llvm::jitlink::Block & B)
  • public void setCallable(bool IsCallable)
  • public void setLinkage(llvm::jitlink::Linkage L)
  • public void setLive(bool IsLive)
  • public void setName(llvm::StringRef Name)
  • private void setOffset(orc::ExecutorAddrDiff NewOffset)
  • public void setScope(llvm::jitlink::Scope S)
  • public void setSize(orc::ExecutorAddrDiff Size)

Methods

Symbol()

Description

Create a null Symbol. This allows Symbols to be default initialized for use in containers (e.g. as map values). Null symbols are only useful for assigning to.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:482

Symbol(const llvm::jitlink::Symbol&)

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:485

Parameters

const llvm::jitlink::Symbol&

Symbol(llvm::jitlink::Symbol&&)

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:487

Parameters

llvm::jitlink::Symbol&&

Symbol(llvm::jitlink::Addressable& Base,
       orc::ExecutorAddrDiff Offset,
       llvm::StringRef Name,
       orc::ExecutorAddrDiff Size,
       llvm::jitlink::Linkage L,
       llvm::jitlink::Scope S,
       bool IsLive,
       bool IsCallable)

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:404

Parameters

llvm::jitlink::Addressable& Base
orc::ExecutorAddrDiff Offset
llvm::StringRef Name
orc::ExecutorAddrDiff Size
llvm::jitlink::Linkage L
llvm::jitlink::Scope S
bool IsLive
bool IsCallable

static llvm::jitlink::Symbol& constructAbsolute(
    void* SymStorage,
    llvm::jitlink::Addressable& Base,
    llvm::StringRef Name,
    orc::ExecutorAddrDiff Size,
    llvm::jitlink::Linkage L,
    llvm::jitlink::Scope S,
    bool IsLive)

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:441

Parameters

void* SymStorage
llvm::jitlink::Addressable& Base
llvm::StringRef Name
orc::ExecutorAddrDiff Size
llvm::jitlink::Linkage L
llvm::jitlink::Scope S
bool IsLive

static llvm::jitlink::Symbol& constructAnonDef(
    void* SymStorage,
    llvm::jitlink::Block& Base,
    orc::ExecutorAddrDiff Offset,
    orc::ExecutorAddrDiff Size,
    bool IsCallable,
    bool IsLive)

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:452

Parameters

void* SymStorage
llvm::jitlink::Block& Base
orc::ExecutorAddrDiff Offset
orc::ExecutorAddrDiff Size
bool IsCallable
bool IsLive

static llvm::jitlink::Symbol& constructCommon(
    void* SymStorage,
    llvm::jitlink::Block& Base,
    llvm::StringRef Name,
    orc::ExecutorAddrDiff Size,
    llvm::jitlink::Scope S,
    bool IsLive)

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:415

Parameters

void* SymStorage
llvm::jitlink::Block& Base
llvm::StringRef Name
orc::ExecutorAddrDiff Size
llvm::jitlink::Scope S
bool IsLive

static llvm::jitlink::Symbol& constructExternal(
    void* SymStorage,
    llvm::jitlink::Addressable& Base,
    llvm::StringRef Name,
    orc::ExecutorAddrDiff Size,
    llvm::jitlink::Linkage L)

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:429

Parameters

void* SymStorage
llvm::jitlink::Addressable& Base
llvm::StringRef Name
orc::ExecutorAddrDiff Size
llvm::jitlink::Linkage L

static llvm::jitlink::Symbol& constructNamedDef(
    void* SymStorage,
    llvm::jitlink::Block& Base,
    orc::ExecutorAddrDiff Offset,
    llvm::StringRef Name,
    orc::ExecutorAddrDiff Size,
    llvm::jitlink::Linkage L,
    llvm::jitlink::Scope S,
    bool IsLive,
    bool IsCallable)

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:465

Parameters

void* SymStorage
llvm::jitlink::Block& Base
orc::ExecutorAddrDiff Offset
llvm::StringRef Name
orc::ExecutorAddrDiff Size
llvm::jitlink::Linkage L
llvm::jitlink::Scope S
bool IsLive
bool IsCallable

orc::ExecutorAddr getAddress() const

Description

Returns the address of this symbol.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:569

llvm::jitlink::Addressable& getAddressable()

Description

Return the addressable that this symbol points to.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:540

const llvm::jitlink::Addressable& getAddressable()
    const

Description

Return the addressable that thsi symbol points to.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:546

llvm::jitlink::Block& getBlock()

Description

Return the Block for this Symbol (Symbol must be defined).

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:552

const llvm::jitlink::Block& getBlock() const

Description

Return the Block for this Symbol (Symbol must be defined).

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:559

llvm::jitlink::Linkage getLinkage() const

Description

Get the linkage for this Symbol.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:600

llvm::StringRef getName() const

Description

Returns the name of this symbol (empty if the symbol is anonymous).

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:494

orc::ExecutorAddrDiff getOffset() const

Description

Returns the offset for this symbol within the underlying addressable.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:566

orc::ExecutorAddrRange getRange() const

Description

Returns the address range of this symbol.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:585

llvm::jitlink::Scope getScope() const

Description

Get the visibility for this Symbol.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:610

orc::ExecutorAddrDiff getSize() const

Description

Returns the size of this symbol.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:572

ArrayRef<char> getSymbolContent() const

Description

Returns the content in the underlying block covered by this symbol. This method may only be called on defined non-zero-fill symbols.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:595

bool hasName() const

Description

Returns true if this symbol has a name.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:491

bool isAbsolute() const

Description

Returns true if the underlying addressable is an absolute symbol.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:534

bool isCallable() const

Description

Returns true is this symbol is callable.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:522

bool isDefined() const

Description

Returns true if this Symbol has content (potentially) defined within this object file (i.e. is anything but an external or absolute symbol).

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:506

bool isExternal() const

Description

Returns true if the underlying addressable is an unresolved external.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:528

bool isLive() const

Description

Returns true if this symbol is live (i.e. should be treated as a root for dead stripping).

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:513

bool isSymbolZeroFill() const

Description

Returns true if this symbol is backed by a zero-fill block. This method may only be called on defined symbols.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:591

void makeAbsolute(llvm::jitlink::Addressable& A)

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:632

Parameters

llvm::jitlink::Addressable& A

void makeExternal(llvm::jitlink::Addressable& A)

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:622

Parameters

llvm::jitlink::Addressable& A

void setBlock(llvm::jitlink::Block& B)

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:639

Parameters

llvm::jitlink::Block& B

void setCallable(bool IsCallable)

Description

Set this symbol's callable bit.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:525

Parameters

bool IsCallable

void setLinkage(llvm::jitlink::Linkage L)

Description

Set the linkage for this Symbol.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:603

Parameters

llvm::jitlink::Linkage L

void setLive(bool IsLive)

Description

Set this symbol's live bit.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:519

Parameters

bool IsLive

void setName(llvm::StringRef Name)

Description

Rename this symbol. The client is responsible for updating scope and linkage if this name-change requires it.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:502

Parameters

llvm::StringRef Name

void setOffset(orc::ExecutorAddrDiff NewOffset)

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:641

Parameters

orc::ExecutorAddrDiff NewOffset

void setScope(llvm::jitlink::Scope S)

Description

Set the visibility for this Symbol.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:613

Parameters

llvm::jitlink::Scope S

void setSize(orc::ExecutorAddrDiff Size)

Description

Set the size of this symbol.

Declared at: llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:575

Parameters

orc::ExecutorAddrDiff Size