LLVM: llvm::RuntimeDyld Class Reference (original) (raw)

#include "[llvm/ExecutionEngine/RuntimeDyld.h](RuntimeDyld%5F8h%5Fsource.html)"

Public Types
using NotifyStubEmittedFunction
Public Member Functions
LLVM_ABI void reassignSectionAddress (unsigned SectionID, uint64_t Addr)
LLVM_ABI RuntimeDyld (MemoryManager &MemMgr, JITSymbolResolver &Resolver)
Construct a RuntimeDyld instance.
RuntimeDyld (const RuntimeDyld &)=delete
RuntimeDyld & operator= (const RuntimeDyld &)=delete
LLVM_ABI ~RuntimeDyld ()
LLVM_ABI std::unique_ptr< LoadedObjectInfo > loadObject (const object::ObjectFile &O)
Add the referenced object file to the list of objects to be loaded and relocated.
LLVM_ABI void * getSymbolLocalAddress (StringRef Name) const
Get the address of our local copy of the symbol.
LLVM_ABI unsigned getSymbolSectionID (StringRef Name) const
Get the section ID for the section containing the given symbol.
LLVM_ABI JITEvaluatedSymbol getSymbol (StringRef Name) const
Get the target address and flags for the named symbol.
LLVM_ABI std::map< StringRef, JITEvaluatedSymbol > getSymbolTable () const
Returns a copy of the symbol table.
LLVM_ABI void resolveRelocations ()
Resolve the relocations for all symbols we currently know about.
LLVM_ABI void mapSectionAddress (const void *LocalAddress, uint64_t TargetAddress)
Map a section to its target address space value.
LLVM_ABI StringRef getSectionContent (unsigned SectionID) const
Returns the section's working memory.
LLVM_ABI uint64_t getSectionLoadAddress (unsigned SectionID) const
If the section was loaded, return the section's load address, otherwise return std::nullopt.
void setNotifyStubEmitted (NotifyStubEmittedFunction NotifyStubEmitted)
Set the NotifyStubEmitted callback.
LLVM_ABI void registerEHFrames ()
Register any EH frame sections that have been loaded but not previously registered with the memory manager.
LLVM_ABI void deregisterEHFrames ()
LLVM_ABI bool hasError ()
LLVM_ABI StringRef getErrorString ()
void setProcessAllSections (bool ProcessAllSections)
By default, only sections that are "required for execution" are passed to the RTDyldMemoryManager, and other sections are discarded.
LLVM_ABI void finalizeWithMemoryManagerLocking ()
Perform all actions needed to make the code owned by this RuntimeDyld instance executable:
Friends
LLVM_ABI friend void jitLinkForORC (object::OwningBinary< object::ObjectFile > O, RuntimeDyld::MemoryManager &MemMgr, JITSymbolResolver &Resolver, bool ProcessAllSections, unique_function< Error(const object::ObjectFile &Obj, LoadedObjectInfo &, std::map< StringRef, JITEvaluatedSymbol >)> OnLoaded, unique_function< void(object::OwningBinary< object::ObjectFile > O, std::unique_ptr< LoadedObjectInfo >, Error)> OnEmitted)

Definition at line 59 of file RuntimeDyld.h.

NotifyStubEmittedFunction

Initial value:

std::function<void(

unsigned SectionID, uint32_t StubOffset)>

StringRef - Represent a constant reference to a string, i.e.

Definition at line 65 of file RuntimeDyld.h.

RuntimeDyld() [2/2]

~RuntimeDyld()

llvm::RuntimeDyld::~RuntimeDyld ( ) default

deregisterEHFrames()

void llvm::RuntimeDyld::deregisterEHFrames ( )

finalizeWithMemoryManagerLocking()

void llvm::RuntimeDyld::finalizeWithMemoryManagerLocking ( )

Perform all actions needed to make the code owned by this RuntimeDyld instance executable:

  1. Apply relocations. 2) Register EH frames. 3) Update memory permissions*.

** Recursive finalization occurs when one RuntimeDyld instances needs the address of a symbol owned by some other instance in order to apply relocations.

Definition at line 1425 of file RuntimeDyld.cpp.

References registerEHFrames(), and resolveRelocations().

getErrorString()

StringRef llvm::RuntimeDyld::getErrorString ( )

getSectionContent()

getSectionLoadAddress()

If the section was loaded, return the section's load address, otherwise return std::nullopt.

Definition at line 1441 of file RuntimeDyld.cpp.

References assert().

getSymbol()

Get the target address and flags for the named symbol.

This address is the one used for relocation.

Definition at line 1398 of file RuntimeDyld.cpp.

getSymbolLocalAddress()

void * llvm::RuntimeDyld::getSymbolLocalAddress ( StringRef Name ) const

Get the address of our local copy of the symbol.

This may or may not be the address used for relocation (clients can copy the data around and resolve relocatons based on where they put it).

Definition at line 1387 of file RuntimeDyld.cpp.

getSymbolSectionID()

getSymbolTable()

Returns a copy of the symbol table.

This can be used by on-finalized callbacks to extract the symbol table before throwing away the RuntimeDyld instance. Because the map keys (StringRefs) are backed by strings inside the RuntimeDyld instance, the map should be processed before the RuntimeDyld instance is discarded.

Definition at line 1404 of file RuntimeDyld.cpp.

Referenced by llvm::jitLinkForORC().

hasError()

bool llvm::RuntimeDyld::hasError ( )

loadObject()

mapSectionAddress()

void llvm::RuntimeDyld::mapSectionAddress ( const void * LocalAddress,
uint64_t TargetAddress )

Map a section to its target address space value.

Map the address of a JIT section as returned from the memory manager to the address in the target process as the running code will see it. This is the address which will be used for relocation resolution.

Definition at line 1416 of file RuntimeDyld.cpp.

operator=()

reassignSectionAddress()

void llvm::RuntimeDyld::reassignSectionAddress ( unsigned SectionID,
uint64_t Addr )

registerEHFrames()

void llvm::RuntimeDyld::registerEHFrames ( )

Register any EH frame sections that have been loaded but not previously registered with the memory manager.

Note, RuntimeDyld is responsible for identifying the EH frame and calling the memory manager with the EH frame section data. However, the memory manager itself will handle the actual target-specific EH frame registration.

Definition at line 1446 of file RuntimeDyld.cpp.

Referenced by finalizeWithMemoryManagerLocking().

resolveRelocations()

void llvm::RuntimeDyld::resolveRelocations ( )

setNotifyStubEmitted()

void llvm::RuntimeDyld::setNotifyStubEmitted ( NotifyStubEmittedFunction NotifyStubEmitted) inline

Set the NotifyStubEmitted callback.

This is used for debugging purposes. A callback is made for each stub that is generated.

Definition at line 241 of file RuntimeDyld.h.

setProcessAllSections()

void llvm::RuntimeDyld::setProcessAllSections ( bool ProcessAllSections) inline

By default, only sections that are "required for execution" are passed to the RTDyldMemoryManager, and other sections are discarded.

Passing 'true' to this method will cause RuntimeDyld to pass all sections to its memory manager regardless of whether they are "required to execute" in the usual sense. This is useful for inspecting metadata sections that may not contain relocations, E.g. Debug info, stackmaps.

Must be called before the first object file is loaded.

Definition at line 265 of file RuntimeDyld.h.

References assert().

Referenced by llvm::jitLinkForORC().

jitLinkForORC

LLVM_ABI friend void jitLinkForORC ( object::OwningBinary< object::ObjectFile > O, RuntimeDyld::MemoryManager & MemMgr, JITSymbolResolver & Resolver, bool ProcessAllSections, unique_function< Error(const object::ObjectFile &Obj, LoadedObjectInfo &, std::map< StringRef, JITEvaluatedSymbol >)> OnLoaded, unique_function< void(object::OwningBinary< object::ObjectFile > O, std::unique_ptr< LoadedObjectInfo >, Error)> OnEmitted ) friend

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