LLVM 19.0.0git
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
llvm::orc Namespace Reference

Namespaces

namespace  detail
 
namespace  rt
 
namespace  rt_bootstrap
 
namespace  shared
 
namespace  SimpleRemoteEPCDefaultBootstrapSymbolNames
 
namespace  tpctypes
 

Classes

class  AbsoluteSymbolsMaterializationUnit
 A MaterializationUnit implementation for pre-existing absolute symbols. More...
 
class  AllocGroup
 A pair of memory protections and allocation policies. More...
 
class  AllocGroupSmallMap
 A specialized small-map for AllocGroups. 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  BlockFreqQuery
 
class  CAPIDefinitionGenerator
 
class  COFFPlatform
 Mediates between COFF initialization and ExecutionSession state. More...
 
class  COFFVCRuntimeBootstrapper
 Bootstraps the vc runtime within jitdylibs. 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  DebugInfoPreservationPlugin
 
class  DebugObject
 The plugin creates a debug object from when JITLink starts processing the corresponding LinkGraph. More...
 
class  DebugObjectManagerPlugin
 Creates and manages DebugObjects for JITLink artifacts. More...
 
class  DebugObjectRegistrar
 Abstract interface for registering debug objects in the executor process. More...
 
class  DebugObjectSection
 
class  DefinitionGenerator
 Definition generators can be attached to JITDylibs to generate new definitions for otherwise unresolved symbols during lookup. More...
 
class  DLLImportDefinitionGenerator
 A utility class to create COFF dllimport GOT symbols (__imp_*) and PLT stubs. More...
 
class  DumpObjects
 A function object that can be used as an ObjectTransformLayer transform to dump object files to disk at a specified path. More...
 
class  DuplicateDefinition
 
class  DynamicLibrarySearchGenerator
 A utility class to expose symbols found via dlsym to the JIT. More...
 
class  EHFrameRegistrationPlugin
 
class  ELFDebugObject
 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. More...
 
class  ELFDebugObjectSection
 
class  ELFNixJITDylibDeinitializers
 
struct  ELFNixJITDylibInitializers
 
class  ELFNixPlatform
 Mediates between ELFNix initialization and ExecutionSession state. More...
 
struct  ELFPerObjectSectionsToRegister
 
class  EPCDebugObjectRegistrar
 Use ExecutorProcessControl to register debug objects locally or in a remote executor process. More...
 
class  EPCDynamicLibrarySearchGenerator
 
class  EPCEHFrameRegistrar
 Register/Deregisters EH frames in a remote process via a ExecutorProcessControl instance. More...
 
class  EPCGenericDylibManager
 
class  EPCGenericJITLinkMemoryManager
 
class  EPCGenericMemoryAccess
 
class  EPCGenericRTDyldMemoryManager
 Remote-mapped RuntimeDyld-compatible memory manager. More...
 
class  EPCIndirectionUtils
 Provides ExecutorProcessControl based indirect stubs, trampoline pool and lazy call through manager. More...
 
class  EPCIndirectionUtilsAccess
 
class  ExecutionSession
 An ExecutionSession represents a running JIT program. More...
 
class  ExecutorAddr
 Represents an address in the executor process. More...
 
struct  ExecutorAddrRange
 Represents an address range in the exceutor process. More...
 
class  ExecutorBootstrapService
 
class  ExecutorNativePlatform
 Configure the LLJIT instance to use the ORC runtime and the detected native target for the executor. More...
 
class  ExecutorProcessControl
 ExecutorProcessControl supports interaction with a JIT target process. More...
 
class  ExecutorSymbolDef
 Represents a defining location for a JIT symbol. More...
 
class  FailedToMaterialize
 Used to notify a JITDylib that the given set of symbols failed to materialize. More...
 
class  FDSimpleRemoteEPCTransport
 Uses read/write on FileDescriptors for transport. More...
 
class  GDBJITDebugInfoRegistrationPlugin
 For each object containing debug info, installs JITLink passes to synthesize a debug object and then register it via the GDB JIT-registration interface. More...
 
class  GenericNamedTask
 Base class for generic tasks. More...
 
class  GenericNamedTaskImpl
 Generic task implementation. More...
 
class  ImplSymbolMap
 
struct  IndirectStubsAllocationSizes
 
class  IndirectStubsManager
 Base class for managing collections of named indirect stubs. More...
 
class  InPlaceTaskDispatcher
 Runs all tasks on the current thread. More...
 
class  InProcessMemoryAccess
 
class  InProcessMemoryMapper
 
class  InProgressFullLookupState
 
class  InProgressLookupFlagsState
 
class  InProgressLookupState
 
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  IRSpeculationLayer
 
class  IRSymbolMapper
 Maps IR global values to their linker symbol names / flags. More...
 
class  IRTransformLayer
 A layer that applies a transform to emitted modules. More...
 
class  ItaniumCXAAtExitSupport
 An interface for Itanium __cxa_atexit interposer implementations. More...
 
class  JITCompileCallbackManager
 Target-independent base class for compile callback management. More...
 
class  JITDylib
 Represents a JIT'd dynamic library. More...
 
class  JITSymbolNotFound
 
class  JITTargetMachineBuilder
 A utility class for building TargetMachines for JITs. More...
 
class  JITTargetMachineBuilderPrinter
 
class  LazyCallThroughManager
 Manages a set of 'lazy call-through' trampolines. More...
 
class  LazyReexportsMaterializationUnit
 A materialization unit that builds lazy re-exports. More...
 
class  LLJIT
 A pre-fabricated ORC JIT stack that can serve as an alternative to MCJIT. More...
 
class  LLJITBuilder
 Constructs LLJIT instances. More...
 
class  LLJITBuilderSetters
 
class  LLJITBuilderState
 
class  LLLazyJIT
 An extended version of LLJIT that supports lazy function-at-a-time compilation of LLVM IR. More...
 
class  LLLazyJITBuilder
 Constructs LLLazyJIT instances. More...
 
class  LLLazyJITBuilderSetters
 
class  LLLazyJITBuilderState
 
class  LoadAndLinkDynLibrary
 
class  LocalCXXRuntimeOverrides
 
class  LocalCXXRuntimeOverridesBase
 Support class for static dtor execution. More...
 
class  LocalIndirectStubsInfo
 
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  LookupState
 Wraps state for a lookup-in-progress. More...
 
class  LookupTask
 Lookups are usually run on the current thread, but in some cases they may be run as tasks, e.g. More...
 
struct  MachO64LE
 
class  MachOBuilder
 
struct  MachOBuilderLoadCommand
 
struct  MachOBuilderLoadCommand< MachO::LC_ID_DYLIB >
 
struct  MachOBuilderLoadCommand< MachO::LC_LOAD_DYLIB >
 
struct  MachOBuilderLoadCommand< MachO::LC_RPATH >
 
struct  MachOBuilderLoadCommandBase
 Base type for MachOBuilder load command wrappers. More...
 
struct  MachOBuilderLoadCommandImplBase
 MachOBuilder load command wrapper type. More...
 
struct  MachOHeaderInfo
 
class  MachOPlatform
 Mediates between MachO initialization and ExecutionSession state. More...
 
class  MangleAndInterner
 Mangles symbol names then uniques them in the context of an ExecutionSession. More...
 
class  MapperJITLinkMemoryManager
 
class  MaterializationResponsibility
 Tracks responsibility for materialization, and mediates interactions between MaterializationUnits and JDs. More...
 
class  MaterializationTask
 A materialization task. 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  MemoryMapper
 Manages mapping, content transfer and protections for JIT memory. More...
 
class  MissingSymbolDefinitions
 Errors of this type should be returned if a module fails to include definitions that are claimed by the module's associated MaterializationResponsibility. More...
 
class  NonOwningSymbolStringPtr
 Non-owning SymbolStringPool entry pointer. More...
 
class  ObjectLayer
 Interface for Layers that accept object files. More...
 
class  ObjectLinkingLayer
 An ObjectLayer implementation built on JITLink. More...
 
class  ObjectLinkingLayerJITLinkContext
 
class  ObjectTransformLayer
 
class  OrcAArch64
 
class  OrcGenericABI
 Generic ORC ABI support. More...
 
class  OrcI386
 I386 support. More...
 
class  OrcLoongArch64
 
class  OrcMips32_Base
 
class  OrcMips32Be
 
class  OrcMips32Le
 
class  OrcMips64
 
class  ORCPlatformSupport
 A Platform-support class that implements initialize / deinitialize by forwarding to ORC runtime dlopen / dlclose operations. More...
 
class  OrcRiscv64
 
class  OrcV2CAPIHelper
 
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
 
struct  PerfJITCodeLoadRecord
 
struct  PerfJITCodeUnwindingInfoRecord
 
struct  PerfJITDebugEntry
 
struct  PerfJITDebugInfoRecord
 
struct  PerfJITRecordBatch
 
struct  PerfJITRecordPrefix
 
class  PerfSupportPlugin
 Log perf jitdump events for each object (see https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/tools/perf/Documentation/jitdump-specification.txt). More...
 
class  Platform
 Platforms set up standard symbols and mediate interactions between dynamic initializers (e.g. More...
 
class  ReexportsGenerator
 ReexportsGenerator can be used with JITDylib::addGenerator 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...
 
struct  RemoteSymbolLookup
 
struct  RemoteSymbolLookupSetElement
 
class  ResourceManager
 Listens for ResourceTracker operations. More...
 
class  ResourceTracker
 API to remove / transfer ownership of JIT resources. More...
 
class  ResourceTrackerDefunct
 
class  RTDyldObjectLinkingLayer
 
class  SectCreateMaterializationUnit
 
class  SelfExecutorProcessControl
 A ExecutorProcessControl implementation targeting the current process. More...
 
class  SequenceBBQuery
 
class  SharedMemoryMapper
 
class  SimpleCompiler
 Simple compile functor: Takes a single IR module and returns an ObjectFile. More...
 
class  SimpleMachOHeaderMU
 
class  SimpleRemoteEPC
 
struct  SimpleRemoteEPCExecutorInfo
 
class  SimpleRemoteEPCServer
 A simple EPC server implementation. More...
 
class  SimpleRemoteEPCTransport
 
class  SimpleRemoteEPCTransportClient
 
class  SpeculateQuery
 
class  Speculator
 
class  StaticInitGVIterator
 This iterator provides a convenient way to iterate over GlobalValues that have initialization effects. More...
 
class  StaticLibraryDefinitionGenerator
 A utility class to expose symbols from a static library. More...
 
struct  SymbolAliasMapEntry
 
struct  SymbolDependenceGroup
 A set of symbols and the their dependencies. More...
 
class  SymbolLinkagePromoter
 Promotes private symbols to global hidden, and renames to prevent clashes with other promoted symbols. More...
 
class  SymbolLookupSet
 A set of symbols to look up, each associated with a SymbolLookupFlags value. 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  SymbolStringPoolEntryUnsafe
 Provides unsafe access to ownership operations on SymbolStringPtr. More...
 
class  SymbolStringPtr
 Pointer to a pooled string representing a symbol name. More...
 
class  SymbolStringPtrBase
 Base class for both owning and non-owning symbol-string ptrs. More...
 
class  Task
 Represents an abstract task for ORC to run. More...
 
class  TaskDispatcher
 Abstract base for classes that dispatch ORC Tasks. 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  TMOwningSimpleCompiler
 A SimpleCompiler that owns its TargetMachine. More...
 
class  TrampolinePool
 Base class for pools of compiler re-entry trampolines. More...
 
class  UnexpectedSymbolDefinitions
 Errors of this type should be returned if a module contains definitions for symbols that are not claimed by the module's associated MaterializationResponsibility. More...
 
class  UnsatisfiedSymbolDependencies
 Used to report failure due to unsatisfiable symbol dependencies. More...
 
class  UnsupportedExecutorProcessControl
 A ExecutorProcessControl instance that asserts if any of its methods are used. More...
 
struct  VTuneMethodBatch
 
struct  VTuneMethodInfo
 
class  VTuneSupportPlugin
 

Typedefs

using ResourceTrackerSP = IntrusiveRefCntPtr< ResourceTracker >
 
using JITDylibSP = IntrusiveRefCntPtr< JITDylib >
 
using ResourceKey = uintptr_t
 
using SymbolNameSet = DenseSet< SymbolStringPtr >
 A set of symbol names (represented by SymbolStringPtrs for.
 
using SymbolNameVector = std::vector< SymbolStringPtr >
 A vector of symbol names.
 
using SymbolMap = DenseMap< SymbolStringPtr, ExecutorSymbolDef >
 A map from symbol names (as SymbolStringPtrs) to JITSymbols (address/flags pairs).
 
using SymbolFlagsMap = DenseMap< SymbolStringPtr, JITSymbolFlags >
 A map from symbol names (as SymbolStringPtrs) to JITSymbolFlags.
 
using SymbolDependenceMap = DenseMap< JITDylib *, SymbolNameSet >
 A map from JITDylibs to sets of symbols.
 
using JITDylibSearchOrder = std::vector< std::pair< JITDylib *, JITDylibLookupFlags > >
 A list of (JITDylib*, JITDylibLookupFlags) pairs to be used as a search order during symbol lookup.
 
using SymbolAliasMap = DenseMap< SymbolStringPtr, SymbolAliasMapEntry >
 A map of Symbols to (Symbol, Flags) pairs.
 
using SymbolsResolvedCallback = unique_function< void(Expected< SymbolMap >)>
 Callback to notify client that symbols have been resolved.
 
using RegisterDependenciesFunction = std::function< void(const SymbolDependenceMap &)>
 Callback to register the dependencies for a given query.
 
using ELFNixJITDylibInitializerSequence = std::vector< ELFNixJITDylibInitializers >
 
using ELFNixJITDylibDeinitializerSequence = std::vector< ELFNixJITDylibDeinitializers >
 
using ExecutorAddrDiff = uint64_t
 
using SimpleRemoteEPCArgBytesVector = SmallVector< char, 128 >
 
using RemoteSymbolLookupSet = std::vector< RemoteSymbolLookupSetElement >
 
using VTuneLineTable = std::vector< std::pair< unsigned, unsigned > >
 
using VTuneMethodTable = std::vector< VTuneMethodInfo >
 
using VTuneStringTable = std::vector< std::string >
 
using VTuneUnloadedMethodIDs = SmallVector< std::pair< uint64_t, uint64_t > >
 
using GVPredicate = std::function< bool(const GlobalValue &)>
 
using GVModifier = std::function< void(GlobalValue &)>
 
using BaseT = RTTIExtends< ObjectLinkingLayer, ObjectLayer >
 

Enumerations

enum class  JITDylibLookupFlags { MatchExportedSymbolsOnly , MatchAllSymbols }
 Lookup flags that apply to each dylib in the search order for a lookup. More...
 
enum class  SymbolLookupFlags { RequiredSymbol , WeaklyReferencedSymbol }
 Lookup flags that apply to each symbol in a lookup. More...
 
enum class  LookupKind { Static , DLSym }
 Describes the kind of lookup being performed. More...
 
enum class  SymbolState : uint8_t {
  Invalid , NeverSearched , Materializing , Resolved ,
  Emitted , Ready = 0x3f
}
 Represents the state that a symbol has reached during materialization. More...
 
enum class  MemProt { None = 0 , Read = 1U << 0 , Write = 1U << 1 , Exec = 1U << 2 }
 Describes Read/Write/Exec permissions for memory. More...
 
enum class  MemLifetime { Standard , Finalize , NoAlloc }
 Describes a memory lifetime policy for memory to be allocated by a JITLinkMemoryManager. More...
 
enum class  OrcErrorCode : int {
  UnknownORCError = 1 , DuplicateDefinition , JITSymbolNotFound , RemoteAllocatorDoesNotExist ,
  RemoteAllocatorIdAlreadyInUse , RemoteMProtectAddrUnrecognized , RemoteIndirectStubsOwnerDoesNotExist , RemoteIndirectStubsOwnerIdAlreadyInUse ,
  RPCConnectionClosed , RPCCouldNotNegotiateFunction , RPCResponseAbandoned , UnexpectedRPCCall ,
  UnexpectedRPCResponse , UnknownErrorCodeFromRemote , UnknownResourceHandle , MissingSymbolDefinitions ,
  UnexpectedSymbolDefinitions
}
 
enum class  PerfJITRecordType {
  JIT_CODE_LOAD = 0 , JIT_CODE_MOVE = 1 , JIT_CODE_DEBUG_INFO = 2 , JIT_CODE_CLOSE = 3 ,
  JIT_CODE_UNWINDING_INFO = 4 , JIT_CODE_MAX
}
 
enum class  SimpleRemoteEPCOpcode : uint8_t {
  Setup , Hangup , Result , CallWrapper ,
  LastOpC = CallWrapper
}
 
enum  DebugObjectFlags : int { ReportFinalSectionLoadAddresses = 1 << 0 , HasDebugSections = 1 << 1 }
 

Functions

IRSymbolMapper::ManglingOptions irManglingOptionsFromTargetOptions (const TargetOptions &Opts)
 
JITDylibSearchOrder makeJITDylibSearchOrder (ArrayRef< JITDylib * > JDs, JITDylibLookupFlags Flags=JITDylibLookupFlags::MatchExportedSymbolsOnly)
 Convenience function for creating a search order from an ArrayRef of JITDylib*, all with the same flags.
 
std::unique_ptr< AbsoluteSymbolsMaterializationUnitabsoluteSymbols (SymbolMap Symbols)
 Create an AbsoluteSymbolsMaterializationUnit with the given symbols.
 
std::unique_ptr< ReExportsMaterializationUnitsymbolAliases (SymbolAliasMap Aliases)
 Create a ReExportsMaterializationUnit with the given aliases.
 
std::unique_ptr< ReExportsMaterializationUnitreexports (JITDylib &SourceJD, SymbolAliasMap Aliases, JITDylibLookupFlags SourceJDLookupFlags=JITDylibLookupFlags::MatchExportedSymbolsOnly)
 Create a materialization unit for re-exporting symbols from another JITDylib with alternative names/flags.
 
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.
 
Error enableDebuggerSupport (LLJIT &J)
 
Error preserveDebugSections (jitlink::LinkGraph &G)
 
Expected< std::pair< std::unique_ptr< DWARFContext >, StringMap< std::unique_ptr< MemoryBuffer > > > > createDWARFContext (jitlink::LinkGraph &G)
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolStringPtr &Sym)
 Render a SymbolStringPtr.
 
raw_ostreamoperator<< (raw_ostream &OS, NonOwningSymbolStringPtr Sym)
 Render a NonOwningSymbolStringPtr.
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolNameSet &Symbols)
 Render a SymbolNameSet.
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolNameVector &Symbols)
 Render a SymbolNameVector.
 
raw_ostreamoperator<< (raw_ostream &OS, ArrayRef< SymbolStringPtr > Symbols)
 Render an array of SymbolStringPtrs.
 
raw_ostreamoperator<< (raw_ostream &OS, const JITSymbolFlags &Flags)
 Render JITSymbolFlags.
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolFlagsMap::value_type &KV)
 Render a SymbolFlagsMap entry.
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolMap::value_type &KV)
 Render a SymbolMap entry.
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolFlagsMap &SymbolFlags)
 Render a SymbolFlagsMap.
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolMap &Symbols)
 Render a SymbolMap.
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolDependenceMap::value_type &KV)
 Render a SymbolDependenceMap entry.
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolDependenceMap &Deps)
 Render a SymbolDependendeMap.
 
raw_ostreamoperator<< (raw_ostream &OS, const MaterializationUnit &MU)
 Render a MaterializationUnit.
 
raw_ostreamoperator<< (raw_ostream &OS, const JITDylibLookupFlags &JDLookupFlags)
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolLookupFlags &LookupFlags)
 Render a SymbolLookupFlags instance.
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolLookupSet::value_type &KV)
 Render a SymbolLookupSet entry.
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolLookupSet &LookupSet)
 Render a SymbolLookupSet.
 
raw_ostreamoperator<< (raw_ostream &OS, const JITDylibSearchOrder &SearchOrder)
 Render a JITDylibSearchOrder.
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolAliasMap &Aliases)
 Render a SymbolAliasMap.
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolState &S)
 Render a SymbolState.
 
raw_ostreamoperator<< (raw_ostream &OS, const LookupKind &K)
 Render a LookupKind.
 
raw_ostreamoperator<< (raw_ostream &OS, const SymbolStringPool &SSP)
 Dump a SymbolStringPool. Useful for debugging dangling-pointer crashes.
 
Expected< std::unique_ptr< EPCDebugObjectRegistrar > > createJITLoaderGDBRegistrar (ExecutionSession &ES, std::optional< ExecutorAddr > RegistrationFunctionDylib=std::nullopt)
 Create a ExecutorProcessControl-based DebugObjectRegistrar that emits debug objects to the GDB JIT interface.
 
Error setUpInProcessLCTMReentryViaEPCIU (EPCIndirectionUtils &EPCIU)
 This will call writeResolver on the given EPCIndirectionUtils instance to set up re-entry via a function that will directly return the trampoline landing address.
 
iterator_range< CtorDtorIteratorgetConstructors (const Module &M)
 Create an iterator range over the entries of the llvm.global_ctors array.
 
iterator_range< CtorDtorIteratorgetDestructors (const Module &M)
 Create an iterator range over the entries of the llvm.global_ctors array.
 
iterator_range< StaticInitGVIteratorgetStaticInitGVs (Module &M)
 Create an iterator range over the GlobalValues that contribute to static initialization.
 
Expected< std::unique_ptr< JITCompileCallbackManager > > createLocalCompileCallbackManager (const Triple &T, ExecutionSession &ES, ExecutorAddr ErrorHandlerAddress)
 Create a local compile callback manager.
 
std::function< std::unique_ptr< IndirectStubsManager >()> createLocalIndirectStubsManagerBuilder (const Triple &T)
 Create a local indirect stubs manager builder.
 
ConstantcreateIRTypedAddress (FunctionType &FT, ExecutorAddr Addr)
 Build a function pointer of FunctionType with the given constant address.
 
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.
 
void makeStub (Function &F, Value &ImplPointer)
 Turn a function declaration into a stub function that makes an indirect call using the given function pointer.
 
FunctioncloneFunctionDecl (Module &Dst, const Function &F, ValueToValueMapTy *VMap=nullptr)
 Clone a function declaration into a new module.
 
GlobalVariablecloneGlobalVariableDecl (Module &Dst, const GlobalVariable &GV, ValueToValueMapTy *VMap=nullptr)
 Clone a global variable declaration into a new module.
 
GlobalAliascloneGlobalAliasDecl (Module &Dst, const GlobalAlias &OrigA, ValueToValueMapTy &VMap)
 Clone a global alias declaration into a new module.
 
Error addFunctionPointerRelocationsToCurrentSymbol (jitlink::Symbol &Sym, jitlink::LinkGraph &G, MCDisassembler &Disassembler, MCInstrAnalysis &MIA)
 Introduce relocations to Sym in its own definition if there are any pointers formed via PC-relative address that do not already have a relocation.
 
Expected< std::unique_ptr< LazyCallThroughManager > > createLocalLazyCallThroughManager (const Triple &T, ExecutionSession &ES, ExecutorAddr ErrorHandlerAddr)
 Create a LocalLazyCallThroughManager from the given triple and execution session.
 
std::unique_ptr< LazyReexportsMaterializationUnitlazyReexports (LazyCallThroughManager &LCTManager, IndirectStubsManager &ISManager, JITDylib &SourceJD, SymbolAliasMap CallableAliases, ImplSymbolMap *SrcJDLoc=nullptr)
 Define lazy-reexports based on the given SymbolAliasMap.
 
Error setUpOrcPlatformManually (LLJIT &J)
 Configure the LLJIT instance to use orc runtime support.
 
Expected< JITDylibSPsetUpGenericLLVMIRPlatform (LLJIT &J)
 Configure the LLJIT instance to scrape modules for llvm.global_ctors and llvm.global_dtors variables and (if present) build initialization and deinitialization functions.
 
Expected< JITDylibSPsetUpInactivePlatform (LLJIT &J)
 Configure the LLJIT instance to disable platform support explicitly.
 
void lookupAndRecordAddrs (unique_function< void(Error)> OnRecorded, ExecutionSession &ES, LookupKind K, const JITDylibSearchOrder &SearchOrder, std::vector< std::pair< SymbolStringPtr, ExecutorAddr * > > Pairs, SymbolLookupFlags LookupFlags=SymbolLookupFlags::RequiredSymbol)
 Record addresses of the given symbols in the given ExecutorAddrs.
 
Error lookupAndRecordAddrs (ExecutionSession &ES, LookupKind K, const JITDylibSearchOrder &SearchOrder, std::vector< std::pair< SymbolStringPtr, ExecutorAddr * > > Pairs, SymbolLookupFlags LookupFlags=SymbolLookupFlags::RequiredSymbol)
 Record addresses of the given symbols in the given ExecutorAddrs.
 
Error lookupAndRecordAddrs (ExecutorProcessControl &EPC, tpctypes::DylibHandle H, std::vector< std::pair< SymbolStringPtr, ExecutorAddr * > > Pairs, SymbolLookupFlags LookupFlags=SymbolLookupFlags::RequiredSymbol)
 Record addresses of given symbols in the given ExecutorAddrs.
 
template<typename MachOStruct >
size_t writeMachOStruct (MutableArrayRef< char > Buf, size_t Offset, MachOStruct S, bool SwapStruct)
 
MachOHeaderInfo getMachOHeaderInfoFromTriple (const Triple &TT)
 
void addInitSymbol (MaterializationUnit::Interface &I, ExecutionSession &ES, StringRef ObjFileName)
 Adds an initializer symbol to the given MU interface.
 
Expected< MaterializationUnit::InterfacegetObjectFileInterface (ExecutionSession &ES, MemoryBufferRef ObjBuffer)
 Returns a MaterializationUnit::Interface for the object file contained in the given buffer, or an error if the buffer does not contain a valid object file.
 
template<typename ORCABI >
IndirectStubsAllocationSizes getIndirectStubsBlockSizes (unsigned MinStubs, unsigned RoundToMultipleOf=0)
 
ExecutorAddrDiff operator- (const ExecutorAddr &LHS, const ExecutorAddr &RHS)
 Subtracting two addresses yields an offset.
 
ExecutorAddr operator+ (const ExecutorAddr &LHS, const ExecutorAddrDiff &RHS)
 Adding an offset and an address yields an address.
 
ExecutorAddr operator+ (const ExecutorAddrDiff &LHS, const ExecutorAddr &RHS)
 Adding an address and an offset yields an address.
 
ExecutorAddr operator- (const ExecutorAddr &LHS, const ExecutorAddrDiff &RHS)
 Subtracting an offset from an address yields an address.
 
ExecutorAddrDiff operator% (const ExecutorAddr &LHS, const ExecutorAddrDiff &RHS)
 Taking the modulus of an address and a diff yields a diff.
 
raw_ostreamoperator<< (raw_ostream &OS, const ExecutorAddr &A)
 
raw_ostreamoperator<< (raw_ostream &OS, const ExecutorAddrRange &R)
 
raw_ostreamoperator<< (raw_ostream &OS, MemProt MP)
 Print a MemProt as an RWX triple.
 
sys::Memory::ProtectionFlags toSysMemoryProtectionFlags (MemProt MP)
 Convert a MemProt value to a corresponding sys::Memory::ProtectionFlags value.
 
MemProt fromSysMemoryProtectionFlags (sys::Memory::ProtectionFlags PF)
 Convert a sys::Memory::ProtectionFlags value to a corresponding MemProt value.
 
raw_ostreamoperator<< (raw_ostream &OS, MemLifetime MLP)
 Print a MemDeallocPolicy.
 
raw_ostreamoperator<< (raw_ostream &OS, AllocGroup AG)
 Print an AllocGroup.
 
bool isMachOInitializerSection (StringRef SegName, StringRef SecName)
 
bool isMachOInitializerSection (StringRef QualifiedName)
 
bool isELFInitializerSection (StringRef SecName)
 
bool isCOFFInitializerSection (StringRef Name)
 
std::error_code orcError (OrcErrorCode ErrCode)
 
Error registerEHFrameSection (const void *EHFrameSectionAddr, size_t EHFrameSectionSize)
 Register frames in the given eh-frame section with libunwind.
 
Error deregisterEHFrameSection (const void *EHFrameSectionAddr, size_t EHFrameSectionSize)
 Unregister frames in the given eh-frame section with libunwind.
 
int runAsMain (int(*Main)(int, char *[]), ArrayRef< std::string > Args, std::optional< StringRef > ProgramName=std::nullopt)
 Run a main function, returning the result.
 
int runAsVoidFunction (int(*Func)(void))
 
int runAsIntFunction (int(*Func)(int), int Arg)
 
template<typename FnT >
std::unique_ptr< GenericNamedTaskmakeGenericNamedTask (FnT &&Fn, std::string Desc)
 Create a generic named task from a std::string description.
 
template<typename FnT >
std::unique_ptr< GenericNamedTaskmakeGenericNamedTask (FnT &&Fn, const char *Desc=nullptr)
 Create a generic named task from a const char * description.
 
ThreadSafeModule cloneToNewContext (const ThreadSafeModule &TSMW, GVPredicate ShouldCloneDef=GVPredicate(), GVModifier UpdateClonedDefSource=GVModifier())
 Clones the given module on to a new context.
 
static void addAliases (ExecutionSession &ES, SymbolAliasMap &Aliases, ArrayRef< std::pair< const char *, const char * > > AL)
 
Expected< SymbolAliasMapbuildSimpleReexportsAliasMap (JITDylib &SourceJD, SymbolNameSet Symbols)
 
static bool isDwarfSection (StringRef SectionName)
 
static Expected< std::unique_ptr< DebugObject > > createDebugObjectFromBuffer (ExecutionSession &ES, LinkGraph &G, JITLinkContext &Ctx, MemoryBufferRef ObjBuffer)
 Creates a debug object based on the input object file from ObjectLinkingLayerJITLinkContext.
 
raw_ostreamoperator<< (raw_ostream &OS, const ExecutorSymbolDef &Sym)
 
static void addAliases (ExecutionSession &ES, SymbolAliasMap &Aliases, ArrayRef< std::pair< const char *, const char * > > AL)
 
static JITTargetAddress reentry (JITTargetAddress LCTMAddr, JITTargetAddress TrampolineAddr)
 
LLVM_ATTRIBUTE_USED void linkComponents ()
 
static void addAliases (ExecutionSession &ES, SymbolAliasMap &Aliases, ArrayRef< std::pair< const char *, const char * > > AL)
 
template<typename MachOTraits >
jitlink::BlockcreateHeaderBlock (MachOPlatform &MOP, const MachOPlatform::HeaderOptions &Opts, JITDylib &JD, jitlink::LinkGraph &G, jitlink::Section &HeaderSection)
 
static Expected< MaterializationUnit::InterfacegetMachOObjectFileSymbolInfo (ExecutionSession &ES, const object::MachOObjectFile &Obj)
 
static Expected< MaterializationUnit::InterfacegetELFObjectFileSymbolInfo (ExecutionSession &ES, const object::ELFObjectFileBase &Obj)
 
static Expected< MaterializationUnit::InterfacegetCOFFObjectFileSymbolInfo (ExecutionSession &ES, const object::COFFObjectFile &Obj)
 
Expected< MaterializationUnit::InterfacegetGenericObjectFileSymbolInfo (ExecutionSession &ES, const object::ObjectFile &Obj)
 
static Error makeUnexpectedEOFError ()
 
static void lookupSymbolsAsyncHelper (EPCGenericDylibManager &DylibMgr, ArrayRef< SimpleRemoteEPC::LookupRequest > Request, std::vector< tpctypes::LookupResult > Result, SimpleRemoteEPC::SymbolLookupCompleteFn Complete)
 Async helper to chain together calls to DylibMgr::lookupAsync to fulfill all all the requests.
 
void __register_frame (const void *)
 
void __deregister_frame (const void *)
 
Error registerFrameWrapper (const void *P)
 
Error deregisterFrameWrapper (const void *P)
 

Variables

RegisterDependenciesFunction NoDependenciesToRegister
 This can be used as the value for a RegisterDependenciesFunction if there are no dependants to register with.
 
StringRef MachODataCommonSectionName = "__DATA,__common"
 
StringRef MachODataDataSectionName = "__DATA,__data"
 
StringRef MachOEHFrameSectionName = "__TEXT,__eh_frame"
 
StringRef MachOCompactUnwindInfoSectionName = "__TEXT,__unwind_info"
 
StringRef MachOCStringSectionName = "__TEXT,__cstring"
 
StringRef MachOModInitFuncSectionName = "__DATA,__mod_init_func"
 
StringRef MachOObjCCatListSectionName = "__DATA,__objc_catlist"
 
StringRef MachOObjCCatList2SectionName = "__DATA,__objc_catlist2"
 
StringRef MachOObjCClassListSectionName = "__DATA,__objc_classlist"
 
StringRef MachOObjCClassNameSectionName = "__TEXT,__objc_classname"
 
StringRef MachOObjCClassRefsSectionName = "__DATA,__objc_classrefs"
 
StringRef MachOObjCConstSectionName = "__DATA,__objc_const"
 
StringRef MachOObjCDataSectionName = "__DATA,__objc_data"
 
StringRef MachOObjCImageInfoSectionName = "__DATA,__objc_imageinfo"
 
StringRef MachOObjCMethNameSectionName = "__TEXT,__objc_methname"
 
StringRef MachOObjCMethTypeSectionName = "__TEXT,__objc_methtype"
 
StringRef MachOObjCNLCatListSectionName = "__DATA,__objc_nlcatlist"
 
StringRef MachOObjCSelRefsSectionName = "__DATA,__objc_selrefs"
 
StringRef MachOSwift5ProtoSectionName = "__TEXT,__swift5_proto"
 
StringRef MachOSwift5ProtosSectionName = "__TEXT,__swift5_protos"
 
StringRef MachOSwift5TypesSectionName = "__TEXT,__swift5_types"
 
StringRef MachOSwift5TypeRefSectionName = "__TEXT,__swift5_typeref"
 
StringRef MachOSwift5FieldMetadataSectionName = "__TEXT,__swift5_fieldmd"
 
StringRef MachOSwift5EntrySectionName = "__TEXT,__swift5_entry"
 
StringRef MachOThreadBSSSectionName = "__DATA,__thread_bss"
 
StringRef MachOThreadDataSectionName = "__DATA,__thread_data"
 
StringRef MachOThreadVarsSectionName = "__DATA,__thread_vars"
 
StringRef MachOInitSectionNames [19]
 
StringRef ELFEHFrameSectionName = ".eh_frame"
 
StringRef ELFInitArrayFuncSectionName = ".init_array"
 
StringRef ELFInitFuncSectionName = ".init"
 
StringRef ELFFiniArrayFuncSectionName = ".fini_array"
 
StringRef ELFFiniFuncSectionName = ".fini"
 
StringRef ELFCtorArrayFuncSectionName = ".ctors"
 
StringRef ELFDtorArrayFuncSectionName = ".dtors"
 
StringRef ELFInitSectionNames [3]
 
StringRef ELFThreadBSSSectionName = ".tbss"
 
StringRef ELFThreadDataSectionName = ".tdata"
 
static const std::set< StringRefDwarfSectionNames
 

Typedef Documentation

◆ BaseT

Definition at line 651 of file ObjectLinkingLayer.cpp.

◆ ELFNixJITDylibDeinitializerSequence

Definition at line 51 of file ELFNixPlatform.h.

◆ ELFNixJITDylibInitializerSequence

Definition at line 48 of file ELFNixPlatform.h.

◆ ExecutorAddrDiff

Definition at line 28 of file ExecutorAddress.h.

◆ GVModifier

using llvm::orc::GVModifier = typedef std::function<void(GlobalValue &)>

Definition at line 170 of file ThreadSafeModule.h.

◆ GVPredicate

using llvm::orc::GVPredicate = typedef std::function<bool(const GlobalValue &)>

Definition at line 169 of file ThreadSafeModule.h.

◆ JITDylibSearchOrder

using llvm::orc::JITDylibSearchOrder = typedef std::vector<std::pair<JITDylib *, JITDylibLookupFlags> >

A list of (JITDylib*, JITDylibLookupFlags) pairs to be used as a search order during symbol lookup.

Definition at line 161 of file Core.h.

◆ JITDylibSP

Definition at line 51 of file Core.h.

◆ RegisterDependenciesFunction

using llvm::orc::RegisterDependenciesFunction = typedef std::function<void(const SymbolDependenceMap &)>

Callback to register the dependencies for a given query.

Definition at line 402 of file Core.h.

◆ RemoteSymbolLookupSet

Definition at line 147 of file SimpleRemoteEPCUtils.h.

◆ ResourceKey

using llvm::orc::ResourceKey = typedef uintptr_t

Definition at line 53 of file Core.h.

◆ ResourceTrackerSP

Definition at line 50 of file Core.h.

◆ SimpleRemoteEPCArgBytesVector

Definition at line 52 of file SimpleRemoteEPCUtils.h.

◆ SymbolAliasMap

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

Definition at line 396 of file Core.h.

◆ SymbolDependenceMap

A map from JITDylibs to sets of symbols.

Definition at line 127 of file Core.h.

◆ SymbolFlagsMap

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

Definition at line 124 of file Core.h.

◆ SymbolMap

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

Definition at line 121 of file Core.h.

◆ SymbolNameSet

A set of symbol names (represented by SymbolStringPtrs for.

Definition at line 114 of file Core.h.

◆ SymbolNameVector

using llvm::orc::SymbolNameVector = typedef std::vector<SymbolStringPtr>

A vector of symbol names.

Definition at line 117 of file Core.h.

◆ SymbolsResolvedCallback

Callback to notify client that symbols have been resolved.

Definition at line 399 of file Core.h.

◆ VTuneLineTable

using llvm::orc::VTuneLineTable = typedef std::vector<std::pair<unsigned, unsigned> >

Definition at line 19 of file VTuneSharedStructs.h.

◆ VTuneMethodTable

using llvm::orc::VTuneMethodTable = typedef std::vector<VTuneMethodInfo>

Definition at line 38 of file VTuneSharedStructs.h.

◆ VTuneStringTable

using llvm::orc::VTuneStringTable = typedef std::vector<std::string>

Definition at line 39 of file VTuneSharedStructs.h.

◆ VTuneUnloadedMethodIDs

Definition at line 46 of file VTuneSharedStructs.h.

Enumeration Type Documentation

◆ DebugObjectFlags

Enumerator
ReportFinalSectionLoadAddresses 
HasDebugSections 

Definition at line 103 of file DebugObjectManagerPlugin.cpp.

◆ JITDylibLookupFlags

enum class llvm::orc::JITDylibLookupFlags
strong

Lookup flags that apply to each dylib in the search order for a lookup.

If MatchHiddenSymbolsOnly is used (the default) for a given dylib, then only symbols in that Dylib's interface will be searched. If MatchHiddenSymbols is used then symbols with hidden visibility will match as well.

Enumerator
MatchExportedSymbolsOnly 
MatchAllSymbols 

Definition at line 135 of file Core.h.

◆ LookupKind

enum class llvm::orc::LookupKind
strong

Describes the kind of lookup being performed.

The lookup kind is passed to symbol generators (if they're invoked) to help them determine what definitions to generate.

Static – Lookup is being performed as-if at static link time (e.g. generators representing static archives should pull in new definitions).

DLSym – Lookup is being performed as-if at runtime (e.g. generators representing static archives should not pull in new definitions).

Enumerator
Static 
DLSym 

Definition at line 157 of file Core.h.

◆ MemLifetime

enum class llvm::orc::MemLifetime
strong

Describes a memory lifetime policy for memory to be allocated by a JITLinkMemoryManager.

All memory allocated by a call to JITLinkMemoryManager::allocate should be deallocated if a call is made to JITLinkMemoryManager::InFlightAllocation::abandon. The policies below apply to finalized allocations.

Enumerator
Standard 

Standard memory should be allocated by the allocator and then deallocated when the deallocate method is called for the finalized allocation.

Finalize 

Finalize memory should be allocated by the allocator, and then be overwritten and deallocated after all finalization functions have been run.

NoAlloc 

NoAlloc memory should not be allocated by the JITLinkMemoryManager at all.

It is used for sections that don't need to be transferred to the executor process, typically metadata sections.

Definition at line 75 of file MemoryFlags.h.

◆ MemProt

enum class llvm::orc::MemProt
strong

Describes Read/Write/Exec permissions for memory.

Enumerator
None 
Read 
Write 
Exec 

Definition at line 27 of file MemoryFlags.h.

◆ OrcErrorCode

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

Definition at line 24 of file OrcError.h.

◆ PerfJITRecordType

enum class llvm::orc::PerfJITRecordType
strong
Enumerator
JIT_CODE_LOAD 
JIT_CODE_MOVE 
JIT_CODE_DEBUG_INFO 
JIT_CODE_CLOSE 
JIT_CODE_UNWINDING_INFO 
JIT_CODE_MAX 

Definition at line 24 of file PerfSharedStructs.h.

◆ SimpleRemoteEPCOpcode

enum class llvm::orc::SimpleRemoteEPCOpcode : uint8_t
strong
Enumerator
Setup 
Hangup 
Result 
CallWrapper 
LastOpC 

Definition at line 37 of file SimpleRemoteEPCUtils.h.

◆ SymbolLookupFlags

enum class llvm::orc::SymbolLookupFlags
strong

Lookup flags that apply to each symbol in a lookup.

If RequiredSymbol is used (the default) for a given symbol then that symbol must be found during the lookup or the lookup will fail returning a SymbolNotFound error. If WeaklyReferencedSymbol is used and the given symbol is not found then the query will continue, and no result for the missing symbol will be present in the result (assuming the rest of the lookup succeeds).

Enumerator
RequiredSymbol 
WeaklyReferencedSymbol 

Definition at line 145 of file Core.h.

◆ SymbolState

enum class llvm::orc::SymbolState : uint8_t
strong

Represents the state that a symbol has reached during materialization.

Enumerator
Invalid 
NeverSearched 

No symbol should be in this state.

Materializing 

Added to the symbol table, never queried.

Resolved 

Queried, materialization begun.

Emitted 

Assigned address, still materializing.

Ready 

Emitted to memory, but waiting on transitive dependencies.

Definition at line 859 of file Core.h.

Function Documentation

◆ __deregister_frame()

void llvm::orc::__deregister_frame ( const void *  )

Referenced by deregisterFrameWrapper().

◆ __register_frame()

void llvm::orc::__register_frame ( const void *  )

Referenced by registerFrameWrapper().

◆ absoluteSymbols()

std::unique_ptr< AbsoluteSymbolsMaterializationUnit > llvm::orc::absoluteSymbols ( SymbolMap  Symbols)
inline

Create an AbsoluteSymbolsMaterializationUnit with the given symbols.

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

JITDylib &JD = ...;
SymbolStringPtr Foo = ...;
ExecutorSymbolDef FooSym = ...;
if (auto Err = JD.define(absoluteSymbols({{Foo, FooSym}})))
return Err;
Represents a defining location for a JIT symbol.
Represents a JIT'd dynamic library.
Definition: Core.h:989
Error define(std::unique_ptr< MaterializationUnitType > &&MU, ResourceTrackerSP RT=nullptr)
Define all symbols provided by the materialization unit to be part of this JITDylib.
Definition: Core.h:1911
Pointer to a pooled string representing a symbol name.
std::unique_ptr< AbsoluteSymbolsMaterializationUnit > absoluteSymbols(SymbolMap Symbols)
Create an AbsoluteSymbolsMaterializationUnit with the given symbols.
Definition: Core.h:791

Definition at line 791 of file Core.h.

Referenced by llvm::orc::Speculator::addSpeculationRuntime(), llvm::orc::MachOPlatform::Create(), llvm::orc::ELFNixPlatform::Create(), llvm::orc::COFFPlatform::Create(), llvm::orc::LocalCXXRuntimeOverrides::enable(), LLVMOrcAbsoluteSymbols(), llvm::orc::EPCDynamicLibrarySearchGenerator::tryToGenerate(), and llvm::orc::DynamicLibrarySearchGenerator::tryToGenerate().

◆ addAliases() [1/3]

static void llvm::orc::addAliases ( ExecutionSession ES,
SymbolAliasMap Aliases,
ArrayRef< std::pair< const char *, const char * > >  AL 
)
static

◆ addAliases() [2/3]

static void llvm::orc::addAliases ( ExecutionSession ES,
SymbolAliasMap Aliases,
ArrayRef< std::pair< const char *, const char * > >  AL 
)
static

◆ addAliases() [3/3]

static void llvm::orc::addAliases ( ExecutionSession ES,
SymbolAliasMap Aliases,
ArrayRef< std::pair< const char *, const char * > >  AL 
)
static

◆ addFunctionPointerRelocationsToCurrentSymbol()

Error llvm::orc::addFunctionPointerRelocationsToCurrentSymbol ( jitlink::Symbol Sym,
jitlink::LinkGraph G,
MCDisassembler Disassembler,
MCInstrAnalysis MIA 
)

Introduce relocations to Sym in its own definition if there are any pointers formed via PC-relative address that do not already have a relocation.

This is useful when introducing indirection via a stub function at link time without compiler support. If a function pointer is formed without a relocation, e.g. in the definition of foo

_foo:
leaq -7(%rip), rax # form pointer to _foo without relocation
_bar:
leaq (%rip), %rax # uses X86_64_RELOC_SIGNED to '_foo'
Given that RA is a live propagate it s liveness to any other values it uses(according to Uses). void DeadArgumentEliminationPass

the pointer to _foo computed by _foo and _bar may differ if we introduce a stub for _foo. If the pointer is used as a key, this may be observable to the program. This pass will attempt to introduce the missing "self-relocation" on the leaq instruction.

This is based on disassembly and should be considered "best effort". It may silently fail to add relocations.

Definition at line 350 of file IndirectionUtils.cpp.

References assert(), B, llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::contains(), Content, llvm::dbgs(), llvm::jitlink::x86_64::Delta32, E, llvm::MCInstrAnalysis::evaluateMemoryOperandAddress(), llvm::formatv(), G, llvm::MCDisassembler::getInstruction(), llvm::MCInstrAnalysis::getMemoryOperandRelocationOffset(), llvm::MCDisassembler::getSubtargetInfo(), I, llvm::inconvertibleErrorCode(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert(), LLVM_DEBUG, llvm::MCDisassembler::Success, llvm::Error::success(), Sym, and llvm::Triple::x86_64.

◆ addInitSymbol()

void llvm::orc::addInitSymbol ( MaterializationUnit::Interface I,
ExecutionSession ES,
StringRef  ObjFileName 
)

Adds an initializer symbol to the given MU interface.

The init symbol's name is guaranteed to be unique within I, and will be of the form $.<ObjFileName>.__inits.<N>, where N is some integer.

Definition at line 26 of file ObjectFileInterface.cpp.

References assert(), I, llvm::orc::ExecutionSession::intern(), and llvm::JITSymbolFlags::MaterializationSideEffectsOnly.

Referenced by getCOFFObjectFileSymbolInfo(), getELFObjectFileSymbolInfo(), and getMachOObjectFileSymbolInfo().

◆ buildSimpleReexportsAliasMap() [1/2]

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.

◆ buildSimpleReexportsAliasMap() [2/2]

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

◆ 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).

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 309 of file IndirectionUtils.cpp.

References llvm::Function::arg_begin(), llvm::Function::copyAttributesFrom(), llvm::Function::Create(), and F.

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 
)

◆ cloneToNewContext()

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

◆ createDebugObjectFromBuffer()

static Expected< std::unique_ptr< DebugObject > > llvm::orc::createDebugObjectFromBuffer ( ExecutionSession ES,
LinkGraph G,
JITLinkContext Ctx,
MemoryBufferRef  ObjBuffer 
)
static

Creates a debug object based on the input object file from ObjectLinkingLayerJITLinkContext.

Definition at line 377 of file DebugObjectManagerPlugin.cpp.

References llvm::orc::ELFDebugObject::Create(), llvm::Triple::ELF, and G.

Referenced by llvm::orc::DebugObjectManagerPlugin::notifyMaterializing().

◆ createDWARFContext()

Expected< std::pair< std::unique_ptr< DWARFContext >, StringMap< std::unique_ptr< MemoryBuffer > > > > llvm::orc::createDWARFContext ( jitlink::LinkGraph G)

◆ createHeaderBlock()

template<typename MachOTraits >
jitlink::Block & llvm::orc::createHeaderBlock ( MachOPlatform MOP,
const MachOPlatform::HeaderOptions Opts,
JITDylib JD,
jitlink::LinkGraph G,
jitlink::Section HeaderSection 
)

◆ 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 251 of file IndirectionUtils.cpp.

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

◆ createIRTypedAddress()

Constant * llvm::orc::createIRTypedAddress ( FunctionType FT,
ExecutorAddr  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 243 of file IndirectionUtils.cpp.

References Addr, llvm::PointerType::get(), llvm::Type::getContext(), llvm::Type::getInt64Ty(), and llvm::ConstantExpr::getIntToPtr().

◆ createJITLoaderGDBRegistrar()

Expected< std::unique_ptr< EPCDebugObjectRegistrar > > llvm::orc::createJITLoaderGDBRegistrar ( ExecutionSession ES,
std::optional< ExecutorAddr RegistrationFunctionDylib = std::nullopt 
)

Create a ExecutorProcessControl-based DebugObjectRegistrar that emits debug objects to the GDB JIT interface.

This will use the EPC's lookupSymbols method to find the registration/deregistration function addresses by name.

If RegistrationFunctionsDylib is non-None then it will be searched to find the registration functions. If it is None then the process dylib will be loaded to find the registration functions.

Definition at line 19 of file EPCDebugObjectRegistrar.cpp.

References llvm::orc::SymbolLookupSet::add(), assert(), D, llvm::orc::ExecutionSession::getExecutorProcessControl(), Result, and llvm::size().

Referenced by enableDebuggerSupport().

◆ createLocalCompileCallbackManager()

Expected< std::unique_ptr< JITCompileCallbackManager > > llvm::orc::createLocalCompileCallbackManager ( const Triple T,
ExecutionSession ES,
ExecutorAddr  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 118 of file IndirectionUtils.cpp.

References llvm::Triple::aarch64, llvm::Triple::aarch64_32, llvm::inconvertibleErrorCode(), llvm::Triple::loongarch64, llvm::Triple::mips, llvm::Triple::mips64, llvm::Triple::mips64el, llvm::Triple::mipsel, llvm::Triple::riscv64, llvm::Triple::Win32, llvm::Triple::x86, and llvm::Triple::x86_64.

◆ 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,
ExecutorAddr  ErrorHandlerAddr 
)

◆ deregisterEHFrameSection()

Error llvm::orc::deregisterEHFrameSection ( const void *  EHFrameSectionAddr,
size_t  EHFrameSectionSize 
)

Unregister frames in the given eh-frame section with libunwind.

Definition at line 147 of file RegisterEHFrames.cpp.

References deregisterFrameWrapper().

Referenced by llvm::jitlink::InProcessEHFrameRegistrar::deregisterEHFrames(), and deregisterEHFrameWrapper().

◆ deregisterFrameWrapper()

Error llvm::orc::deregisterFrameWrapper ( const void *  P)

Definition at line 41 of file RegisterEHFrames.cpp.

References __deregister_frame(), P, and llvm::Error::success().

Referenced by deregisterEHFrameSection().

◆ enableDebuggerSupport()

Error llvm::orc::enableDebuggerSupport ( LLJIT J)

◆ fromSysMemoryProtectionFlags()

MemProt llvm::orc::fromSysMemoryProtectionFlags ( sys::Memory::ProtectionFlags  PF)
inline

Convert a sys::Memory::ProtectionFlags value to a corresponding MemProt value.

Definition at line 57 of file MemoryFlags.h.

References llvm::sys::Memory::MF_EXEC, llvm::sys::Memory::MF_READ, llvm::sys::Memory::MF_WRITE, None, Read, and Write.

◆ getCOFFObjectFileSymbolInfo()

static Expected< MaterializationUnit::Interface > llvm::orc::getCOFFObjectFileSymbolInfo ( ExecutionSession ES,
const object::COFFObjectFile Obj 
)
static

◆ getConstructors()

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

Create an iterator range over the entries of the llvm.global_ctors array.

Definition at line 82 of file ExecutionUtils.cpp.

References llvm::make_range().

◆ getDestructors()

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

Create an iterator range over the entries of the llvm.global_ctors array.

Definition at line 88 of file ExecutionUtils.cpp.

References llvm::make_range().

◆ getELFObjectFileSymbolInfo()

static Expected< MaterializationUnit::Interface > llvm::orc::getELFObjectFileSymbolInfo ( ExecutionSession ES,
const object::ELFObjectFileBase Obj 
)
static

◆ getGenericObjectFileSymbolInfo()

Expected< MaterializationUnit::Interface > llvm::orc::getGenericObjectFileSymbolInfo ( ExecutionSession ES,
const object::ObjectFile Obj 
)

◆ getIndirectStubsBlockSizes()

template<typename ORCABI >
IndirectStubsAllocationSizes llvm::orc::getIndirectStubsBlockSizes ( unsigned  MinStubs,
unsigned  RoundToMultipleOf = 0 
)

Definition at line 37 of file OrcABISupport.h.

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

◆ getMachOHeaderInfoFromTriple()

MachOHeaderInfo llvm::orc::getMachOHeaderInfoFromTriple ( const Triple TT)

◆ getMachOObjectFileSymbolInfo()

static Expected< MaterializationUnit::Interface > llvm::orc::getMachOObjectFileSymbolInfo ( ExecutionSession ES,
const object::MachOObjectFile Obj 
)
static

◆ getObjectFileInterface()

Expected< MaterializationUnit::Interface > llvm::orc::getObjectFileInterface ( ExecutionSession ES,
MemoryBufferRef  ObjBuffer 
)

◆ getStaticInitGVs()

iterator_range< StaticInitGVIterator > llvm::orc::getStaticInitGVs ( Module M)
inline

Create an iterator range over the GlobalValues that contribute to static initialization.

Definition at line 142 of file ExecutionUtils.h.

References llvm::make_range().

Referenced by llvm::orc::IRMaterializationUnit::IRMaterializationUnit().

◆ irManglingOptionsFromTargetOptions()

IRSymbolMapper::ManglingOptions llvm::orc::irManglingOptionsFromTargetOptions ( const TargetOptions Opts)

◆ isCOFFInitializerSection()

bool llvm::orc::isCOFFInitializerSection ( StringRef  Name)

Definition at line 104 of file ObjectFormats.cpp.

References llvm::StringRef::starts_with().

Referenced by getCOFFObjectFileSymbolInfo().

◆ isDwarfSection()

static bool llvm::orc::isDwarfSection ( StringRef  SectionName)
static

Definition at line 233 of file DebugObjectManagerPlugin.cpp.

References DwarfSectionNames.

◆ isELFInitializerSection()

bool llvm::orc::isELFInitializerSection ( StringRef  SecName)

Definition at line 95 of file ObjectFormats.cpp.

References ELFInitSectionNames, and Name.

Referenced by getELFObjectFileSymbolInfo().

◆ isMachOInitializerSection() [1/2]

bool llvm::orc::isMachOInitializerSection ( StringRef  QualifiedName)

Definition at line 88 of file ObjectFormats.cpp.

References MachOInitSectionNames.

◆ isMachOInitializerSection() [2/2]

bool llvm::orc::isMachOInitializerSection ( StringRef  SegName,
StringRef  SecName 
)

Definition at line 77 of file ObjectFormats.cpp.

References assert(), and MachOInitSectionNames.

Referenced by getMachOObjectFileSymbolInfo().

◆ lazyReexports()

std::unique_ptr< LazyReexportsMaterializationUnit > llvm::orc::lazyReexports ( LazyCallThroughManager LCTManager,
IndirectStubsManager ISManager,
JITDylib SourceJD,
SymbolAliasMap  CallableAliases,
ImplSymbolMap SrcJDLoc = nullptr 
)
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 167 of file LazyReexports.h.

Referenced by llvm::orc::CompileOnDemandLayer::emit(), and LLVMOrcLazyReexports().

◆ linkComponents()

LLVM_ATTRIBUTE_USED void llvm::orc::linkComponents ( )

◆ lookupAndRecordAddrs() [1/3]

Error llvm::orc::lookupAndRecordAddrs ( ExecutionSession ES,
LookupKind  K,
const JITDylibSearchOrder SearchOrder,
std::vector< std::pair< SymbolStringPtr, ExecutorAddr * > >  Pairs,
SymbolLookupFlags  LookupFlags = SymbolLookupFlags::RequiredSymbol 
)

Record addresses of the given symbols in the given ExecutorAddrs.

Blocking version.

Definition at line 42 of file LookupAndRecordAddrs.cpp.

References lookupAndRecordAddrs().

◆ lookupAndRecordAddrs() [2/3]

Error llvm::orc::lookupAndRecordAddrs ( ExecutorProcessControl EPC,
tpctypes::DylibHandle  H,
std::vector< std::pair< SymbolStringPtr, ExecutorAddr * > >  Pairs,
SymbolLookupFlags  LookupFlags = SymbolLookupFlags::RequiredSymbol 
)

Record addresses of given symbols in the given ExecutorAddrs.

ExecutorProcessControl lookup version. Lookups are always implicitly weak.

Definition at line 54 of file LookupAndRecordAddrs.cpp.

References H, I, llvm::inconvertibleErrorCode(), llvm::orc::ExecutorProcessControl::lookupSymbols(), Result, and llvm::Error::success().

◆ lookupAndRecordAddrs() [3/3]

void llvm::orc::lookupAndRecordAddrs ( unique_function< void(Error)>  OnRecorded,
ExecutionSession ES,
LookupKind  K,
const JITDylibSearchOrder SearchOrder,
std::vector< std::pair< SymbolStringPtr, ExecutorAddr * > >  Pairs,
SymbolLookupFlags  LookupFlags = SymbolLookupFlags::RequiredSymbol 
)

Record addresses of the given symbols in the given ExecutorAddrs.

Useful for making permanent records of symbol addreses to call or access in the executor (e.g. runtime support functions in Platform subclasses).

By default the symbols are looked up using SymbolLookupFlags::RequiredSymbol, and an error will be generated if any of the requested symbols are not defined.

If SymbolLookupFlags::WeaklyReferencedSymbol is used then any missing symbols will have their corresponding address objects set to zero, and this function will never generate an error (the caller will need to check addresses before using them).

Asynchronous version.

Definition at line 16 of file LookupAndRecordAddrs.cpp.

References for(), I, llvm::orc::ExecutionSession::lookup(), NoDependenciesToRegister, Ready, Result, and llvm::Error::success().

Referenced by llvm::orc::PerfSupportPlugin::Create(), llvm::orc::COFFVCRuntimeBootstrapper::initializeStaticVCRuntime(), and lookupAndRecordAddrs().

◆ lookupSymbolsAsyncHelper()

static void llvm::orc::lookupSymbolsAsyncHelper ( EPCGenericDylibManager DylibMgr,
ArrayRef< SimpleRemoteEPC::LookupRequest Request,
std::vector< tpctypes::LookupResult Result,
SimpleRemoteEPC::SymbolLookupCompleteFn  Complete 
)
static

Async helper to chain together calls to DylibMgr::lookupAsync to fulfill all all the requests.

FIXME: The dylib manager should support multiple LookupRequests natively.

Definition at line 36 of file SimpleRemoteEPC.cpp.

References Addr, llvm::ArrayRef< T >::drop_front(), llvm::ArrayRef< T >::empty(), llvm::ArrayRef< T >::front(), llvm::orc::EPCGenericDylibManager::lookupAsync(), lookupSymbolsAsyncHelper(), and Result.

Referenced by llvm::orc::SimpleRemoteEPC::lookupSymbolsAsync(), and lookupSymbolsAsyncHelper().

◆ makeGenericNamedTask() [1/2]

template<typename FnT >
std::unique_ptr< GenericNamedTask > llvm::orc::makeGenericNamedTask ( FnT &&  Fn,
const char Desc = nullptr 
)

Create a generic named task from a const char * description.

Definition at line 87 of file TaskDispatch.h.

References llvm::orc::GenericNamedTask::DefaultDescription.

◆ makeGenericNamedTask() [2/2]

template<typename FnT >
std::unique_ptr< GenericNamedTask > llvm::orc::makeGenericNamedTask ( FnT &&  Fn,
std::string  Desc 
)

Create a generic named task from a std::string description.

Definition at line 78 of file TaskDispatch.h.

Referenced by llvm::orc::ExecutorProcessControl::RunAsTask::operator()().

◆ makeJITDylibSearchOrder()

JITDylibSearchOrder llvm::orc::makeJITDylibSearchOrder ( ArrayRef< JITDylib * >  JDs,
JITDylibLookupFlags  Flags = JITDylibLookupFlags::MatchExportedSymbolsOnly 
)
inline

◆ makeStub()

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

Turn a function declaration into a stub function that makes an indirect call using the given function pointer.

Definition at line 260 of file IndirectionUtils.cpp.

References A, assert(), llvm::BasicBlock::Create(), llvm::IRBuilderBase::CreateCall(), llvm::IRBuilderBase::CreateLoad(), llvm::IRBuilderBase::CreateRet(), llvm::IRBuilderBase::CreateRetVoid(), and F.

◆ makeUnexpectedEOFError()

static Error llvm::orc::makeUnexpectedEOFError ( )
static

Definition at line 133 of file SimpleRemoteEPCUtils.cpp.

References llvm::inconvertibleErrorCode().

◆ operator%()

ExecutorAddrDiff llvm::orc::operator% ( const ExecutorAddr LHS,
const ExecutorAddrDiff RHS 
)
inline

Taking the modulus of an address and a diff yields a diff.

Definition at line 185 of file ExecutorAddress.h.

References LHS, and RHS.

◆ operator+() [1/2]

ExecutorAddr llvm::orc::operator+ ( const ExecutorAddr LHS,
const ExecutorAddrDiff RHS 
)
inline

Adding an offset and an address yields an address.

Definition at line 167 of file ExecutorAddress.h.

References LHS, and RHS.

◆ operator+() [2/2]

ExecutorAddr llvm::orc::operator+ ( const ExecutorAddrDiff LHS,
const ExecutorAddr RHS 
)
inline

Adding an address and an offset yields an address.

Definition at line 173 of file ExecutorAddress.h.

References LHS, and RHS.

◆ operator-() [1/2]

ExecutorAddrDiff llvm::orc::operator- ( const ExecutorAddr LHS,
const ExecutorAddr RHS 
)
inline

Subtracting two addresses yields an offset.

Definition at line 161 of file ExecutorAddress.h.

References LHS, and RHS.

◆ operator-() [2/2]

ExecutorAddr llvm::orc::operator- ( const ExecutorAddr LHS,
const ExecutorAddrDiff RHS 
)
inline

Subtracting an offset from an address yields an address.

Definition at line 179 of file ExecutorAddress.h.

References LHS, and RHS.

◆ operator<<() [1/28]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
AllocGroup  AG 
)
inline

Print an AllocGroup.

Definition at line 205 of file MemoryFlags.h.

◆ operator<<() [2/28]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
ArrayRef< SymbolStringPtr Symbols 
)

Render an array of SymbolStringPtrs.

Definition at line 157 of file DebugUtils.cpp.

◆ operator<<() [3/28]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const ExecutorAddr A 
)
inline

Definition at line 239 of file ExecutorAddress.h.

References A, llvm::formatv(), and OS.

◆ operator<<() [4/28]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const ExecutorAddrRange R 
)
inline

Definition at line 243 of file ExecutorAddress.h.

References llvm::formatv(), and OS.

◆ operator<<() [5/28]

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

Definition at line 179 of file DebugUtils.cpp.

References OS, and Sym.

◆ operator<<() [6/28]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const JITDylibLookupFlags JDLookupFlags 
)

Definition at line 228 of file DebugUtils.cpp.

References llvm_unreachable, MatchAllSymbols, MatchExportedSymbolsOnly, and OS.

◆ operator<<() [7/28]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const JITDylibSearchOrder SearchOrder 
)

Render a JITDylibSearchOrder.

Definition at line 259 of file DebugUtils.cpp.

References assert(), llvm::drop_begin(), and OS.

◆ operator<<() [8/28]

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

Render JITSymbolFlags.

Definition at line 161 of file DebugUtils.cpp.

References OS.

◆ operator<<() [9/28]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const LookupKind K 
)

Render a LookupKind.

Definition at line 218 of file DebugUtils.cpp.

References DLSym, llvm_unreachable, OS, and Static.

◆ operator<<() [10/28]

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

◆ operator<<() [11/28]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const SymbolAliasMap Aliases 
)

Render a SymbolAliasMap.

Definition at line 276 of file DebugUtils.cpp.

References OS.

◆ operator<<() [12/28]

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

Render a SymbolDependendeMap.

Definition at line 206 of file DebugUtils.cpp.

References OS.

◆ operator<<() [13/28]

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

Render a SymbolDependenceMap entry.

Definition at line 201 of file DebugUtils.cpp.

References OS.

◆ operator<<() [14/28]

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

Render a SymbolFlagsMap.

Definition at line 191 of file DebugUtils.cpp.

References OS.

◆ operator<<() [15/28]

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

Render a SymbolFlagsMap entry.

Definition at line 183 of file DebugUtils.cpp.

References OS.

◆ operator<<() [16/28]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const SymbolLookupFlags LookupFlags 
)

Render a SymbolLookupFlags instance.

Definition at line 239 of file DebugUtils.cpp.

References llvm_unreachable, OS, RequiredSymbol, and WeaklyReferencedSymbol.

◆ operator<<() [17/28]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const SymbolLookupSet LookupSet 
)

Render a SymbolLookupSet.

Definition at line 254 of file DebugUtils.cpp.

References OS.

◆ operator<<() [18/28]

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

Render a SymbolLookupSet entry.

Definition at line 249 of file DebugUtils.cpp.

References OS.

◆ operator<<() [19/28]

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

Render a SymbolMap.

Definition at line 196 of file DebugUtils.cpp.

References OS.

◆ operator<<() [20/28]

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

Render a SymbolMap entry.

Definition at line 187 of file DebugUtils.cpp.

References OS.

◆ operator<<() [21/28]

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

Render a SymbolNameSet.

Definition at line 149 of file DebugUtils.cpp.

References OS.

◆ operator<<() [22/28]

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

Render a SymbolNameVector.

Definition at line 153 of file DebugUtils.cpp.

◆ operator<<() [23/28]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const SymbolState S 
)

Render a SymbolState.

Definition at line 285 of file DebugUtils.cpp.

References Emitted, Invalid, llvm_unreachable, Materializing, NeverSearched, OS, Ready, and Resolved.

◆ operator<<() [24/28]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
const SymbolStringPool SSP 
)

Dump a SymbolStringPool. Useful for debugging dangling-pointer crashes.

Definition at line 303 of file DebugUtils.cpp.

◆ operator<<() [25/28]

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

Render a SymbolStringPtr.

Definition at line 141 of file DebugUtils.cpp.

References OS, and Sym.

◆ operator<<() [26/28]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
MemLifetime  MLP 
)
inline

Print a MemDeallocPolicy.

Definition at line 92 of file MemoryFlags.h.

References Finalize, NoAlloc, OS, and Standard.

◆ operator<<() [27/28]

raw_ostream & llvm::orc::operator<< ( raw_ostream OS,
MemProt  MP 
)
inline

Print a MemProt as an RWX triple.

Definition at line 36 of file MemoryFlags.h.

References Exec, None, OS, Read, and Write.

◆ operator<<() [28/28]

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

Render a NonOwningSymbolStringPtr.

Definition at line 145 of file DebugUtils.cpp.

References OS, and Sym.

◆ orcError()

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

◆ preserveDebugSections()

Error llvm::orc::preserveDebugSections ( jitlink::LinkGraph G)

◆ reentry()

static JITTargetAddress llvm::orc::reentry ( JITTargetAddress  LCTMAddr,
JITTargetAddress  TrampolineAddr 
)
static

Definition at line 407 of file EPCIndirectionUtils.cpp.

References Addr.

Referenced by setUpInProcessLCTMReentryViaEPCIU().

◆ reexports()

std::unique_ptr< ReExportsMaterializationUnit > llvm::orc::reexports ( JITDylib SourceJD,
SymbolAliasMap  Aliases,
JITDylibLookupFlags  SourceJDLookupFlags = JITDylibLookupFlags::MatchExportedSymbolsOnly 
)
inline

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

SourceJD will be searched using the given JITDylibLookupFlags.

Definition at line 846 of file Core.h.

Referenced by llvm::orc::CompileOnDemandLayer::emit(), and llvm::orc::ReexportsGenerator::tryToGenerate().

◆ registerEHFrameSection()

Error llvm::orc::registerEHFrameSection ( const void *  EHFrameSectionAddr,
size_t  EHFrameSectionSize 
)

Register frames in the given eh-frame section with libunwind.

Definition at line 128 of file RegisterEHFrames.cpp.

References registerFrameWrapper().

Referenced by llvm::jitlink::InProcessEHFrameRegistrar::registerEHFrames(), and registerEHFrameWrapper().

◆ registerFrameWrapper()

Error llvm::orc::registerFrameWrapper ( const void *  P)

Definition at line 36 of file RegisterEHFrames.cpp.

References __register_frame(), P, and llvm::Error::success().

Referenced by registerEHFrameSection().

◆ runAsIntFunction()

int llvm::orc::runAsIntFunction ( int(*)(int)  Func,
int  Arg 
)

◆ runAsMain()

int llvm::orc::runAsMain ( int(*)(int, char *[])  Main,
ArrayRef< std::string >  Args,
std::optional< StringRef ProgramName = std::nullopt 
)

Run a main function, returning the result.

If the optional ProgramName argument is given then it will be inserted before the strings in Args as the first argument to the called function.

It is legal to have an empty argument list and no program name, however many main functions will expect a name argument at least, and will fail if none is provided.

Definition at line 16 of file TargetExecutionUtils.cpp.

References llvm::copy().

Referenced by llvm::orc::SelfExecutorProcessControl::runAsMain(), and llvm::orc::rt_bootstrap::runAsMainWrapper().

◆ runAsVoidFunction()

int llvm::orc::runAsVoidFunction ( int(*)(void)  Func)

◆ setUpGenericLLVMIRPlatform()

Expected< JITDylibSP > llvm::orc::setUpGenericLLVMIRPlatform ( LLJIT J)

Configure the LLJIT instance to scrape modules for llvm.global_ctors and llvm.global_dtors variables and (if present) build initialization and deinitialization functions.

Platform specific initialization configurations should be preferred where available.

Definition at line 1160 of file LLJIT.cpp.

◆ setUpInactivePlatform()

Expected< JITDylibSP > llvm::orc::setUpInactivePlatform ( LLJIT J)

Configure the LLJIT instance to disable platform support explicitly.

This is useful in two cases: for platforms that don't have such requirements and for platforms, that we have no explicit support yet and that don't work well with the generic IR platform.

Definition at line 1178 of file LLJIT.cpp.

References llvm::dbgs(), LLVM_DEBUG, and llvm::orc::LLJIT::setPlatformSupport().

◆ setUpInProcessLCTMReentryViaEPCIU()

Error llvm::orc::setUpInProcessLCTMReentryViaEPCIU ( EPCIndirectionUtils EPCIU)

This will call writeResolver on the given EPCIndirectionUtils instance to set up re-entry via a function that will directly return the trampoline landing address.

The EPCIndirectionUtils' LazyCallThroughManager must have been previously created via EPCIndirectionUtils::createLazyCallThroughManager.

The EPCIndirectionUtils' writeResolver method must not have been previously called.

This function is experimental and likely subject to revision.

Definition at line 418 of file EPCIndirectionUtils.cpp.

References llvm::orc::ExecutorAddr::fromPtr(), llvm::orc::EPCIndirectionUtils::getLazyCallThroughManager(), reentry(), and llvm::orc::EPCIndirectionUtils::writeResolverBlock().

◆ setUpOrcPlatformManually()

Error llvm::orc::setUpOrcPlatformManually ( LLJIT J)

Configure the LLJIT instance to use orc runtime support.

This overload assumes that the client has manually configured a Platform object.

Definition at line 1053 of file LLJIT.cpp.

References llvm::dbgs(), LLVM_DEBUG, llvm::orc::LLJIT::setPlatformSupport(), and llvm::Error::success().

◆ symbolAliases()

std::unique_ptr< ReExportsMaterializationUnit > llvm::orc::symbolAliases ( SymbolAliasMap  Aliases)
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;
std::unique_ptr< ReExportsMaterializationUnit > symbolAliases(SymbolAliasMap Aliases)
Create a ReExportsMaterializationUnit with the given aliases.
Definition: Core.h:837

Definition at line 837 of file Core.h.

References MatchAllSymbols.

Referenced by llvm::orc::MachOPlatform::Create(), llvm::orc::ELFNixPlatform::Create(), llvm::orc::COFFPlatform::Create(), llvm::orc::COFFVCRuntimeBootstrapper::initializeStaticVCRuntime(), and llvm::orc::COFFPlatform::setupJITDylib().

◆ toSysMemoryProtectionFlags()

sys::Memory::ProtectionFlags llvm::orc::toSysMemoryProtectionFlags ( MemProt  MP)
inline

◆ writeMachOStruct()

template<typename MachOStruct >
size_t llvm::orc::writeMachOStruct ( MutableArrayRef< char Buf,
size_t  Offset,
MachOStruct  S,
bool  SwapStruct 
)

Variable Documentation

◆ DwarfSectionNames

const std::set<StringRef> llvm::orc::DwarfSectionNames
static
Initial value:
= {
#define HANDLE_DWARF_SECTION(ENUM_NAME, ELF_NAME, CMDLINE_NAME, OPTION)
}

Definition at line 226 of file DebugObjectManagerPlugin.cpp.

Referenced by isDwarfSection().

◆ ELFCtorArrayFuncSectionName

StringRef llvm::orc::ELFCtorArrayFuncSectionName = ".ctors"

Definition at line 65 of file ObjectFormats.cpp.

◆ ELFDtorArrayFuncSectionName

StringRef llvm::orc::ELFDtorArrayFuncSectionName = ".dtors"

Definition at line 66 of file ObjectFormats.cpp.

◆ ELFEHFrameSectionName

StringRef llvm::orc::ELFEHFrameSectionName = ".eh_frame"

Definition at line 59 of file ObjectFormats.cpp.

◆ ELFFiniArrayFuncSectionName

StringRef llvm::orc::ELFFiniArrayFuncSectionName = ".fini_array"

Definition at line 63 of file ObjectFormats.cpp.

◆ ELFFiniFuncSectionName

StringRef llvm::orc::ELFFiniFuncSectionName = ".fini"

Definition at line 64 of file ObjectFormats.cpp.

◆ ELFInitArrayFuncSectionName

StringRef llvm::orc::ELFInitArrayFuncSectionName = ".init_array"

Definition at line 61 of file ObjectFormats.cpp.

◆ ELFInitFuncSectionName

StringRef llvm::orc::ELFInitFuncSectionName = ".init"

Definition at line 62 of file ObjectFormats.cpp.

◆ ELFInitSectionNames

StringRef llvm::orc::ELFInitSectionNames
Initial value:

Definition at line 68 of file ObjectFormats.cpp.

Referenced by isELFInitializerSection().

◆ ELFThreadBSSSectionName

StringRef llvm::orc::ELFThreadBSSSectionName = ".tbss"

Definition at line 74 of file ObjectFormats.cpp.

◆ ELFThreadDataSectionName

StringRef llvm::orc::ELFThreadDataSectionName = ".tdata"

Definition at line 75 of file ObjectFormats.cpp.

◆ MachOCompactUnwindInfoSectionName

StringRef llvm::orc::MachOCompactUnwindInfoSectionName = "__TEXT,__unwind_info"

Definition at line 21 of file ObjectFormats.cpp.

◆ MachOCStringSectionName

StringRef llvm::orc::MachOCStringSectionName = "__TEXT,__cstring"

Definition at line 22 of file ObjectFormats.cpp.

◆ MachODataCommonSectionName

StringRef llvm::orc::MachODataCommonSectionName = "__DATA,__common"

Definition at line 18 of file ObjectFormats.cpp.

◆ MachODataDataSectionName

StringRef llvm::orc::MachODataDataSectionName = "__DATA,__data"

Definition at line 19 of file ObjectFormats.cpp.

◆ MachOEHFrameSectionName

StringRef llvm::orc::MachOEHFrameSectionName = "__TEXT,__eh_frame"

Definition at line 20 of file ObjectFormats.cpp.

◆ MachOInitSectionNames

StringRef llvm::orc::MachOInitSectionNames
Initial value:
= {
}
StringRef MachOSwift5EntrySectionName
StringRef MachOSwift5ProtosSectionName
StringRef MachOModInitFuncSectionName
StringRef MachOObjCConstSectionName
StringRef MachOSwift5ProtoSectionName
StringRef MachOObjCCatListSectionName
StringRef MachOObjCClassRefsSectionName
StringRef MachOObjCDataSectionName
StringRef MachOObjCClassNameSectionName
StringRef MachOObjCMethNameSectionName
StringRef MachOObjCClassListSectionName
StringRef MachOObjCSelRefsSectionName
StringRef MachOSwift5FieldMetadataSectionName
StringRef MachOObjCMethTypeSectionName
StringRef MachOSwift5TypesSectionName
StringRef MachOObjCNLCatListSectionName
StringRef MachOObjCImageInfoSectionName
StringRef MachOSwift5TypeRefSectionName
StringRef MachOObjCCatList2SectionName

Definition at line 46 of file ObjectFormats.cpp.

Referenced by isMachOInitializerSection().

◆ MachOModInitFuncSectionName

StringRef llvm::orc::MachOModInitFuncSectionName = "__DATA,__mod_init_func"

Definition at line 23 of file ObjectFormats.cpp.

◆ MachOObjCCatList2SectionName

StringRef llvm::orc::MachOObjCCatList2SectionName = "__DATA,__objc_catlist2"

Definition at line 25 of file ObjectFormats.cpp.

◆ MachOObjCCatListSectionName

StringRef llvm::orc::MachOObjCCatListSectionName = "__DATA,__objc_catlist"

Definition at line 24 of file ObjectFormats.cpp.

◆ MachOObjCClassListSectionName

StringRef llvm::orc::MachOObjCClassListSectionName = "__DATA,__objc_classlist"

Definition at line 26 of file ObjectFormats.cpp.

◆ MachOObjCClassNameSectionName

StringRef llvm::orc::MachOObjCClassNameSectionName = "__TEXT,__objc_classname"

Definition at line 27 of file ObjectFormats.cpp.

◆ MachOObjCClassRefsSectionName

StringRef llvm::orc::MachOObjCClassRefsSectionName = "__DATA,__objc_classrefs"

Definition at line 28 of file ObjectFormats.cpp.

◆ MachOObjCConstSectionName

StringRef llvm::orc::MachOObjCConstSectionName = "__DATA,__objc_const"

Definition at line 29 of file ObjectFormats.cpp.

◆ MachOObjCDataSectionName

StringRef llvm::orc::MachOObjCDataSectionName = "__DATA,__objc_data"

Definition at line 30 of file ObjectFormats.cpp.

◆ MachOObjCImageInfoSectionName

StringRef llvm::orc::MachOObjCImageInfoSectionName = "__DATA,__objc_imageinfo"

Definition at line 31 of file ObjectFormats.cpp.

◆ MachOObjCMethNameSectionName

StringRef llvm::orc::MachOObjCMethNameSectionName = "__TEXT,__objc_methname"

Definition at line 32 of file ObjectFormats.cpp.

◆ MachOObjCMethTypeSectionName

StringRef llvm::orc::MachOObjCMethTypeSectionName = "__TEXT,__objc_methtype"

Definition at line 33 of file ObjectFormats.cpp.

◆ MachOObjCNLCatListSectionName

StringRef llvm::orc::MachOObjCNLCatListSectionName = "__DATA,__objc_nlcatlist"

Definition at line 34 of file ObjectFormats.cpp.

◆ MachOObjCSelRefsSectionName

StringRef llvm::orc::MachOObjCSelRefsSectionName = "__DATA,__objc_selrefs"

Definition at line 35 of file ObjectFormats.cpp.

◆ MachOSwift5EntrySectionName

StringRef llvm::orc::MachOSwift5EntrySectionName = "__TEXT,__swift5_entry"

Definition at line 41 of file ObjectFormats.cpp.

◆ MachOSwift5FieldMetadataSectionName

StringRef llvm::orc::MachOSwift5FieldMetadataSectionName = "__TEXT,__swift5_fieldmd"

Definition at line 40 of file ObjectFormats.cpp.

◆ MachOSwift5ProtoSectionName

StringRef llvm::orc::MachOSwift5ProtoSectionName = "__TEXT,__swift5_proto"

Definition at line 36 of file ObjectFormats.cpp.

◆ MachOSwift5ProtosSectionName

StringRef llvm::orc::MachOSwift5ProtosSectionName = "__TEXT,__swift5_protos"

Definition at line 37 of file ObjectFormats.cpp.

◆ MachOSwift5TypeRefSectionName

StringRef llvm::orc::MachOSwift5TypeRefSectionName = "__TEXT,__swift5_typeref"

Definition at line 39 of file ObjectFormats.cpp.

◆ MachOSwift5TypesSectionName

StringRef llvm::orc::MachOSwift5TypesSectionName = "__TEXT,__swift5_types"

Definition at line 38 of file ObjectFormats.cpp.

◆ MachOThreadBSSSectionName

StringRef llvm::orc::MachOThreadBSSSectionName = "__DATA,__thread_bss"

Definition at line 42 of file ObjectFormats.cpp.

◆ MachOThreadDataSectionName

StringRef llvm::orc::MachOThreadDataSectionName = "__DATA,__thread_data"

Definition at line 43 of file ObjectFormats.cpp.

◆ MachOThreadVarsSectionName

StringRef llvm::orc::MachOThreadVarsSectionName = "__DATA,__thread_vars"

Definition at line 44 of file ObjectFormats.cpp.

◆ 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:403

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

Definition at line 37 of file Core.cpp.

Referenced by LLVMOrcExecutionSessionLookup(), llvm::orc::ExecutionSession::lookup(), lookupAndRecordAddrs(), llvm::orc::Platform::lookupInitSymbols(), llvm::orc::Platform::lookupInitSymbolsAsync(), llvm::orc::Speculator::registerSymbols(), and llvm::orc::LazyCallThroughManager::resolveTrampolineLandingAddress().