LLVM API Documentation

Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes
llvm::RuntimeDyldImpl Class Reference

#include <RuntimeDyldImpl.h>

Inheritance diagram for llvm::RuntimeDyldImpl:
Inheritance graph
[legend]
Collaboration diagram for llvm::RuntimeDyldImpl:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 RuntimeDyldImpl (RTDyldMemoryManager *mm)
virtual ~RuntimeDyldImpl ()
ObjectImageloadObject (ObjectBuffer *InputBuffer)
void * getSymbolAddress (StringRef Name)
uint64_t getSymbolLoadAddress (StringRef Name)
void resolveRelocations ()
void reassignSectionAddress (unsigned SectionID, uint64_t Addr)
void mapSectionAddress (const void *LocalAddress, uint64_t TargetAddress)
bool hasError ()
void clearError ()
StringRef getErrorString ()
virtual bool isCompatibleFormat (const ObjectBuffer *Buffer) const =0
virtual StringRef getEHFrameSection ()

Protected Types

typedef SmallVector
< SectionEntry, 64 > 
SectionList
typedef std::map< SectionRef,
unsigned
ObjSectionToIDMap
typedef std::pair< unsigned,
uintptr_t > 
SymbolLoc
typedef StringMap< SymbolLocSymbolTableMap
typedef std::pair< unsigned,
unsigned
CommonSymbolInfo
typedef std::map< SymbolRef,
CommonSymbolInfo
CommonSymbolMap
typedef SmallVector
< RelocationEntry, 64 > 
RelocationList
typedef std::map
< RelocationValueRef,
uintptr_t > 
StubMap

Protected Member Functions

unsigned getMaxStubSize ()
unsigned getStubAlignment ()
bool Error (const Twine &Msg)
uint64_t getSectionLoadAddress (unsigned SectionID)
uint8_t * getSectionAddress (unsigned SectionID)
void writeInt16BE (uint8_t *Addr, uint16_t Value)
void writeInt32BE (uint8_t *Addr, uint32_t Value)
void writeInt64BE (uint8_t *Addr, uint64_t Value)
void emitCommonSymbols (ObjectImage &Obj, const CommonSymbolMap &CommonSymbols, uint64_t TotalSize, SymbolTableMap &SymbolTable)
 Given the common symbols discovered in the object file, emit a new section for them and update the symbol mappings in the object and symbol table.
unsigned emitSection (ObjectImage &Obj, const SectionRef &Section, bool IsCode)
 Emits section data from the object file to the MemoryManager.
unsigned findOrEmitSection (ObjectImage &Obj, const SectionRef &Section, bool IsCode, ObjSectionToIDMap &LocalSections)
 Find Section in LocalSections. If the secton is not found - emit it and store in LocalSections.
void addRelocationForSection (const RelocationEntry &RE, unsigned SectionID)
void addRelocationForSymbol (const RelocationEntry &RE, StringRef SymbolName)
uint8_t * createStubFunction (uint8_t *Addr)
 Emits long jump instruction to Addr.
void resolveRelocationList (const RelocationList &Relocs, uint64_t Value)
 Resolves relocations from Relocs list with address from Value.
virtual void resolveRelocation (const RelocationEntry &RE, uint64_t Value)=0
 A object file specific relocation resolver.
virtual void processRelocationRef (unsigned SectionID, RelocationRef RelI, ObjectImage &Obj, ObjSectionToIDMap &ObjSectionToID, const SymbolTableMap &Symbols, StubMap &Stubs)=0
 Parses the object file relocation and stores it to Relocations or SymbolRelocations (this depends on the object file type).
void resolveExternalSymbols ()
 Resolve relocations to external symbols.
virtual ObjectImagecreateObjectImage (ObjectBuffer *InputBuffer)

Protected Attributes

RTDyldMemoryManagerMemMgr
SectionList Sections
SymbolTableMap GlobalSymbolTable
DenseMap< unsigned,
RelocationList
Relocations
StringMap< RelocationListExternalSymbolRelocations
Triple::ArchType Arch
bool HasError
std::string ErrorStr

Detailed Description

Definition at line 123 of file RuntimeDyldImpl.h.


Member Typedef Documentation

Definition at line 144 of file RuntimeDyldImpl.h.

Definition at line 146 of file RuntimeDyldImpl.h.

Definition at line 135 of file RuntimeDyldImpl.h.

Definition at line 153 of file RuntimeDyldImpl.h.

Definition at line 130 of file RuntimeDyldImpl.h.

typedef std::map<RelocationValueRef, uintptr_t> llvm::RuntimeDyldImpl::StubMap [protected]

Definition at line 164 of file RuntimeDyldImpl.h.

typedef std::pair<unsigned, uintptr_t> llvm::RuntimeDyldImpl::SymbolLoc [protected]

Definition at line 139 of file RuntimeDyldImpl.h.

Definition at line 140 of file RuntimeDyldImpl.h.


Constructor & Destructor Documentation

llvm::RuntimeDyldImpl::RuntimeDyldImpl ( RTDyldMemoryManager mm) [inline]

Definition at line 297 of file RuntimeDyldImpl.h.

RuntimeDyldImpl::~RuntimeDyldImpl ( ) [virtual]

Definition at line 29 of file RuntimeDyld.cpp.


Member Function Documentation

void llvm::RuntimeDyldImpl::addRelocationForSection ( const RelocationEntry RE,
unsigned  SectionID 
) [protected]

Definition at line 320 of file RuntimeDyld.cpp.

void llvm::RuntimeDyldImpl::addRelocationForSymbol ( const RelocationEntry RE,
StringRef  SymbolName 
) [protected]

Definition at line 325 of file RuntimeDyld.cpp.

References llvm::RelocationEntry::Addend.

void llvm::RuntimeDyldImpl::clearError ( ) [inline]

Definition at line 331 of file RuntimeDyldImpl.h.

ObjectImage * llvm::RuntimeDyldImpl::createObjectImage ( ObjectBuffer InputBuffer) [protected, virtual]

Reimplemented in llvm::RuntimeDyldELF.

Definition at line 66 of file RuntimeDyld.cpp.

uint8_t * llvm::RuntimeDyldImpl::createStubFunction ( uint8_t *  Addr) [protected]

Emits long jump instruction to Addr.

Returns:
Pointer to the memory area for emitting target address.

Definition at line 342 of file RuntimeDyld.cpp.

References llvm::Triple::aarch64, llvm::Triple::arm, llvm::Triple::mips, llvm::Triple::mipsel, llvm::Triple::ppc64, and llvm::Triple::systemz.

void llvm::RuntimeDyldImpl::emitCommonSymbols ( ObjectImage Obj,
const CommonSymbolMap CommonSymbols,
uint64_t  TotalSize,
SymbolTableMap SymbolTable 
) [protected]

Given the common symbols discovered in the object file, emit a new section for them and update the symbol mappings in the object and symbol table.

Definition at line 171 of file RuntimeDyld.cpp.

References Align(), llvm::StringRef::data(), llvm::dbgs(), DEBUG, llvm::format(), llvm::LibFunc::memset, llvm::OffsetToAlignment(), llvm::report_fatal_error(), and llvm::ObjectImage::updateSymbolAddress().

unsigned llvm::RuntimeDyldImpl::emitSection ( ObjectImage Obj,
const SectionRef Section,
bool  IsCode 
) [protected]
bool llvm::RuntimeDyldImpl::Error ( const Twine Msg) [inline, protected]

Definition at line 196 of file RuntimeDyldImpl.h.

References llvm::Twine::str().

unsigned llvm::RuntimeDyldImpl::findOrEmitSection ( ObjectImage Obj,
const SectionRef Section,
bool  IsCode,
ObjSectionToIDMap LocalSections 
) [protected]

Find Section in LocalSections. If the secton is not found - emit it and store in LocalSections.

Parameters:
IsCodeif it's true then allocateCodeSection() will be used for emmits, else allocateDataSection() will be used.
Returns:
SectionID.

Definition at line 304 of file RuntimeDyld.cpp.

References ARMBuildAttrs::Section.

StringRef llvm::RuntimeDyldImpl::getEHFrameSection ( ) [virtual]

Reimplemented in llvm::RuntimeDyldELF, and llvm::RuntimeDyldMachO.

Definition at line 33 of file RuntimeDyld.cpp.

StringRef llvm::RuntimeDyldImpl::getErrorString ( ) [inline]

Definition at line 334 of file RuntimeDyldImpl.h.

unsigned llvm::RuntimeDyldImpl::getMaxStubSize ( ) [inline, protected]
uint8_t* llvm::RuntimeDyldImpl::getSectionAddress ( unsigned  SectionID) [inline, protected]

Definition at line 206 of file RuntimeDyldImpl.h.

uint64_t llvm::RuntimeDyldImpl::getSectionLoadAddress ( unsigned  SectionID) [inline, protected]

Definition at line 202 of file RuntimeDyldImpl.h.

unsigned llvm::RuntimeDyldImpl::getStubAlignment ( ) [inline, protected]

Definition at line 185 of file RuntimeDyldImpl.h.

References llvm::Triple::systemz.

void* llvm::RuntimeDyldImpl::getSymbolAddress ( StringRef  Name) [inline]

Definition at line 303 of file RuntimeDyldImpl.h.

uint64_t llvm::RuntimeDyldImpl::getSymbolLoadAddress ( StringRef  Name) [inline]

Definition at line 312 of file RuntimeDyldImpl.h.

bool llvm::RuntimeDyldImpl::hasError ( ) [inline]

Definition at line 328 of file RuntimeDyldImpl.h.

virtual bool llvm::RuntimeDyldImpl::isCompatibleFormat ( const ObjectBuffer Buffer) const [pure virtual]
ObjectImage * llvm::RuntimeDyldImpl::loadObject ( ObjectBuffer InputBuffer)
void llvm::RuntimeDyldImpl::mapSectionAddress ( const void *  LocalAddress,
uint64_t  TargetAddress 
)

Definition at line 53 of file RuntimeDyld.cpp.

References llvm_unreachable.

virtual void llvm::RuntimeDyldImpl::processRelocationRef ( unsigned  SectionID,
RelocationRef  RelI,
ObjectImage Obj,
ObjSectionToIDMap ObjSectionToID,
const SymbolTableMap Symbols,
StubMap Stubs 
) [protected, pure virtual]

Parses the object file relocation and stores it to Relocations or SymbolRelocations (this depends on the object file type).

Implemented in llvm::RuntimeDyldELF, and llvm::RuntimeDyldMachO.

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

Definition at line 415 of file RuntimeDyld.cpp.

void llvm::RuntimeDyldImpl::resolveExternalSymbols ( ) [protected]
virtual void llvm::RuntimeDyldImpl::resolveRelocation ( const RelocationEntry RE,
uint64_t  Value 
) [protected, pure virtual]

A object file specific relocation resolver.

Parameters:
REThe relocation to be resolved
ValueTarget symbol address to apply the relocation action

Implemented in llvm::RuntimeDyldELF, and llvm::RuntimeDyldMachO.

void llvm::RuntimeDyldImpl::resolveRelocationList ( const RelocationList Relocs,
uint64_t  Value 
) [protected]

Resolves relocations from Relocs list with address from Value.

Definition at line 430 of file RuntimeDyld.cpp.

References llvm::RelocationEntry::SectionID, and llvm::SmallVectorTemplateCommon< T, typename >::size().

void llvm::RuntimeDyldImpl::resolveRelocations ( )

Definition at line 38 of file RuntimeDyld.cpp.

References llvm::dbgs(), DEBUG, and llvm::format().

void llvm::RuntimeDyldImpl::writeInt16BE ( uint8_t *  Addr,
uint16_t  Value 
) [inline, protected]

Definition at line 210 of file RuntimeDyldImpl.h.

References llvm::sys::IsLittleEndianHost, and llvm::sys::SwapByteOrder().

void llvm::RuntimeDyldImpl::writeInt32BE ( uint8_t *  Addr,
uint32_t  Value 
) [inline, protected]

Definition at line 217 of file RuntimeDyldImpl.h.

References llvm::sys::IsLittleEndianHost, and llvm::sys::SwapByteOrder().

void llvm::RuntimeDyldImpl::writeInt64BE ( uint8_t *  Addr,
uint64_t  Value 
) [inline, protected]

Definition at line 226 of file RuntimeDyldImpl.h.

References llvm::sys::IsLittleEndianHost, and llvm::sys::SwapByteOrder().


Member Data Documentation

Definition at line 166 of file RuntimeDyldImpl.h.

std::string llvm::RuntimeDyldImpl::ErrorStr [protected]

Definition at line 193 of file RuntimeDyldImpl.h.

Definition at line 162 of file RuntimeDyldImpl.h.

Definition at line 141 of file RuntimeDyldImpl.h.

Definition at line 192 of file RuntimeDyldImpl.h.

Definition at line 126 of file RuntimeDyldImpl.h.

Definition at line 157 of file RuntimeDyldImpl.h.

Definition at line 131 of file RuntimeDyldImpl.h.


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