LLVM  8.0.0svn
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
llvm::orc Namespace Reference

Namespaces

 remote
 
 rpc
 

Classes

class  AbsoluteSymbolsMaterializationUnit
 A MaterializationUnit implementation for pre-existing absolute symbols. More...
 
class  AsynchronousSymbolQuery
 A symbol query that returns results via a callback when results are ready. More...
 
class  BasicIRLayerMaterializationUnit
 MaterializationUnit that materializes modules by calling the 'emit' method on the given IRLayer. More...
 
class  BasicObjectLayerMaterializationUnit
 Materializes the given object file (represented by a MemoryBuffer instance) by calling 'emit' on the given ObjectLayer. More...
 
class  CompileOnDemandLayer
 
class  ConcurrentIRCompiler
 A thread-safe version of SimpleCompiler. More...
 
class  CtorDtorIterator
 This iterator provides a convenient way to iterate over the elements of an llvm.global_ctors/llvm.global_dtors instance. More...
 
class  CtorDtorRunner
 
class  DuplicateDefinition
 
class  DynamicLibrarySearchGenerator
 A utility class to expose symbols found via dlsym to the JIT. More...
 
class  ExecutionSession
 An ExecutionSession represents a running JIT program. More...
 
class  FailedToMaterialize
 Used to notify a JITDylib that the given set of symbols failed to materialize. More...
 
class  GenericIndirectStubsInfo
 Provide information about stub blocks generated by the makeIndirectStubsBlock function. More...
 
class  GlobalMappingLayer
 Global mapping layer. More...
 
class  IndirectStubsManager
 Base class for managing collections of named indirect stubs. More...
 
class  IRCompileLayer
 
class  IRLayer
 Interface for layers that accept LLVM IR. More...
 
class  IRMaterializationUnit
 IRMaterializationUnit is a convenient base class for MaterializationUnits wrapping LLVM IR. More...
 
class  IRTransformLayer
 
class  JITCompileCallbackManager
 Target-independent base class for compile callback management. More...
 
class  JITDylib
 A symbol table that supports asynchoronous symbol queries. More...
 
class  JITSymbolNotFound
 
class  JITSymbolResolverAdapter
 Legacy adapter. Remove once we kill off the old ORC layers. More...
 
class  JITTargetMachineBuilder
 A utility class for building TargetMachines for JITs. More...
 
class  LambdaResolver
 
class  LambdaSymbolResolver
 Implements SymbolResolver with a pair of supplied function objects for convenience. More...
 
class  LazyCallThroughManager
 Manages a set of 'lazy call-through' trampolines. More...
 
class  LazyEmittingLayer
 Lazy-emitting IR layer. More...
 
class  LazyReexportsMaterializationUnit
 A materialization unit that builds lazy re-exports. More...
 
class  LegacyCompileOnDemandLayer
 Compile-on-demand layer. More...
 
class  LegacyCtorDtorRunner
 Convenience class for recording constructor/destructor names for later execution. More...
 
class  LegacyIRCompileLayer
 Eager IR compiling layer. More...
 
class  LegacyIRTransformLayer
 IR mutating layer. More...
 
class  LegacyLocalCXXRuntimeOverrides
 
class  LegacyLookupFnResolver
 An ORC SymbolResolver implementation that uses a legacy findSymbol-like function to perform lookup;. More...
 
class  LegacyObjectTransformLayer
 Object mutating layer. More...
 
class  LegacyRTDyldObjectLinkingLayer
 Bare bones object linking layer. More...
 
class  LegacyRTDyldObjectLinkingLayerBase
 
class  LLJIT
 A pre-fabricated ORC JIT stack that can serve as an alternative to MCJIT. More...
 
class  LLLazyJIT
 An extended version of LLJIT that supports lazy function-at-a-time compilation of LLVM IR. More...
 
class  LocalCXXRuntimeOverrides
 
class  LocalCXXRuntimeOverridesBase
 Support class for static dtor execution. More...
 
class  LocalIndirectStubsManager
 IndirectStubsManager implementation for the host architecture, e.g. More...
 
class  LocalJITCompileCallbackManager
 Manage compile callbacks for in-process JITs. More...
 
class  LocalLazyCallThroughManager
 A lazy call-through manager that builds trampolines in the current process. More...
 
class  LocalTrampolinePool
 A trampoline pool for trampolines within the current process. More...
 
class  MangleAndInterner
 Mangles symbol names then uniques them in the context of an ExecutionSession. More...
 
class  MaterializationResponsibility
 Tracks responsibility for materialization, and mediates interactions between MaterializationUnits and JDs. More...
 
class  MaterializationUnit
 A MaterializationUnit represents a set of symbol definitions that can be materialized as a group, or individually discarded (when overriding definitions are encountered). More...
 
class  NullLegacyResolver
 SymbolResolver impliementation that rejects all resolution requests. More...
 
class  NullResolver
 
class  ObjectLayer
 Interface for Layers that accept object files. More...
 
class  ObjectTransformLayer
 
class  OrcAArch64
 
class  OrcGenericABI
 Generic ORC ABI support. More...
 
class  OrcI386
 I386 support. More...
 
class  OrcMCJITReplacement
 
class  OrcMips32_Base
 
class  OrcMips32Be
 
class  OrcMips32Le
 
class  OrcMips64
 
class  OrcX86_64_Base
 X86_64 code that's common to all ABIs. More...
 
class  OrcX86_64_SysV
 X86_64 support for SysV ABI (Linux, MacOSX). More...
 
class  OrcX86_64_Win32
 X86_64 support for Win32. More...
 
class  PartitioningIRMaterializationUnit
 
class  ReexportsGenerator
 ReexportsGenerator can be used with JITDylib::setGenerator to automatically re-export a subset of the source JITDylib's symbols in the target. More...
 
class  ReExportsMaterializationUnit
 A materialization unit for symbol aliases. More...
 
class  RemoteObjectClientLayer
 RemoteObjectClientLayer forwards the ORC Object Layer API over an RPC connection. More...
 
class  RemoteObjectLayer
 Base class containing common utilities for RemoteObjectClientLayer and RemoteObjectServerLayer. More...
 
class  RemoteObjectLayerAPI
 RPC API needed by RemoteObjectClientLayer and RemoteObjectServerLayer. More...
 
class  RemoteObjectServerLayer
 RemoteObjectServerLayer acts as a server and handling RPC calls for the object layer API from the given RPC connection. More...
 
class  RTDyldObjectLinkingLayer
 
class  SimpleCompiler
 Simple compile functor: Takes a single IR module and returns an ObjectFile. More...
 
struct  SymbolAliasMapEntry
 
class  SymbolLinkagePromoter
 Promotes private symbols to global hidden, and renames to prevent clashes with other promoted symbols. More...
 
class  SymbolResolver
 SymbolResolver is a composable interface for looking up symbol flags and addresses using the AsynchronousSymbolQuery type. More...
 
class  SymbolsCouldNotBeRemoved
 Used to notify clients that a set of symbols could not be removed. More...
 
class  SymbolsNotFound
 Used to notify clients when symbols can not be found during a lookup. More...
 
class  SymbolStringPool
 String pool for symbol names used by the JIT. More...
 
class  SymbolStringPtr
 Pointer to a pooled string representing a symbol name. More...
 
class  ThreadSafeContext
 An LLVMContext together with an associated mutex that can be used to lock the context to prevent concurrent access by other threads. More...
 
class  ThreadSafeModule
 An LLVM Module together with a shared ThreadSafeContext. More...
 
class  TrampolinePool
 Base class for pools of compiler re-entry trampolines. More...
 

Typedefs

using VModuleKey = uint64_t
 VModuleKey provides a unique identifier (allocated and managed by ExecutionSessions) for a module added to the JIT. More...
 
using SymbolNameSet = DenseSet< SymbolStringPtr >
 A set of symbol names (represented by SymbolStringPtrs for. More...
 
using SymbolMap = DenseMap< SymbolStringPtr, JITEvaluatedSymbol >
 A map from symbol names (as SymbolStringPtrs) to JITSymbols (address/flags pairs). More...
 
using SymbolFlagsMap = DenseMap< SymbolStringPtr, JITSymbolFlags >
 A map from symbol names (as SymbolStringPtrs) to JITSymbolFlags. More...
 
using SymbolDependenceMap = DenseMap< JITDylib *, SymbolNameSet >
 A base class for materialization failures that allows the failing symbols to be obtained for logging. More...
 
using JITDylibSearchList = std::vector< std::pair< JITDylib *, bool > >
 A list of (JITDylib*, bool) pairs. More...
 
using SymbolsResolvedCallback = std::function< void(Expected< SymbolMap >)>
 Callback to notify client that symbols have been resolved. More...
 
using SymbolsReadyCallback = std::function< void(Error)>
 Callback to notify client that symbols are ready for execution. More...
 
using RegisterDependenciesFunction = std::function< void(const SymbolDependenceMap &)>
 Callback to register the dependencies for a given query. More...
 
using MaterializationUnitList = std::vector< std::unique_ptr< MaterializationUnit > >
 
using SymbolAliasMap = DenseMap< SymbolStringPtr, SymbolAliasMapEntry >
 A map of Symbols to (Symbol, Flags) pairs. More...
 
using GVPredicate = std::function< bool(const GlobalValue &)>
 
using GVModifier = std::function< void(GlobalValue &)>
 

Enumerations

enum  OrcErrorCode : int {
  OrcErrorCode::UnknownORCError = 1, OrcErrorCode::DuplicateDefinition, OrcErrorCode::JITSymbolNotFound, OrcErrorCode::RemoteAllocatorDoesNotExist,
  OrcErrorCode::RemoteAllocatorIdAlreadyInUse, OrcErrorCode::RemoteMProtectAddrUnrecognized, OrcErrorCode::RemoteIndirectStubsOwnerDoesNotExist, OrcErrorCode::RemoteIndirectStubsOwnerIdAlreadyInUse,
  OrcErrorCode::RPCConnectionClosed, OrcErrorCode::RPCCouldNotNegotiateFunction, OrcErrorCode::RPCResponseAbandoned, OrcErrorCode::UnexpectedRPCCall,
  OrcErrorCode::UnexpectedRPCResponse, OrcErrorCode::UnknownErrorCodeFromRemote, OrcErrorCode::UnknownResourceHandle
}
 

Functions

raw_ostreamoperator<< (raw_ostream &OS, const SymbolStringPtr &Sym)
 Render a SymbolStringPtr. More...
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolNameSet &Symbols)
 Render a SymbolNameSet. More...
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolFlagsMap::value_type &KV)
 Render a SymbolFlagsMap entry. More...
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolMap::value_type &KV)
 Render a SymbolMap entry. More...
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolFlagsMap &SymbolFlags)
 Render a SymbolFlagsMap. More...
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolMap &Symbols)
 Render a SymbolMap. More...
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolDependenceMap::value_type &KV)
 Render a SymbolDependenceMap entry. More...
 
raw_ostreamoperator<< (raw_ostream &OS, const MaterializationUnit &MU)
 Render a MaterializationUnit. More...
 
raw_ostreamoperator<< (raw_ostream &OS, const JITDylibSearchList &JDs)
 Render a JITDylibSearchList. More...
 
std::unique_ptr< AbsoluteSymbolsMaterializationUnitabsoluteSymbols (SymbolMap Symbols, VModuleKey K=VModuleKey())
 Create an AbsoluteSymbolsMaterializationUnit with the given symbols. More...
 
std::unique_ptr< ReExportsMaterializationUnitsymbolAliases (SymbolAliasMap Aliases, VModuleKey K=VModuleKey())
 Create a ReExportsMaterializationUnit with the given aliases. More...
 
std::unique_ptr< ReExportsMaterializationUnitreexports (JITDylib &SourceJD, SymbolAliasMap Aliases, bool MatchNonExported=false, VModuleKey K=VModuleKey())
 Create a materialization unit for re-exporting symbols from another JITDylib with alternative names/flags. More...
 
Expected< SymbolAliasMapbuildSimpleReexportsAliasMap (JITDylib &SourceJD, const SymbolNameSet &Symbols)
 Build a SymbolAliasMap for the common case where you want to re-export symbols from another JITDylib with the same linkage/flags. More...
 
iterator_range< CtorDtorIteratorgetConstructors (const Module &M)
 Create an iterator range over the entries of the llvm.global_ctors array. More...
 
iterator_range< CtorDtorIteratorgetDestructors (const Module &M)
 Create an iterator range over the entries of the llvm.global_ctors array. More...
 
Expected< std::unique_ptr< JITCompileCallbackManager > > createLocalCompileCallbackManager (const Triple &T, ExecutionSession &ES, JITTargetAddress ErrorHandlerAddress)
 Create a local compile callback manager. More...
 
std::function< std::unique_ptr< IndirectStubsManager >)> createLocalIndirectStubsManagerBuilder (const Triple &T)
 Create a local indriect stubs manager builder. More...
 
ConstantcreateIRTypedAddress (FunctionType &FT, JITTargetAddress Addr)
 Build a function pointer of FunctionType with the given constant address. More...
 
GlobalVariablecreateImplPointer (PointerType &PT, Module &M, const Twine &Name, Constant *Initializer)
 Create a function pointer with the given type, name, and initializer in the given Module. More...
 
void makeStub (Function &F, Value &ImplPointer)
 Turn a function declaration into a stub function that makes an indirect call using the given function pointer. More...
 
FunctioncloneFunctionDecl (Module &Dst, const Function &F, ValueToValueMapTy *VMap=nullptr)
 Clone a function declaration into a new module. More...
 
void moveFunctionBody (Function &OrigF, ValueToValueMapTy &VMap, ValueMaterializer *Materializer=nullptr, Function *NewF=nullptr)
 Move the body of function 'F' to a cloned function declaration in a different module (See related cloneFunctionDecl). More...
 
GlobalVariablecloneGlobalVariableDecl (Module &Dst, const GlobalVariable &GV, ValueToValueMapTy *VMap=nullptr)
 Clone a global variable declaration into a new module. More...
 
void moveGlobalVariableInitializer (GlobalVariable &OrigGV, ValueToValueMapTy &VMap, ValueMaterializer *Materializer=nullptr, GlobalVariable *NewGV=nullptr)
 Move global variable GV from its parent module to cloned global declaration in a different module. More...
 
GlobalAliascloneGlobalAliasDecl (Module &Dst, const GlobalAlias &OrigA, ValueToValueMapTy &VMap)
 Clone a global alias declaration into a new module. More...
 
void cloneModuleFlagsMetadata (Module &Dst, const Module &Src, ValueToValueMapTy &VMap)
 Clone module flags metadata into the destination module. More...
 
template<typename DylibLookupFtorT , typename ExternalLookupFtorT >
std::shared_ptr< LambdaResolver< DylibLookupFtorT, ExternalLookupFtorT > > createLambdaResolver (DylibLookupFtorT DylibLookupFtor, ExternalLookupFtorT ExternalLookupFtor)
 
Expected< SymbolFlagsMapgetObjectSymbolFlags (ExecutionSession &ES, MemoryBufferRef ObjBuffer)
 Returns a SymbolFlagsMap for the object file represented by the given buffer, or an error if the buffer does not contain a valid object file. More...
 
Expected< std::unique_ptr< LazyCallThroughManager > > createLocalLazyCallThroughManager (const Triple &T, ExecutionSession &ES, JITTargetAddress ErrorHandlerAddr)
 Create a LocalLazyCallThroughManager from the given triple and execution session. More...
 
std::unique_ptr< LazyReexportsMaterializationUnitlazyReexports (LazyCallThroughManager &LCTManager, IndirectStubsManager &ISManager, JITDylib &SourceJD, SymbolAliasMap CallableAliases, VModuleKey K=VModuleKey())
 Define lazy-reexports based on the given SymbolAliasMap. More...
 
template<typename GetResponsibilitySetFn , typename LookupFn >
std::unique_ptr< LambdaSymbolResolver< typename std::remove_cv< typename std::remove_reference< GetResponsibilitySetFn >::type >::type, typename std::remove_cv< typename std::remove_reference< LookupFn >::type >::type > > createSymbolResolver (GetResponsibilitySetFn &&GetResponsibilitySet, LookupFn &&Lookup)
 Creates a SymbolResolver implementation from the pair of supplied function objects. More...
 
template<typename FindSymbolFn >
Expected< SymbolNameSetgetResponsibilitySetWithLegacyFn (const SymbolNameSet &Symbols, FindSymbolFn FindSymbol)
 Use the given legacy-style FindSymbol function (i.e. More...
 
template<typename FindSymbolFn >
SymbolNameSet lookupWithLegacyFn (ExecutionSession &ES, AsynchronousSymbolQuery &Query, const SymbolNameSet &Symbols, FindSymbolFn FindSymbol)
 Use the given legacy-style FindSymbol function (i.e. More...
 
template<typename LegacyLookupFn >
std::shared_ptr< LegacyLookupFnResolver< LegacyLookupFn > > createLegacyLookupResolver (ExecutionSession &ES, LegacyLookupFn LegacyLookup, std::function< void(Error)> ErrorReporter)
 
std::error_code orcError (OrcErrorCode ErrCode)
 
bool operator== (const SymbolStringPtr &LHS, const SymbolStringPtr &RHS)
 
bool operator!= (const SymbolStringPtr &LHS, const SymbolStringPtr &RHS)
 
bool operator< (const SymbolStringPtr &LHS, const SymbolStringPtr &RHS)
 
ThreadSafeModule cloneToNewContext (ThreadSafeModule &TSMW, GVPredicate ShouldCloneDef=GVPredicate(), GVModifier UpdateClonedDefSource=GVModifier())
 Clones the given module on to a new context. More...
 
raw_ostreamoperator<< (raw_ostream &OS, const JITSymbolFlags &Flags)
 
raw_ostreamoperator<< (raw_ostream &OS, const JITEvaluatedSymbol &Sym)
 

Variables

RegisterDependenciesFunction NoDependenciesToRegister
 This can be used as the value for a RegisterDependenciesFunction if there are no dependants to register with. More...
 

Typedef Documentation

◆ GVModifier

Definition at line 152 of file ThreadSafeModule.h.

◆ GVPredicate

Definition at line 151 of file ThreadSafeModule.h.

◆ JITDylibSearchList

using llvm::orc::JITDylibSearchList = typedef std::vector<std::pair<JITDylib *, bool> >

A list of (JITDylib*, bool) pairs.

Definition at line 58 of file Core.h.

◆ MaterializationUnitList

using llvm::orc::MaterializationUnitList = typedef std::vector<std::unique_ptr<MaterializationUnit> >

Definition at line 301 of file Core.h.

◆ RegisterDependenciesFunction

Callback to register the dependencies for a given query.

Definition at line 99 of file Core.h.

◆ SymbolAliasMap

A map of Symbols to (Symbol, Flags) pairs.

Definition at line 347 of file Core.h.

◆ SymbolDependenceMap

A base class for materialization failures that allows the failing symbols to be obtained for logging.

Definition at line 55 of file Core.h.

◆ SymbolFlagsMap

A map from symbol names (as SymbolStringPtrs) to JITSymbolFlags.

Definition at line 51 of file Core.h.

◆ SymbolMap

A map from symbol names (as SymbolStringPtrs) to JITSymbols (address/flags pairs).

Definition at line 48 of file Core.h.

◆ SymbolNameSet

A set of symbol names (represented by SymbolStringPtrs for.

Definition at line 44 of file Core.h.

◆ SymbolsReadyCallback

Callback to notify client that symbols are ready for execution.

Definition at line 95 of file Core.h.

◆ SymbolsResolvedCallback

Callback to notify client that symbols have been resolved.

Definition at line 92 of file Core.h.

◆ VModuleKey

using llvm::orc::VModuleKey = typedef uint64_t

VModuleKey provides a unique identifier (allocated and managed by ExecutionSessions) for a module added to the JIT.

Definition at line 40 of file Core.h.

Enumeration Type Documentation

◆ OrcErrorCode

enum llvm::orc::OrcErrorCode : int
strong
Enumerator
UnknownORCError 
DuplicateDefinition 
JITSymbolNotFound 
RemoteAllocatorDoesNotExist 
RemoteAllocatorIdAlreadyInUse 
RemoteMProtectAddrUnrecognized 
RemoteIndirectStubsOwnerDoesNotExist 
RemoteIndirectStubsOwnerIdAlreadyInUse 
RPCConnectionClosed 
RPCCouldNotNegotiateFunction 
RPCResponseAbandoned 
UnexpectedRPCCall 
UnexpectedRPCResponse 
UnknownErrorCodeFromRemote 
UnknownResourceHandle 

Definition at line 23 of file OrcError.h.

Function Documentation

◆ absoluteSymbols()

std::unique_ptr<AbsoluteSymbolsMaterializationUnit> llvm::orc::absoluteSymbols ( SymbolMap  Symbols,
VModuleKey  K = VModuleKey() 
)
inline

Create an AbsoluteSymbolsMaterializationUnit with the given symbols.

Useful for inserting absolute symbols into a JITDylib. E.g.:

JITDylib &JD = ...;
SymbolStringPtr Foo = ...;
JITEvaluatedSymbol FooSym = ...;
if (auto Err = JD.define(absoluteSymbols({{Foo, FooSym}})))
return Err;

Definition at line 332 of file Core.h.

Referenced by llvm::orc::LLJIT::defineAbsolute(), llvm::orc::LocalCXXRuntimeOverrides::enable(), and llvm::orc::DynamicLibrarySearchGenerator::operator()().

◆ buildSimpleReexportsAliasMap()

Expected< SymbolAliasMap > llvm::orc::buildSimpleReexportsAliasMap ( JITDylib SourceJD,
const SymbolNameSet Symbols 
)

Build a SymbolAliasMap for the common case where you want to re-export symbols from another JITDylib with the same linkage/flags.

Definition at line 687 of file Core.cpp.

References assert(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::erase(), llvm::orc::JITDylib::lookupFlags(), Name, and llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::size().

Referenced by reexports().

◆ cloneFunctionDecl()

Function * llvm::orc::cloneFunctionDecl ( Module Dst,
const Function F,
ValueToValueMapTy VMap = nullptr 
)

Clone a function declaration into a new module.

This function can be used as the first step towards creating a callback stub (see makeStub), or moving a function body (see moveFunctionBody).

If the VMap argument is non-null, a mapping will be added between F and the new declaration, and between each of F's arguments and the new declaration's arguments. This map can then be passed in to moveFunction to move the function body if required. Note: When moving functions between modules with these utilities, all decls should be cloned (and added to a single VMap) before any bodies are moved. This will ensure that references between functions all refer to the versions in the new module.

Definition at line 284 of file IndirectionUtils.cpp.

References llvm::Function::arg_begin(), llvm::Function::arg_end(), llvm::Function::copyAttributesFrom(), llvm::Function::Create(), F(), llvm::GlobalValue::getLinkage(), llvm::Value::getName(), and llvm::GlobalValue::getValueType().

Referenced by extractSubModule().

◆ cloneGlobalAliasDecl()

GlobalAlias * llvm::orc::cloneGlobalAliasDecl ( Module Dst,
const GlobalAlias OrigA,
ValueToValueMapTy VMap 
)

◆ cloneGlobalVariableDecl()

GlobalVariable * llvm::orc::cloneGlobalVariableDecl ( Module Dst,
const GlobalVariable GV,
ValueToValueMapTy VMap = nullptr 
)

◆ cloneModuleFlagsMetadata()

void llvm::orc::cloneModuleFlagsMetadata ( Module Dst,
const Module Src,
ValueToValueMapTy VMap 
)

Clone module flags metadata into the destination module.

Definition at line 362 of file IndirectionUtils.cpp.

References llvm::Module::addModuleFlag(), llvm::Module::getModuleFlagsMetadata(), and llvm::MapMetadata().

◆ cloneToNewContext()

ThreadSafeModule llvm::orc::cloneToNewContext ( ThreadSafeModule TSMW,
GVPredicate  ShouldCloneDef = GVPredicate(),
GVModifier  UpdateClonedDefSource = GVModifier() 
)

◆ createImplPointer()

GlobalVariable * llvm::orc::createImplPointer ( PointerType PT,
Module M,
const Twine Name,
Constant Initializer 
)

Create a function pointer with the given type, name, and initializer in the given Module.

Definition at line 226 of file IndirectionUtils.cpp.

References llvm::GlobalValue::ExternalLinkage, llvm::GlobalValue::HiddenVisibility, and llvm::GlobalValue::NotThreadLocal.

◆ createIRTypedAddress()

Constant * llvm::orc::createIRTypedAddress ( FunctionType FT,
JITTargetAddress  Addr 
)

Build a function pointer of FunctionType with the given constant address.

Usage example: Turn a trampoline address into a function pointer constant for use in a stub.

Definition at line 217 of file IndirectionUtils.cpp.

References llvm::ConstantInt::get(), llvm::PointerType::get(), llvm::ConstantExpr::getCast(), llvm::Type::getContext(), and llvm::Type::getInt64Ty().

◆ createLambdaResolver()

template<typename DylibLookupFtorT , typename ExternalLookupFtorT >
std::shared_ptr<LambdaResolver<DylibLookupFtorT, ExternalLookupFtorT> > llvm::orc::createLambdaResolver ( DylibLookupFtorT  DylibLookupFtor,
ExternalLookupFtorT  ExternalLookupFtor 
)

◆ createLegacyLookupResolver()

template<typename LegacyLookupFn >
std::shared_ptr<LegacyLookupFnResolver<LegacyLookupFn> > llvm::orc::createLegacyLookupResolver ( ExecutionSession ES,
LegacyLookupFn  LegacyLookup,
std::function< void(Error)>  ErrorReporter 
)

Definition at line 210 of file Legacy.h.

◆ createLocalCompileCallbackManager()

Expected< std::unique_ptr< JITCompileCallbackManager > > llvm::orc::createLocalCompileCallbackManager ( const Triple T,
ExecutionSession ES,
JITTargetAddress  ErrorHandlerAddress 
)

Create a local compile callback manager.

The given target triple will determine the ABI, and the given ErrorHandlerAddress will be used by the resulting compile callback manager if a compile callback fails.

Definition at line 116 of file IndirectionUtils.cpp.

References llvm::Triple::aarch64, llvm::Triple::getArch(), llvm::Triple::getOS(), llvm::inconvertibleErrorCode(), llvm::Triple::mips, llvm::Triple::mips64, llvm::Triple::mips64el, llvm::Triple::mipsel, llvm::Triple::str(), llvm::Triple::x86, and llvm::Triple::x86_64.

Referenced by llvm::OrcCBindingsStack::UnregisterJITEventListener().

◆ createLocalIndirectStubsManagerBuilder()

std::function< std::unique_ptr< IndirectStubsManager >)> llvm::orc::createLocalIndirectStubsManagerBuilder ( const Triple T)

◆ createLocalLazyCallThroughManager()

Expected< std::unique_ptr< LazyCallThroughManager > > llvm::orc::createLocalLazyCallThroughManager ( const Triple T,
ExecutionSession ES,
JITTargetAddress  ErrorHandlerAddr 
)

◆ createSymbolResolver()

template<typename GetResponsibilitySetFn , typename LookupFn >
std::unique_ptr<LambdaSymbolResolver< typename std::remove_cv< typename std::remove_reference<GetResponsibilitySetFn>::type>::type, typename std::remove_cv< typename std::remove_reference<LookupFn>::type>::type> > llvm::orc::createSymbolResolver ( GetResponsibilitySetFn &&  GetResponsibilitySet,
LookupFn &&  Lookup 
)

Creates a SymbolResolver implementation from the pair of supplied function objects.

Definition at line 81 of file Legacy.h.

References Lookup().

◆ getConstructors()

iterator_range< CtorDtorIterator > llvm::orc::getConstructors ( const Module M)

◆ getDestructors()

iterator_range< CtorDtorIterator > llvm::orc::getDestructors ( const Module M)

◆ getObjectSymbolFlags()

Expected< SymbolFlagsMap > llvm::orc::getObjectSymbolFlags ( ExecutionSession ES,
MemoryBufferRef  ObjBuffer 
)

Returns a SymbolFlagsMap for the object file represented by the given buffer, or an error if the buffer does not contain a valid object file.

Definition at line 155 of file Layer.cpp.

References llvm::object::ObjectFile::createObjectFile(), llvm::JITSymbolFlags::fromObjectSymbol(), llvm::orc::ExecutionSession::intern(), llvm::object::BasicSymbolRef::SF_Global, llvm::object::BasicSymbolRef::SF_Undefined, and llvm::orc::MaterializationUnit::SymbolFlags.

Referenced by llvm::orc::BasicObjectLayerMaterializationUnit::Create().

◆ getResponsibilitySetWithLegacyFn()

template<typename FindSymbolFn >
Expected<SymbolNameSet> llvm::orc::getResponsibilitySetWithLegacyFn ( const SymbolNameSet Symbols,
FindSymbolFn  FindSymbol 
)

Use the given legacy-style FindSymbol function (i.e.

a function that takes a const std::string& or StringRef and returns a JITSymbol) to get the subset of symbols that the caller is responsible for materializing. If any JITSymbol returned by FindSymbol is in an error state the function returns immediately with that error.

Useful for implementing getResponsibilitySet bodies that query legacy resolvers.

Definition at line 118 of file Legacy.h.

References llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert().

Referenced by llvm::orc::LegacyLookupFnResolver< LegacyLookupFn >::getResponsibilitySet().

◆ lazyReexports()

std::unique_ptr<LazyReexportsMaterializationUnit> llvm::orc::lazyReexports ( LazyCallThroughManager LCTManager,
IndirectStubsManager ISManager,
JITDylib SourceJD,
SymbolAliasMap  CallableAliases,
VModuleKey  K = VModuleKey() 
)
inline

Define lazy-reexports based on the given SymbolAliasMap.

Each lazy re-export is a callable symbol that will look up and dispatch to the given aliasee on first call. All subsequent calls will go directly to the aliasee.

Definition at line 184 of file LazyReexports.h.

Referenced by llvm::orc::LazyReexportsMaterializationUnit::getName().

◆ lookupWithLegacyFn()

template<typename FindSymbolFn >
SymbolNameSet llvm::orc::lookupWithLegacyFn ( ExecutionSession ES,
AsynchronousSymbolQuery Query,
const SymbolNameSet Symbols,
FindSymbolFn  FindSymbol 
)

Use the given legacy-style FindSymbol function (i.e.

a function that takes a const std::string& or StringRef and returns a JITSymbol) to find the address and flags for each symbol in Symbols and store the result in Query. If any JITSymbol returned by FindSymbol is in an error then Query.notifyFailed(...) is called with that error and the function returns immediately. On success, returns the set of symbols not found.

Useful for implementing lookup bodies that query legacy resolvers.

Definition at line 144 of file Legacy.h.

References llvm::orc::ExecutionSession::legacyFailQuery(), llvm::orc::AsynchronousSymbolQuery::notifySymbolReady(), and llvm::orc::AsynchronousSymbolQuery::resolve().

Referenced by llvm::orc::LegacyLookupFnResolver< LegacyLookupFn >::lookup().

◆ makeStub()

void llvm::orc::makeStub ( Function F,
Value ImplPointer 
)

◆ moveFunctionBody()

void llvm::orc::moveFunctionBody ( Function OrigF,
ValueToValueMapTy VMap,
ValueMaterializer Materializer = nullptr,
Function NewF = nullptr 
)

Move the body of function 'F' to a cloned function declaration in a different module (See related cloneFunctionDecl).

If the target function declaration is not supplied via the NewF parameter then it will be looked up via the VMap.

This will delete the body of function 'F' from its original parent module, but leave its declaration.

Definition at line 302 of file IndirectionUtils.cpp.

References assert(), llvm::CloneFunctionInto(), llvm::Function::deleteBody(), llvm::GlobalValue::getParent(), and llvm::GlobalValue::isDeclaration().

◆ moveGlobalVariableInitializer()

void llvm::orc::moveGlobalVariableInitializer ( GlobalVariable OrigGV,
ValueToValueMapTy VMap,
ValueMaterializer Materializer = nullptr,
GlobalVariable NewGV = nullptr 
)

Move global variable GV from its parent module to cloned global declaration in a different module.

If the target global declaration is not supplied via the NewGV parameter then it will be looked up via the VMap.

This will delete the initializer of GV from its original parent module, but leave its declaration.

Definition at line 333 of file IndirectionUtils.cpp.

References assert(), llvm::GlobalVariable::getInitializer(), llvm::GlobalValue::getParent(), llvm::GlobalVariable::hasInitializer(), llvm::MapValue(), llvm::RF_None, and llvm::GlobalVariable::setInitializer().

◆ operator!=()

bool llvm::orc::operator!= ( const SymbolStringPtr LHS,
const SymbolStringPtr RHS 
)
inline

Definition at line 111 of file SymbolStringPool.h.

◆ operator<()

bool llvm::orc::operator< ( const SymbolStringPtr LHS,
const SymbolStringPtr RHS 
)
inline

Definition at line 115 of file SymbolStringPool.h.

◆ operator<<() [1/11]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const SymbolStringPtr Sym 
)

Render a SymbolStringPtr.

Definition at line 148 of file Core.cpp.

◆ operator<<() [2/11]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const SymbolNameSet Symbols 
)

Render a SymbolNameSet.

Definition at line 152 of file Core.cpp.

◆ operator<<() [3/11]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const SymbolFlagsMap::value_type KV 
)

Render a SymbolFlagsMap entry.

Definition at line 177 of file Core.cpp.

◆ operator<<() [4/11]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const SymbolMap::value_type KV 
)

Render a SymbolMap entry.

Definition at line 181 of file Core.cpp.

◆ operator<<() [5/11]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const SymbolFlagsMap SymbolFlags 
)

Render a SymbolFlagsMap.

Definition at line 185 of file Core.cpp.

◆ operator<<() [6/11]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const SymbolMap Symbols 
)

Render a SymbolMap.

Render a SymbolDependendeMap.

Definition at line 189 of file Core.cpp.

◆ operator<<() [7/11]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const SymbolDependenceMap::value_type KV 
)

Render a SymbolDependenceMap entry.

Definition at line 193 of file Core.cpp.

References llvm::operator<<().

◆ operator<<() [8/11]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const MaterializationUnit MU 
)

◆ operator<<() [9/11]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const JITDylibSearchList JDs 
)

Render a JITDylibSearchList.

Definition at line 209 of file Core.cpp.

References assert(), and llvm::make_range().

◆ operator<<() [10/11]

raw_ostream& llvm::orc::operator<< ( raw_ostream OS,
const JITSymbolFlags Flags 
)

◆ operator<<() [11/11]

raw_ostream& llvm::orc::operator<< ( raw_ostream OS,
const JITEvaluatedSymbol Sym 
)

◆ operator==()

bool llvm::orc::operator== ( const SymbolStringPtr LHS,
const SymbolStringPtr RHS 
)
inline

Definition at line 107 of file SymbolStringPool.h.

◆ orcError()

std::error_code llvm::orc::orcError ( OrcErrorCode  ErrCode)

◆ reexports()

std::unique_ptr<ReExportsMaterializationUnit> llvm::orc::reexports ( JITDylib SourceJD,
SymbolAliasMap  Aliases,
bool  MatchNonExported = false,
VModuleKey  K = VModuleKey() 
)
inline

Create a materialization unit for re-exporting symbols from another JITDylib with alternative names/flags.

If MatchNonExported is true then non-exported symbols from SourceJD can be re-exported. If it is false, attempts to re-export a non-exported symbol will result in a "symbol not found" error.

Definition at line 399 of file Core.h.

References buildSimpleReexportsAliasMap().

Referenced by llvm::orc::ReExportsMaterializationUnit::getName(), and llvm::orc::ReexportsGenerator::operator()().

◆ symbolAliases()

std::unique_ptr<ReExportsMaterializationUnit> llvm::orc::symbolAliases ( SymbolAliasMap  Aliases,
VModuleKey  K = VModuleKey() 
)
inline

Create a ReExportsMaterializationUnit with the given aliases.

Useful for defining symbol aliases.: E.g., given a JITDylib JD containing symbols "foo" and "bar", we can define aliases "baz" (for "foo") and "qux" (for "bar") with:

SymbolStringPtr Baz = ...;
SymbolStringPtr Qux = ...;
if (auto Err = JD.define(symbolAliases({
{Baz, { Foo, JITSymbolFlags::Exported }},
{Qux, { Bar, JITSymbolFlags::Weak }}}))
return Err;

Definition at line 388 of file Core.h.

Referenced by llvm::orc::ReExportsMaterializationUnit::getName().

Variable Documentation

◆ NoDependenciesToRegister

RegisterDependenciesFunction llvm::orc::NoDependenciesToRegister
Initial value:
=
std::function< void(const SymbolDependenceMap &)> RegisterDependenciesFunction
Callback to register the dependencies for a given query.
Definition: Core.h:99

This can be used as the value for a RegisterDependenciesFunction if there are no dependants to register with.

Definition at line 143 of file Core.cpp.

Referenced by llvm::orc::LazyCallThroughManager::callThroughToSymbol(), and llvm::orc::CtorDtorRunner::run().