LLVM 20.0.0git
|
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 | DylibManager |
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 | 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 | ForceLoadMachOArchiveMembers |
For use with StaticLibraryDefinitionGenerators. More... | |
struct | FunctionPairKeyEqual |
struct | FunctionPairKeyHash |
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 | IRPartitionLayer |
A layer that breaks up IR modules into smaller submodules that only contains looked up symbols. 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 | JITLinkRedirectableSymbolManager |
class | JITLinkReentryTrampolines |
Produces trampolines on request using JITLink. 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 | LazyObjectLinkingLayer |
LazyObjectLinkingLayer is an adapter for ObjectLinkingLayer that builds lazy reexports for all function symbols in objects that are/ added to defer linking until the first call to a function defined in the object. More... | |
class | LazyReexportsManager |
class | LazyReexportsMaterializationUnit |
A materialization unit that builds lazy re-exports. More... | |
class | LinkGraphLayer |
class | LinkGraphLinkingLayer |
LinkGraphLinkingLayer links LinkGraphs into the Executor using JITLink. More... | |
class | LinkGraphMaterializationUnit |
MaterializationUnit for wrapping LinkGraphs. 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 | 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 | RedirectableMaterializationUnit |
RedirectableMaterializationUnit materializes redirectable symbol by invoking RedirectableSymbolManager::emitRedirectableSymbols. More... | |
class | RedirectableSymbolManager |
Base class for managing redirectable symbols in which a call gets redirected to another symbol in runtime. More... | |
class | RedirectionManager |
Base class for performing redirection of call to symbol to another symbol in runtime. 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 | ReOptimizeLayer |
class | ResourceManager |
Listens for ResourceTracker operations. More... | |
class | ResourceTracker |
API to remove / transfer ownership of JIT resources. More... | |
class | ResourceTrackerDefunct |
class | RTDyldObjectLinkingLayer |
struct | RuntimeFunction |
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 | SymbolInstance |
A definition of a Symbol within a JITDylib. 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 |
Functions | |
std::unique_ptr< AbsoluteSymbolsMaterializationUnit > | absoluteSymbols (SymbolMap Symbols) |
Create an AbsoluteSymbolsMaterializationUnit with the given symbols. | |
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< ReExportsMaterializationUnit > | symbolAliases (SymbolAliasMap Aliases) |
Create a ReExportsMaterializationUnit with the given aliases. | |
std::unique_ptr< ReExportsMaterializationUnit > | reexports (JITDylib &SourceJD, SymbolAliasMap Aliases, JITDylibLookupFlags SourceJDLookupFlags=JITDylibLookupFlags::MatchExportedSymbolsOnly) |
Create a materialization unit for re-exporting symbols from another JITDylib with alternative names/flags. | |
Expected< SymbolAliasMap > | 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. | |
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_ostream & | operator<< (raw_ostream &OS, const SymbolNameSet &Symbols) |
Render a SymbolNameSet. | |
raw_ostream & | operator<< (raw_ostream &OS, const SymbolNameVector &Symbols) |
Render a SymbolNameVector. | |
raw_ostream & | operator<< (raw_ostream &OS, ArrayRef< SymbolStringPtr > Symbols) |
Render an array of SymbolStringPtrs. | |
raw_ostream & | operator<< (raw_ostream &OS, const JITSymbolFlags &Flags) |
Render JITSymbolFlags. | |
raw_ostream & | operator<< (raw_ostream &OS, const SymbolFlagsMap::value_type &KV) |
Render a SymbolFlagsMap entry. | |
raw_ostream & | operator<< (raw_ostream &OS, const SymbolMap::value_type &KV) |
Render a SymbolMap entry. | |
raw_ostream & | operator<< (raw_ostream &OS, const SymbolFlagsMap &SymbolFlags) |
Render a SymbolFlagsMap. | |
raw_ostream & | operator<< (raw_ostream &OS, const SymbolMap &Symbols) |
Render a SymbolMap. | |
raw_ostream & | operator<< (raw_ostream &OS, const SymbolDependenceMap::value_type &KV) |
Render a SymbolDependenceMap entry. | |
raw_ostream & | operator<< (raw_ostream &OS, const SymbolDependenceMap &Deps) |
Render a SymbolDependendeMap. | |
raw_ostream & | operator<< (raw_ostream &OS, const MaterializationUnit &MU) |
Render a MaterializationUnit. | |
raw_ostream & | operator<< (raw_ostream &OS, const JITDylibLookupFlags &JDLookupFlags) |
raw_ostream & | operator<< (raw_ostream &OS, const SymbolLookupFlags &LookupFlags) |
Render a SymbolLookupFlags instance. | |
raw_ostream & | operator<< (raw_ostream &OS, const SymbolLookupSet::value_type &KV) |
Render a SymbolLookupSet entry. | |
raw_ostream & | operator<< (raw_ostream &OS, const SymbolLookupSet &LookupSet) |
Render a SymbolLookupSet. | |
raw_ostream & | operator<< (raw_ostream &OS, const JITDylibSearchOrder &SearchOrder) |
Render a JITDylibSearchOrder. | |
raw_ostream & | operator<< (raw_ostream &OS, const SymbolAliasMap &Aliases) |
Render a SymbolAliasMap. | |
raw_ostream & | operator<< (raw_ostream &OS, const SymbolState &S) |
Render a SymbolState. | |
raw_ostream & | operator<< (raw_ostream &OS, const LookupKind &K) |
Render a LookupKind. | |
raw_ostream & | operator<< (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< CtorDtorIterator > | getConstructors (const Module &M) |
Create an iterator range over the entries of the llvm.global_ctors array. | |
iterator_range< CtorDtorIterator > | getDestructors (const Module &M) |
Create an iterator range over the entries of the llvm.global_ctors array. | |
iterator_range< StaticInitGVIterator > | getStaticInitGVs (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. | |
Constant * | createIRTypedAddress (FunctionType &FT, ExecutorAddr Addr) |
Build a function pointer of FunctionType with the given constant address. | |
GlobalVariable * | 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. | |
void | makeStub (Function &F, Value &ImplPointer) |
Turn a function declaration into a stub function that makes an indirect call using the given function pointer. | |
Function * | cloneFunctionDecl (Module &Dst, const Function &F, ValueToValueMapTy *VMap=nullptr) |
Clone a function declaration into a new module. | |
GlobalVariable * | cloneGlobalVariableDecl (Module &Dst, const GlobalVariable &GV, ValueToValueMapTy *VMap=nullptr) |
Clone a global variable declaration into a new module. | |
GlobalAlias * | cloneGlobalAliasDecl (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< LazyReexportsManager > > | createJITLinkLazyReexportsManager (ObjectLinkingLayer &ObjLinkingLayer, RedirectableSymbolManager &RSMgr, JITDylib &PlatformJD) |
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< LazyReexportsMaterializationUnit > | lazyReexports (LazyCallThroughManager &LCTManager, RedirectableSymbolManager &RSManager, JITDylib &SourceJD, SymbolAliasMap CallableAliases, ImplSymbolMap *SrcJDLoc=nullptr) |
Define lazy-reexports based on the given SymbolAliasMap. | |
std::unique_ptr< MaterializationUnit > | lazyReexports (LazyReexportsManager &LRM, SymbolAliasMap Reexports) |
Define lazy-reexports based on the given SymbolAliasMap. | |
Error | setUpOrcPlatformManually (LLJIT &J) |
Configure the LLJIT instance to use orc runtime support. | |
Expected< JITDylibSP > | 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. | |
Expected< JITDylibSP > | setUpInactivePlatform (LLJIT &J) |
Configure the LLJIT instance to disable platform support explicitly. | |
Expected< std::pair< std::unique_ptr< MemoryBuffer >, LinkableFileKind > > | loadLinkableFile (StringRef Path, const Triple &TT, LoadArchives LA, std::optional< StringRef > IdentifierOverride=std::nullopt) |
Create a MemoryBuffer covering the "linkable" part of the given path. | |
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. | |
Error | checkMachORelocatableObject (MemoryBufferRef Obj, const Triple &TT, bool ObjIsSlice) |
Check that the given buffer contains a MachO object file compatible with the given triple. | |
Expected< std::unique_ptr< MemoryBuffer > > | checkMachORelocatableObject (std::unique_ptr< MemoryBuffer > Obj, const Triple &TT, bool ObjIsSlice) |
Check that the given buffer contains a MachO object file compatible with the given triple. | |
Expected< std::pair< std::unique_ptr< MemoryBuffer >, LinkableFileKind > > | loadMachOLinkableFile (StringRef Path, const Triple &TT, LoadArchives LA, std::optional< StringRef > IdentifierOverride=std::nullopt) |
Load a relocatable object compatible with TT from Path. | |
Expected< std::pair< std::unique_ptr< MemoryBuffer >, LinkableFileKind > > | loadLinkableSliceFromMachOUniversalBinary (sys::fs::file_t FD, std::unique_ptr< MemoryBuffer > UBBuf, const Triple &TT, LoadArchives LA, StringRef UBPath, StringRef Identifier) |
Load a compatible relocatable object (if available) from a MachO universal binary. | |
Expected< std::pair< size_t, size_t > > | getMachOSliceRangeForTriple (object::MachOUniversalBinary &UB, const Triple &TT) |
Utility for identifying the file-slice compatible with TT in a universal binary. | |
Expected< std::pair< size_t, size_t > > | getMachOSliceRangeForTriple (MemoryBufferRef UBBuf, const Triple &TT) |
Utility for identifying the file-slice compatible with TT in a universal binary. | |
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::Interface > | getObjectFileInterface (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_ostream & | operator<< (raw_ostream &OS, const ExecutorAddr &A) |
raw_ostream & | operator<< (raw_ostream &OS, const ExecutorAddrRange &R) |
bool | isMachOInitializerSection (StringRef SegName, StringRef SecName) |
bool | isMachOInitializerSection (StringRef QualifiedName) |
raw_ostream & | operator<< (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_ostream & | operator<< (raw_ostream &OS, MemLifetime MLP) |
Print a MemDeallocPolicy. | |
raw_ostream & | operator<< (raw_ostream &OS, AllocGroup AG) |
Print an AllocGroup. | |
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< GenericNamedTask > | makeGenericNamedTask (FnT &&Fn, std::string Desc) |
Create a generic named task from a std::string description. | |
template<typename FnT > | |
std::unique_ptr< GenericNamedTask > | makeGenericNamedTask (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< SymbolAliasMap > | buildSimpleReexportsAliasMap (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_ostream & | operator<< (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 Expected< std::unique_ptr< MemoryBuffer > > | checkCOFFRelocatableObject (std::unique_ptr< MemoryBuffer > Obj, const Triple &TT) |
static Expected< std::unique_ptr< MemoryBuffer > > | checkELFRelocatableObject (std::unique_ptr< MemoryBuffer > Obj, const Triple &TT) |
static std::string | objDesc (const MemoryBufferRef &Obj, const Triple &TT, bool ObjIsSlice) |
template<typename HeaderType > | |
static Error | checkMachORelocatableObject (MemoryBufferRef Obj, bool SwapEndianness, const Triple &TT, bool ObjIsSlice) |
Expected< std::pair< std::unique_ptr< MemoryBuffer >, LinkableFileKind > > | loadMachORelocatableObject (StringRef Path, const Triple &TT, LoadArchives LA, std::optional< StringRef > IdentifierOverride) |
static void | addAliases (ExecutionSession &ES, SymbolAliasMap &Aliases, ArrayRef< std::pair< const char *, const char * > > AL) |
template<typename MachOTraits > | |
jitlink::Block & | createHeaderBlock (MachOPlatform &MOP, const MachOPlatform::HeaderOptions &Opts, JITDylib &JD, jitlink::LinkGraph &G, jitlink::Section &HeaderSection) |
static Expected< MaterializationUnit::Interface > | getMachOObjectFileSymbolInfo (ExecutionSession &ES, const object::MachOObjectFile &Obj) |
static Expected< MaterializationUnit::Interface > | getELFObjectFileSymbolInfo (ExecutionSession &ES, const object::ELFObjectFileBase &Obj) |
static Expected< MaterializationUnit::Interface > | getCOFFObjectFileSymbolInfo (ExecutionSession &ES, const object::COFFObjectFile &Obj) |
Expected< MaterializationUnit::Interface > | getGenericObjectFileSymbolInfo (ExecutionSession &ES, const object::ObjectFile &Obj) |
static Error | makeUnexpectedEOFError () |
raw_ostream & | operator<< (raw_ostream &OS, const SymbolStringPtrBase &Sym) |
static void | lookupSymbolsAsyncHelper (EPCGenericDylibManager &DylibMgr, ArrayRef< DylibManager::LookupRequest > Request, std::vector< tpctypes::LookupResult > Result, DylibManager::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) |
using llvm::orc::BaseObjectLayer = typedef RTTIExtends<ObjectLinkingLayer, ObjectLayer> |
Definition at line 19 of file ObjectLinkingLayer.cpp.
Definition at line 17 of file ObjectTransformLayer.cpp.
using llvm::orc::DeferredRuntimeFnMap = typedef std::unordered_map< std::pair<RuntimeFunction *, RuntimeFunction *>, SmallVector<std::pair<shared::WrapperFunctionCall::ArgDataBufferType, shared::WrapperFunctionCall::ArgDataBufferType> >, FunctionPairKeyHash, FunctionPairKeyEqual> |
Definition at line 61 of file ELFNixPlatform.h.
using llvm::orc::ELFNixJITDylibDepInfo = typedef std::vector<ExecutorAddr> |
Definition at line 35 of file ELFNixPlatform.h.
using llvm::orc::ELFNixJITDylibDepInfoMap = typedef std::vector<std::pair<ExecutorAddr, ELFNixJITDylibDepInfo> > |
Definition at line 36 of file ELFNixPlatform.h.
using llvm::orc::ExecutorAddrDiff = typedef uint64_t |
Definition at line 31 of file ExecutorAddress.h.
using llvm::orc::GVModifier = typedef std::function<void(GlobalValue &)> |
Definition at line 170 of file ThreadSafeModule.h.
using llvm::orc::GVPredicate = typedef std::function<bool(const GlobalValue &)> |
Definition at line 169 of file ThreadSafeModule.h.
using llvm::orc::JITDylibSearchOrder = typedef std::vector<std::pair<JITDylib *, JITDylibLookupFlags> > |
using llvm::orc::JITDylibSP = typedef IntrusiveRefCntPtr<JITDylib> |
using llvm::orc::RegisterDependenciesFunction = typedef std::function<void(const SymbolDependenceMap &)> |
using llvm::orc::RemoteSymbolLookupSet = typedef std::vector<RemoteSymbolLookupSetElement> |
Definition at line 147 of file SimpleRemoteEPCUtils.h.
using llvm::orc::ResourceKey = typedef uintptr_t |
using llvm::orc::ResourceTrackerSP = typedef IntrusiveRefCntPtr<ResourceTracker> |
using llvm::orc::SimpleRemoteEPCArgBytesVector = typedef SmallVector<char, 128> |
Definition at line 52 of file SimpleRemoteEPCUtils.h.
using llvm::orc::SymbolAliasMap = typedef DenseMap<SymbolStringPtr, SymbolAliasMapEntry> |
using llvm::orc::SymbolDependenceMap = typedef DenseMap<JITDylib *, SymbolNameSet> |
A map from JITDylibs to sets of symbols.
Definition at line 43 of file CoreContainers.h.
using llvm::orc::SymbolFlagsMap = typedef DenseMap<SymbolStringPtr, JITSymbolFlags> |
A map from symbol names (as SymbolStringPtrs) to JITSymbolFlags.
Definition at line 40 of file CoreContainers.h.
using llvm::orc::SymbolMap = typedef DenseMap<SymbolStringPtr, ExecutorSymbolDef> |
A map from symbol names (as SymbolStringPtrs) to JITSymbols (address/flags pairs).
Definition at line 37 of file CoreContainers.h.
using llvm::orc::SymbolNameSet = typedef DenseSet<SymbolStringPtr> |
A set of symbol names (represented by SymbolStringPtrs for.
Definition at line 30 of file CoreContainers.h.
using llvm::orc::SymbolNameVector = typedef std::vector<SymbolStringPtr> |
A vector of symbol names.
Definition at line 33 of file CoreContainers.h.
using llvm::orc::SymbolsResolvedCallback = typedef unique_function<void(Expected<SymbolMap>)> |
using llvm::orc::VTuneLineTable = typedef std::vector<std::pair<unsigned, unsigned> > |
Definition at line 23 of file VTuneSharedStructs.h.
using llvm::orc::VTuneMethodTable = typedef std::vector<VTuneMethodInfo> |
Definition at line 42 of file VTuneSharedStructs.h.
using llvm::orc::VTuneStringTable = typedef std::vector<std::string> |
Definition at line 43 of file VTuneSharedStructs.h.
using llvm::orc::VTuneUnloadedMethodIDs = typedef SmallVector<std::pair<uint64_t, uint64_t> > |
Definition at line 50 of file VTuneSharedStructs.h.
enum llvm::orc::DebugObjectFlags : int |
Enumerator | |
---|---|
ReportFinalSectionLoadAddresses | |
HasDebugSections |
Definition at line 101 of file DebugObjectManagerPlugin.cpp.
|
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 |
|
strong |
Enumerator | |
---|---|
Archive | |
RelocatableObject |
Definition at line 28 of file LoadLinkableFile.h.
Enumerator | |
---|---|
Never | |
Allowed | |
Required |
Definition at line 30 of file LoadLinkableFile.h.
|
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 |
|
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.
Definition at line 75 of file MemoryFlags.h.
|
strong |
Describes Read/Write/Exec permissions for memory.
Enumerator | |
---|---|
None | |
Read | |
Write | |
Exec |
Definition at line 27 of file MemoryFlags.h.
|
strong |
Definition at line 24 of file OrcError.h.
|
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.
|
strong |
Enumerator | |
---|---|
Setup | |
Hangup | |
Result | |
CallWrapper | |
LastOpC |
Definition at line 37 of file SimpleRemoteEPCUtils.h.
|
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 |
|
strong |
Represents the state that a symbol has reached during materialization.
void llvm::orc::__deregister_frame | ( | const void * | ) |
Referenced by deregisterFrameWrapper().
void llvm::orc::__register_frame | ( | const void * | ) |
Referenced by registerFrameWrapper().
|
inline |
Create an AbsoluteSymbolsMaterializationUnit with the given symbols.
Useful for inserting absolute symbols into a JITDylib. E.g.:
Definition at line 52 of file AbsoluteSymbols.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().
|
static |
Definition at line 261 of file COFFPlatform.cpp.
References assert(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::count(), llvm::JITSymbolFlags::Exported, and llvm::orc::ExecutionSession::intern().
Referenced by llvm::orc::COFFPlatform::setupJITDylib(), llvm::orc::COFFPlatform::standardPlatformAliases(), llvm::orc::MachOPlatform::standardPlatformAliases(), and llvm::orc::ELFNixPlatform::standardPlatformAliases().
|
static |
Definition at line 336 of file ELFNixPlatform.cpp.
References assert(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::count(), llvm::JITSymbolFlags::Exported, and llvm::orc::ExecutionSession::intern().
|
static |
Definition at line 398 of file MachOPlatform.cpp.
References assert(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::count(), llvm::JITSymbolFlags::Exported, and llvm::orc::ExecutionSession::intern().
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
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 380 of file IndirectionUtils.cpp.
References assert(), B, llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::contains(), Content, llvm::dbgs(), llvm::jitlink::x86_64::Delta32, 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.
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 22 of file ObjectFileInterface.cpp.
References assert(), I, llvm::orc::ExecutionSession::intern(), and llvm::JITSymbolFlags::MaterializationSideEffectsOnly.
Referenced by getCOFFObjectFileSymbolInfo(), getELFObjectFileSymbolInfo(), and getMachOObjectFileSymbolInfo().
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.
Expected< SymbolAliasMap > llvm::orc::buildSimpleReexportsAliasMap | ( | JITDylib & | SourceJD, |
SymbolNameSet | Symbols | ||
) |
Definition at line 492 of file Core.cpp.
References assert(), llvm::orc::JITDylib::getExecutionSession(), llvm::orc::ExecutionSession::lookupFlags(), MatchAllSymbols, Name, Result, and Static.
|
static |
Definition at line 22 of file LoadLinkableFile.cpp.
Referenced by loadLinkableFile().
|
static |
Definition at line 29 of file LoadLinkableFile.cpp.
Referenced by loadLinkableFile().
|
static |
Definition at line 32 of file MachO.cpp.
References llvm::Data, llvm::object::MachOObjectFile::getArch(), llvm::Triple::getArchTypeName(), llvm::MemoryBufferRef::getBuffer(), llvm::inconvertibleErrorCode(), llvm::MachO::MH_OBJECT, objDesc(), and llvm::Error::success().
Error llvm::orc::checkMachORelocatableObject | ( | MemoryBufferRef | Obj, |
const Triple & | TT, | ||
bool | ObjIsSlice | ||
) |
Check that the given buffer contains a MachO object file compatible with the given triple.
ObjIsSlice should be set to true if Obj is a slice of a universal binary (that fact will then be reported in the error messages).
Definition at line 58 of file MachO.cpp.
References llvm::Data, llvm::MemoryBufferRef::getBuffer(), llvm::inconvertibleErrorCode(), llvm::MachO::MH_CIGAM, llvm::MachO::MH_CIGAM_64, llvm::MachO::MH_MAGIC, llvm::MachO::MH_MAGIC_64, and objDesc().
Referenced by checkMachORelocatableObject(), loadLinkableFile(), loadLinkableSliceFromMachOUniversalBinary(), and loadMachORelocatableObject().
Expected< std::unique_ptr< MemoryBuffer > > llvm::orc::checkMachORelocatableObject | ( | std::unique_ptr< MemoryBuffer > | Obj, |
const Triple & | TT, | ||
bool | ObjIsSlice | ||
) |
Check that the given buffer contains a MachO object file compatible with the given triple.
This convenience overload returns the buffer if it passes all checks, otherwise it returns an error.
Definition at line 89 of file MachO.cpp.
References checkMachORelocatableObject().
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 339 of file IndirectionUtils.cpp.
References llvm::Function::arg_begin(), llvm::Function::copyAttributesFrom(), llvm::Function::Create(), and F.
Referenced by extractSubModule().
GlobalAlias * llvm::orc::cloneGlobalAliasDecl | ( | Module & | Dst, |
const GlobalAlias & | OrigA, | ||
ValueToValueMapTy & | VMap | ||
) |
Clone a global alias declaration into a new module.
Definition at line 369 of file IndirectionUtils.cpp.
References assert(), llvm::GlobalAlias::create(), llvm::GlobalAlias::getAliasee(), llvm::GlobalValue::getLinkage(), llvm::Value::getName(), llvm::Type::getPointerAddressSpace(), llvm::GlobalValue::getType(), and llvm::GlobalValue::getValueType().
GlobalVariable * llvm::orc::cloneGlobalVariableDecl | ( | Module & | Dst, |
const GlobalVariable & | GV, | ||
ValueToValueMapTy * | VMap = nullptr |
||
) |
Clone a global variable declaration into a new module.
Definition at line 357 of file IndirectionUtils.cpp.
References llvm::GlobalVariable::copyAttributesFrom(), llvm::PointerType::getAddressSpace(), llvm::GlobalValue::getLinkage(), llvm::Value::getName(), llvm::GlobalValue::getThreadLocalMode(), llvm::GlobalValue::getType(), llvm::GlobalValue::getValueType(), and llvm::GlobalVariable::isConstant().
Referenced by extractSubModule().
ThreadSafeModule llvm::orc::cloneToNewContext | ( | const ThreadSafeModule & | TSMW, |
GVPredicate | ShouldCloneDef = GVPredicate() , |
||
GVModifier | UpdateClonedDefSource = GVModifier() |
||
) |
Clones the given module on to a new context.
Definition at line 18 of file ThreadSafeModule.cpp.
References assert(), llvm::cantFail(), llvm::ClonedModule, llvm::CloneModule(), llvm::SmallVectorTemplateCommon< T, typename >::data(), llvm::orc::ThreadSafeContext::getContext(), llvm::ValueMap< KeyT, ValueT, Config >::insert(), llvm::parseBitcodeFile(), llvm::SmallVectorBase< Size_T >::size(), llvm::orc::ThreadSafeModule::withModuleDo(), llvm::BitcodeWriter::writeModule(), llvm::BitcodeWriter::writeStrtab(), and llvm::BitcodeWriter::writeSymtab().
Referenced by extractSubModule().
|
static |
Creates a debug object based on the input object file from ObjectLinkingLayerJITLinkContext.
Definition at line 376 of file DebugObjectManagerPlugin.cpp.
References createDebugObjectFromBuffer(), llvm::Triple::ELF, and G.
Referenced by createDebugObjectFromBuffer(), and llvm::orc::DebugObjectManagerPlugin::notifyMaterializing().
Expected< std::pair< std::unique_ptr< DWARFContext >, StringMap< std::unique_ptr< MemoryBuffer > > > > llvm::orc::createDWARFContext | ( | jitlink::LinkGraph & | G | ) |
Definition at line 96 of file DebugInfoSupport.cpp.
References llvm::DWARFContext::create(), llvm::dbgs(), G, llvm::inconvertibleErrorCode(), llvm::little, LLVM_DEBUG, and Name.
Referenced by getMethodBatch().
jitlink::Block & llvm::orc::createHeaderBlock | ( | MachOPlatform & | MOP, |
const MachOPlatform::HeaderOptions & | Opts, | ||
JITDylib & | JD, | ||
jitlink::LinkGraph & | G, | ||
jitlink::Section & | HeaderSection | ||
) |
Definition at line 1725 of file MachOPlatform.cpp.
References B, llvm::orc::MachOPlatform::HeaderOptions::BuildVersions, D, G, llvm::orc::MachOPlatform::getExecutionSession(), getMachOHeaderInfoFromTriple(), llvm::jitlink::JITLinkDylib::getName(), llvm::orc::ExecutionSession::getTargetTriple(), llvm::orc::MachOPlatform::HeaderOptions::IDDylib, llvm::orc::MachOPlatform::HeaderOptions::LoadDylibs, llvm::MachO::MH_DYLIB, P, and llvm::orc::MachOPlatform::HeaderOptions::RPaths.
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 281 of file IndirectionUtils.cpp.
References llvm::GlobalValue::ExternalLinkage, llvm::GlobalValue::HiddenVisibility, Name, and llvm::GlobalValue::NotThreadLocal.
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 273 of file IndirectionUtils.cpp.
References Addr, llvm::PointerType::get(), llvm::Type::getContext(), llvm::Type::getInt64Ty(), and llvm::ConstantExpr::getIntToPtr().
Expected< std::unique_ptr< LazyReexportsManager > > llvm::orc::createJITLinkLazyReexportsManager | ( | ObjectLinkingLayer & | ObjLinkingLayer, |
RedirectableSymbolManager & | RSMgr, | ||
JITDylib & | PlatformJD | ||
) |
Definition at line 174 of file JITLinkReentryTrampolines.cpp.
References llvm::orc::LazyReexportsManager::Create(), and llvm::orc::JITLinkReentryTrampolines::Create().
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 16 of file EPCDebugObjectRegistrar.cpp.
References llvm::orc::SymbolLookupSet::add(), assert(), D, llvm::orc::ExecutionSession::getExecutorProcessControl(), Result, and llvm::size().
Referenced by enableDebuggerSupport().
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 148 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.
std::function< std::unique_ptr< IndirectStubsManager >()> llvm::orc::createLocalIndirectStubsManagerBuilder | ( | const Triple & | T | ) |
Create a local indirect stubs manager builder.
The given target triple will determine the ABI.
Definition at line 205 of file IndirectionUtils.cpp.
References llvm::Triple::aarch64, llvm::Triple::aarch64_32, 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.
Referenced by LLVMOrcCreateLocalIndirectStubsManager().
Expected< std::unique_ptr< LazyCallThroughManager > > llvm::orc::createLocalLazyCallThroughManager | ( | const Triple & | T, |
ExecutionSession & | ES, | ||
ExecutorAddr | ErrorHandlerAddr | ||
) |
Create a LocalLazyCallThroughManager from the given triple and execution session.
Definition at line 109 of file LazyReexports.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.
Referenced by LLVMOrcCreateLocalLazyCallThroughManager().
Error llvm::orc::deregisterEHFrameSection | ( | const void * | EHFrameSectionAddr, |
size_t | EHFrameSectionSize | ||
) |
Unregister frames in the given eh-frame section with libunwind.
Definition at line 142 of file RegisterEHFrames.cpp.
References deregisterFrameWrapper().
Referenced by llvm::jitlink::InProcessEHFrameRegistrar::deregisterEHFrames(), and deregisterEHFrameWrapper().
Definition at line 36 of file RegisterEHFrames.cpp.
References __deregister_frame(), P, and llvm::Error::success().
Referenced by deregisterEHFrameSection().
Definition at line 21 of file DebuggerSupport.cpp.
References llvm::orc::GDBJITDebugInfoRegistrationPlugin::Create(), createJITLoaderGDBRegistrar(), llvm::Triple::ELF, llvm::orc::LLJIT::getExecutionSession(), llvm::Triple::getObjectFormatTypeName(), llvm::orc::LLJIT::getObjLinkingLayer(), llvm::orc::LLJIT::getProcessSymbolsJITDylib(), llvm::orc::LLJIT::getTargetTriple(), llvm::inconvertibleErrorCode(), llvm::Triple::MachO, and llvm::Error::success().
Referenced by LLVMOrcLLJITEnableDebugSupport().
|
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.
|
static |
Definition at line 149 of file ObjectFileInterface.cpp.
References addInitSymbol(), llvm::JITSymbolFlags::Callable, llvm::JITSymbolFlags::Exported, llvm::JITSymbolFlags::fromObjectSymbol(), llvm::object::COFFObjectFile::getCOFFSymbol(), llvm::object::Binary::getFileName(), llvm::object::COFFObjectFile::getNumberOfSections(), llvm::object::COFFObjectFile::getSection(), I, llvm::COFF::IMAGE_COMDAT_SELECT_ASSOCIATIVE, llvm::COFF::IMAGE_COMDAT_SELECT_NODUPLICATES, llvm::COFF::IMAGE_SCN_LNK_COMDAT, llvm::orc::ExecutionSession::intern(), isCOFFInitializerSection(), llvm::COFF::isReservedSectionNumber(), Name, llvm::object::ObjectFile::sections(), llvm::object::BasicSymbolRef::SF_Global, llvm::object::BasicSymbolRef::SF_Undefined, llvm::object::SymbolRef::ST_File, Sym, llvm::object::ObjectFile::symbols(), llvm::Expected< T >::takeError(), and llvm::JITSymbolFlags::Weak.
Referenced by getObjectFileInterface().
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 86 of file ExecutionUtils.cpp.
References llvm::make_range().
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 92 of file ExecutionUtils.cpp.
References llvm::make_range().
|
static |
Definition at line 95 of file ObjectFileInterface.cpp.
References addInitSymbol(), llvm::JITSymbolFlags::fromObjectSymbol(), llvm::object::Binary::getFileName(), I, llvm::orc::ExecutionSession::intern(), isELFInitializerSection(), Name, llvm::object::ObjectFile::sections(), llvm::object::BasicSymbolRef::SF_Global, llvm::object::BasicSymbolRef::SF_Undefined, llvm::object::SymbolRef::ST_File, llvm::ELF::STB_GNU_UNIQUE, Sym, llvm::object::ELFObjectFileBase::symbols(), llvm::Expected< T >::takeError(), and llvm::JITSymbolFlags::Weak.
Referenced by getObjectFileInterface().
Expected< MaterializationUnit::Interface > llvm::orc::getGenericObjectFileSymbolInfo | ( | ExecutionSession & | ES, |
const object::ObjectFile & | Obj | ||
) |
Definition at line 231 of file ObjectFileInterface.cpp.
References llvm::JITSymbolFlags::fromObjectSymbol(), I, llvm::orc::ExecutionSession::intern(), Name, llvm::object::BasicSymbolRef::SF_Global, llvm::object::BasicSymbolRef::SF_Undefined, llvm::object::SymbolRef::ST_File, Sym, llvm::object::ObjectFile::symbols(), and llvm::Expected< T >::takeError().
Referenced by getObjectFileInterface().
IndirectStubsAllocationSizes llvm::orc::getIndirectStubsBlockSizes | ( | unsigned | MinStubs, |
unsigned | RoundToMultipleOf = 0 |
||
) |
Definition at line 37 of file OrcABISupport.h.
References llvm::alignTo(), and assert().
MachOHeaderInfo llvm::orc::getMachOHeaderInfoFromTriple | ( | const Triple & | TT | ) |
Definition at line 1818 of file MachOPlatform.cpp.
References llvm::Triple::aarch64, llvm::MachO::CPU_SUBTYPE_ARM64_ALL, llvm::MachO::CPU_SUBTYPE_X86_64_ALL, llvm::MachO::CPU_TYPE_ARM64, llvm::MachO::CPU_TYPE_X86_64, llvm_unreachable, and llvm::Triple::x86_64.
Referenced by createHeaderBlock().
|
static |
Definition at line 38 of file ObjectFileInterface.cpp.
References addInitSymbol(), llvm::cantFail(), llvm::JITSymbolFlags::fromObjectSymbol(), llvm::object::Binary::getFileName(), llvm::object::MachOObjectFile::getSectionFinalSegmentName(), llvm::object::MachOObjectFile::getSectionName(), llvm::object::MachOObjectFile::getSectionType(), I, llvm::orc::ExecutionSession::intern(), isMachOInitializerSection(), Name, llvm::MachO::S_MOD_INIT_FUNC_POINTERS, llvm::MachO::SECTION_TYPE, llvm::object::ObjectFile::sections(), llvm::object::BasicSymbolRef::SF_Global, llvm::object::BasicSymbolRef::SF_Undefined, llvm::object::SymbolRef::ST_File, Sym, llvm::object::ObjectFile::symbols(), and llvm::Expected< T >::takeError().
Referenced by getObjectFileInterface().
Expected< std::pair< size_t, size_t > > llvm::orc::getMachOSliceRangeForTriple | ( | MemoryBufferRef | UBBuf, |
const Triple & | TT | ||
) |
Utility for identifying the file-slice compatible with TT in a universal binary.
Definition at line 223 of file MachO.cpp.
References llvm::object::MachOUniversalBinary::create(), and getMachOSliceRangeForTriple().
Expected< std::pair< size_t, size_t > > llvm::orc::getMachOSliceRangeForTriple | ( | object::MachOUniversalBinary & | UB, |
const Triple & | TT | ||
) |
Utility for identifying the file-slice compatible with TT in a universal binary.
Definition at line 202 of file MachO.cpp.
References llvm::object::Binary::getFileName(), llvm::inconvertibleErrorCode(), llvm::object::MachOUniversalBinary::objects(), and llvm::Triple::UnknownVendor.
Referenced by llvm::orc::StaticLibraryDefinitionGenerator::Create(), getMachOSliceRangeForTriple(), and loadLinkableSliceFromMachOUniversalBinary().
Expected< MaterializationUnit::Interface > llvm::orc::getObjectFileInterface | ( | 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.
Definition at line 271 of file ObjectFileInterface.cpp.
References llvm::object::ObjectFile::createObjectFile(), getCOFFObjectFileSymbolInfo(), getELFObjectFileSymbolInfo(), getGenericObjectFileSymbolInfo(), and getMachOObjectFileSymbolInfo().
Referenced by llvm::orc::ObjectLayer::add(), llvm::orc::BasicObjectLayerMaterializationUnit::Create(), and llvm::orc::COFFPlatform::setupJITDylib().
|
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().
IRSymbolMapper::ManglingOptions llvm::orc::irManglingOptionsFromTargetOptions | ( | const TargetOptions & | Opts | ) |
Definition at line 26 of file CompileUtils.cpp.
References llvm::orc::IRSymbolMapper::ManglingOptions::EmulatedTLS, and llvm::TargetOptions::EmulatedTLS.
Definition at line 52 of file ObjectFormats.cpp.
References llvm::StringRef::starts_with().
Referenced by getCOFFObjectFileSymbolInfo().
Definition at line 231 of file DebugObjectManagerPlugin.cpp.
References DwarfSectionNames.
Definition at line 43 of file ObjectFormats.cpp.
References ELFInitSectionNames, and Name.
Referenced by getELFObjectFileSymbolInfo().
Definition at line 36 of file ObjectFormats.cpp.
References MachOInitSectionNames.
Definition at line 64 of file MachOObjectFormat.cpp.
References assert(), and MachOInitSectionNames.
Referenced by getMachOObjectFileSymbolInfo().
|
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 168 of file LazyReexports.h.
Referenced by llvm::orc::LazyObjectLinkingLayer::add(), llvm::orc::CompileOnDemandLayer::emit(), and LLVMOrcLazyReexports().
|
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 241 of file LazyReexports.h.
LLVM_ATTRIBUTE_USED void llvm::orc::linkComponents | ( | ) |
Definition at line 1314 of file LLJIT.cpp.
References llvm::errs(), llvm_orc_deregisterEHFrameSectionWrapper(), and llvm_orc_registerEHFrameSectionWrapper().
Expected< std::pair< std::unique_ptr< MemoryBuffer >, LinkableFileKind > > llvm::orc::loadLinkableFile | ( | StringRef | Path, |
const Triple & | TT, | ||
LoadArchives | LA, | ||
std::optional< StringRef > | IdentifierOverride = std::nullopt |
||
) |
Create a MemoryBuffer covering the "linkable" part of the given path.
The path must contain a relocatable object file or universal binary, or (if AllowArchives is true) an archive.
If the path is a universal binary then it must contain a slice whose architecture matches the architecture in the triple (an error will be returned if there is no such slice, or if the triple does not specify an architectur).
If the path (or universal binary slice) is a relocatable object file then its architecture must match the architecture in the triple (if given).
If the path (or universal binary slice) is a relocatable object file then its format must match the format in the triple (if given).
No verification (e.g. architecture or format) is performed on the contents of archives.
If IdentifierOverride is provided then it will be used as the name of the resulting buffer, rather than Path.
Definition at line 35 of file LoadLinkableFile.cpp.
References llvm::file_magic::archive, Archive, checkCOFFRelocatableObject(), checkELFRelocatableObject(), checkMachORelocatableObject(), llvm::sys::fs::closeFile(), llvm::Triple::COFF, llvm::file_magic::coff_object, llvm::createFileError(), llvm::Triple::ELF, llvm::file_magic::elf_relocatable, llvm::MemoryBuffer::getOpenFile(), llvm::identify_magic(), llvm::inconvertibleErrorCode(), loadLinkableSliceFromMachOUniversalBinary(), llvm::Triple::MachO, llvm::file_magic::macho_object, llvm::file_magic::macho_universal_binary, llvm::make_scope_exit(), Never, llvm::sys::fs::OF_None, llvm::sys::fs::openNativeFileForRead(), RelocatableObject, Required, llvm::Expected< T >::takeError(), and llvm::Triple::UnknownObjectFormat.
Referenced by llvm::orc::StaticLibraryDefinitionGenerator::Load().
Expected< std::pair< std::unique_ptr< MemoryBuffer >, LinkableFileKind > > llvm::orc::loadLinkableSliceFromMachOUniversalBinary | ( | sys::fs::file_t | FD, |
std::unique_ptr< MemoryBuffer > | UBBuf, | ||
const Triple & | TT, | ||
LoadArchives | LA, | ||
StringRef | UBPath, | ||
StringRef | Identifier | ||
) |
Load a compatible relocatable object (if available) from a MachO universal binary.
Path is only used for error reporting. Identifier will be used to name the resulting buffer.
Definition at line 142 of file MachO.cpp.
References Allowed, llvm::file_magic::archive, Archive, checkMachORelocatableObject(), llvm::object::MachOUniversalBinary::create(), getMachOSliceRangeForTriple(), llvm::MemoryBuffer::getOpenFileSlice(), llvm::identify_magic(), llvm::inconvertibleErrorCode(), llvm_unreachable, llvm::file_magic::macho_object, Never, RelocatableObject, and Required.
Referenced by loadLinkableFile(), and loadMachORelocatableObject().
Expected< std::pair< std::unique_ptr< MemoryBuffer >, LinkableFileKind > > llvm::orc::loadMachOLinkableFile | ( | StringRef | Path, |
const Triple & | TT, | ||
LoadArchives | LA, | ||
std::optional< StringRef > | IdentifierOverride = std::nullopt |
||
) |
Load a relocatable object compatible with TT from Path.
If Path is a universal binary, this function will return a buffer for the slice compatible with Triple (if one is present).
Expected< std::pair< std::unique_ptr< MemoryBuffer >, LinkableFileKind > > llvm::orc::loadMachORelocatableObject | ( | StringRef | Path, |
const Triple & | TT, | ||
LoadArchives | LA, | ||
std::optional< StringRef > | IdentifierOverride | ||
) |
Definition at line 98 of file MachO.cpp.
References assert(), checkMachORelocatableObject(), llvm::sys::fs::closeFile(), llvm::createFileError(), llvm::MemoryBuffer::getOpenFile(), llvm::identify_magic(), llvm::inconvertibleErrorCode(), loadLinkableSliceFromMachOUniversalBinary(), llvm::Triple::MachO, llvm::file_magic::macho_object, llvm::file_magic::macho_universal_binary, llvm::make_scope_exit(), Never, llvm::sys::fs::OF_None, llvm::sys::fs::openNativeFileForRead(), RelocatableObject, llvm::Expected< T >::takeError(), and llvm::Triple::UnknownObjectFormat.
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().
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 llvm::orc::ExecutorProcessControl::getDylibMgr(), H, I, llvm::inconvertibleErrorCode(), llvm::orc::DylibManager::lookupSymbols(), Result, and llvm::Error::success().
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().
|
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 35 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 lookupSymbolsAsyncHelper().
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 88 of file TaskDispatch.h.
References llvm::orc::GenericNamedTask::DefaultDescription.
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 79 of file TaskDispatch.h.
Referenced by llvm::orc::ExecutorProcessControl::RunAsTask::operator()().
|
inline |
Convenience function for creating a search order from an ArrayRef of JITDylib*, all with the same flags.
Definition at line 177 of file Core.h.
References llvm::ArrayRef< T >::size().
Referenced by llvm::orc::PerfSupportPlugin::Create(), llvm::orc::VTuneSupportPlugin::Create(), llvm::orc::JITCompileCallbackManager::executeCompileCallback(), llvm::orc::COFFVCRuntimeBootstrapper::initializeStaticVCRuntime(), llvm::orc::ExecutionSession::lookup(), llvm::orc::LLJIT::lookupLinkerMangled(), llvm::orc::Speculator::registerSymbols(), llvm::orc::LazyCallThroughManager::resolveTrampolineLandingAddress(), and llvm::orc::CtorDtorRunner::run().
Turn a function declaration into a stub function that makes an indirect call using the given function pointer.
Definition at line 290 of file IndirectionUtils.cpp.
References A, assert(), llvm::BasicBlock::Create(), llvm::IRBuilderBase::CreateCall(), llvm::IRBuilderBase::CreateLoad(), llvm::IRBuilderBase::CreateRet(), llvm::IRBuilderBase::CreateRetVoid(), and F.
|
static |
Definition at line 133 of file SimpleRemoteEPCUtils.cpp.
References llvm::inconvertibleErrorCode().
|
static |
Definition at line 22 of file MachO.cpp.
References llvm::MemoryBufferRef::getBufferIdentifier().
Referenced by checkMachORelocatableObject().
|
inline |
Taking the modulus of an address and a diff yields a diff.
Definition at line 216 of file ExecutorAddress.h.
|
inline |
Adding an offset and an address yields an address.
Definition at line 198 of file ExecutorAddress.h.
|
inline |
Adding an address and an offset yields an address.
Definition at line 204 of file ExecutorAddress.h.
|
inline |
Subtracting two addresses yields an offset.
Definition at line 192 of file ExecutorAddress.h.
|
inline |
Subtracting an offset from an address yields an address.
Definition at line 210 of file ExecutorAddress.h.
|
inline |
Print an AllocGroup.
Definition at line 205 of file MemoryFlags.h.
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
ArrayRef< SymbolStringPtr > | Symbols | ||
) |
Render an array of SymbolStringPtrs.
Definition at line 148 of file DebugUtils.cpp.
|
inline |
Definition at line 270 of file ExecutorAddress.h.
References A, llvm::formatv(), and OS.
|
inline |
Definition at line 274 of file ExecutorAddress.h.
References llvm::formatv(), and OS.
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const ExecutorSymbolDef & | Sym | ||
) |
Definition at line 170 of file DebugUtils.cpp.
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const JITDylibLookupFlags & | JDLookupFlags | ||
) |
Definition at line 219 of file DebugUtils.cpp.
References llvm_unreachable, MatchAllSymbols, MatchExportedSymbolsOnly, and OS.
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const JITDylibSearchOrder & | SearchOrder | ||
) |
Render a JITDylibSearchOrder.
Definition at line 250 of file DebugUtils.cpp.
References assert(), llvm::drop_begin(), and OS.
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const JITSymbolFlags & | Flags | ||
) |
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const LookupKind & | K | ||
) |
Render a LookupKind.
Definition at line 209 of file DebugUtils.cpp.
References DLSym, llvm_unreachable, OS, and Static.
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const MaterializationUnit & | MU | ||
) |
Render a MaterializationUnit.
Definition at line 202 of file DebugUtils.cpp.
References llvm::orc::MaterializationUnit::getName(), llvm::orc::MaterializationUnit::getSymbols(), and OS.
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const SymbolAliasMap & | Aliases | ||
) |
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const SymbolDependenceMap & | Deps | ||
) |
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const SymbolDependenceMap::value_type & | KV | ||
) |
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const SymbolFlagsMap & | SymbolFlags | ||
) |
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const SymbolFlagsMap::value_type & | KV | ||
) |
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const SymbolLookupFlags & | LookupFlags | ||
) |
Render a SymbolLookupFlags instance.
Definition at line 230 of file DebugUtils.cpp.
References llvm_unreachable, OS, RequiredSymbol, and WeaklyReferencedSymbol.
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const SymbolLookupSet & | LookupSet | ||
) |
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const SymbolLookupSet::value_type & | KV | ||
) |
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const SymbolMap & | Symbols | ||
) |
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const SymbolMap::value_type & | KV | ||
) |
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const SymbolNameSet & | Symbols | ||
) |
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const SymbolNameVector & | Symbols | ||
) |
Render a SymbolNameVector.
Definition at line 144 of file DebugUtils.cpp.
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const SymbolState & | S | ||
) |
Render a SymbolState.
Definition at line 276 of file DebugUtils.cpp.
References Emitted, Invalid, llvm_unreachable, Materializing, NeverSearched, OS, Ready, and Resolved.
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const SymbolStringPool & | SSP | ||
) |
Dump a SymbolStringPool. Useful for debugging dangling-pointer crashes.
Definition at line 294 of file DebugUtils.cpp.
raw_ostream & llvm::orc::operator<< | ( | raw_ostream & | OS, |
const SymbolStringPtrBase & | Sym | ||
) |
Definition at line 14 of file SymbolStringPool.cpp.
|
inline |
|
inline |
std::error_code llvm::orc::orcError | ( | OrcErrorCode | ErrCode | ) |
Definition at line 84 of file OrcError.cpp.
Referenced by llvm::orc::ResourceTrackerDefunct::convertToErrorCode(), llvm::orc::FailedToMaterialize::convertToErrorCode(), llvm::orc::UnsatisfiedSymbolDependencies::convertToErrorCode(), llvm::orc::SymbolsNotFound::convertToErrorCode(), llvm::orc::SymbolsCouldNotBeRemoved::convertToErrorCode(), llvm::orc::MissingSymbolDefinitions::convertToErrorCode(), llvm::orc::UnexpectedSymbolDefinitions::convertToErrorCode(), and llvm::orc::DuplicateDefinition::convertToErrorCode().
Error llvm::orc::preserveDebugSections | ( | jitlink::LinkGraph & | G | ) |
Definition at line 78 of file DebugInfoSupport.cpp.
References llvm::dbgs(), G, llvm::inconvertibleErrorCode(), LLVM_DEBUG, and llvm::Error::success().
Referenced by llvm::orc::DebugInfoPreservationPlugin::modifyPassConfig().
|
static |
Definition at line 407 of file EPCIndirectionUtils.cpp.
References Addr.
Referenced by setUpInProcessLCTMReentryViaEPCIU().
|
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 754 of file Core.h.
Referenced by llvm::orc::CompileOnDemandLayer::emit(), and llvm::orc::ReexportsGenerator::tryToGenerate().
Error llvm::orc::registerEHFrameSection | ( | const void * | EHFrameSectionAddr, |
size_t | EHFrameSectionSize | ||
) |
Register frames in the given eh-frame section with libunwind.
Definition at line 123 of file RegisterEHFrames.cpp.
References registerFrameWrapper().
Referenced by llvm::jitlink::InProcessEHFrameRegistrar::registerEHFrames(), and registerEHFrameWrapper().
Definition at line 31 of file RegisterEHFrames.cpp.
References __register_frame(), P, and llvm::Error::success().
Referenced by registerEHFrameSection().
int llvm::orc::runAsIntFunction | ( | int(*)(int) | Func, |
int | Arg | ||
) |
Definition at line 44 of file TargetExecutionUtils.cpp.
Referenced by llvm::orc::SelfExecutorProcessControl::runAsIntFunction(), and llvm::orc::rt_bootstrap::runAsIntFunctionWrapper().
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().
int llvm::orc::runAsVoidFunction | ( | int(*)(void) | Func | ) |
Definition at line 42 of file TargetExecutionUtils.cpp.
Referenced by llvm::orc::SelfExecutorProcessControl::runAsVoidFunction(), and llvm::orc::rt_bootstrap::runAsVoidFunctionWrapper().
Expected< JITDylibSP > llvm::orc::setUpGenericLLVMIRPlatform | ( | LLJIT & | J | ) |
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 1240 of file LLJIT.cpp.
References llvm::dbgs(), LLVM_DEBUG, and llvm::orc::LLJIT::setPlatformSupport().
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().
Configure the LLJIT instance to use orc runtime support.
This overload assumes that the client has manually configured a Platform object.
Definition at line 1115 of file LLJIT.cpp.
References llvm::dbgs(), LLVM_DEBUG, llvm::orc::LLJIT::setPlatformSupport(), and llvm::Error::success().
|
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:
Definition at line 745 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().
|
inline |
Convert a MemProt value to a corresponding sys::Memory::ProtectionFlags value.
Definition at line 44 of file MemoryFlags.h.
References Exec, llvm::sys::Memory::MF_EXEC, llvm::sys::Memory::MF_READ, llvm::sys::Memory::MF_WRITE, None, Read, and Write.
Referenced by llvm::orc::rt_bootstrap::SimpleExecutorMemoryManager::finalize(), and llvm::orc::InProcessMemoryMapper::initialize().
size_t llvm::orc::writeMachOStruct | ( | MutableArrayRef< char > | Buf, |
size_t | Offset, | ||
MachOStruct | S, | ||
bool | SwapStruct | ||
) |
Definition at line 28 of file MachOBuilder.h.
References assert(), llvm::Offset, llvm::ArrayRef< T >::size(), and llvm::MachO::swapStruct().
Referenced by llvm::orc::MachOBuilderLoadCommand< MachO::LC_ID_DYLIB >::write(), llvm::orc::MachOBuilderLoadCommand< MachO::LC_LOAD_DYLIB >::write(), llvm::orc::MachOBuilderLoadCommand< MachO::LC_RPATH >::write(), and llvm::orc::MachOBuilder< MachOTraits >::Segment::write().
Definition at line 224 of file DebugObjectManagerPlugin.cpp.
Referenced by isDwarfSection().
StringRef llvm::orc::ELFCtorArrayFuncSectionName = ".ctors" |
Definition at line 24 of file ObjectFormats.cpp.
StringRef llvm::orc::ELFDtorArrayFuncSectionName = ".dtors" |
Definition at line 25 of file ObjectFormats.cpp.
StringRef llvm::orc::ELFEHFrameSectionName = ".eh_frame" |
Definition at line 18 of file ObjectFormats.cpp.
StringRef llvm::orc::ELFFiniArrayFuncSectionName = ".fini_array" |
Definition at line 22 of file ObjectFormats.cpp.
StringRef llvm::orc::ELFFiniFuncSectionName = ".fini" |
Definition at line 23 of file ObjectFormats.cpp.
StringRef llvm::orc::ELFInitArrayFuncSectionName = ".init_array" |
Definition at line 20 of file ObjectFormats.cpp.
StringRef llvm::orc::ELFInitFuncSectionName = ".init" |
Definition at line 21 of file ObjectFormats.cpp.
StringRef llvm::orc::ELFInitSectionNames |
Definition at line 27 of file ObjectFormats.cpp.
Referenced by isELFInitializerSection().
StringRef llvm::orc::ELFThreadBSSSectionName = ".tbss" |
Definition at line 33 of file ObjectFormats.cpp.
StringRef llvm::orc::ELFThreadDataSectionName = ".tdata" |
Definition at line 34 of file ObjectFormats.cpp.
StringRef llvm::orc::MachOCompactUnwindInfoSectionName = "__TEXT,__unwind_info" |
Definition at line 21 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOCStringSectionName = "__TEXT,__cstring" |
Definition at line 22 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachODataCommonSectionName = "__DATA,__common" |
Definition at line 18 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachODataDataSectionName = "__DATA,__data" |
Definition at line 19 of file MachOObjectFormat.cpp.
Referenced by llvm::jitlink::getMachODefaultRWDataSection().
StringRef llvm::orc::MachOEHFrameSectionName = "__TEXT,__eh_frame" |
Definition at line 20 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOInitSectionNames |
Definition at line 50 of file MachOObjectFormat.cpp.
Referenced by isMachOInitializerSection().
StringRef llvm::orc::MachOModInitFuncSectionName = "__DATA,__mod_init_func" |
Definition at line 23 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOObjCCatList2SectionName = "__DATA,__objc_catlist2" |
Definition at line 25 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOObjCCatListSectionName = "__DATA,__objc_catlist" |
Definition at line 24 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOObjCClassListSectionName = "__DATA,__objc_classlist" |
Definition at line 26 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOObjCClassNameSectionName = "__TEXT,__objc_classname" |
Definition at line 27 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOObjCClassRefsSectionName = "__DATA,__objc_classrefs" |
Definition at line 28 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOObjCConstSectionName = "__DATA,__objc_const" |
Definition at line 29 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOObjCDataSectionName = "__DATA,__objc_data" |
Definition at line 30 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOObjCImageInfoSectionName = "__DATA,__objc_imageinfo" |
Definition at line 31 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOObjCMethNameSectionName = "__TEXT,__objc_methname" |
Definition at line 32 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOObjCMethTypeSectionName = "__TEXT,__objc_methtype" |
Definition at line 33 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOObjCNLCatListSectionName = "__DATA,__objc_nlcatlist" |
Definition at line 34 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOObjCNLClassListSectionName = "__DATA,__objc_nlclslist" |
Definition at line 35 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOObjCProtoListSectionName = "__DATA,__objc_protolist" |
Definition at line 36 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOObjCProtoRefsSectionName = "__DATA,__objc_protorefs" |
Definition at line 37 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOObjCSelRefsSectionName = "__DATA,__objc_selrefs" |
Definition at line 38 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOSwift5EntrySectionName = "__TEXT,__swift5_entry" |
Definition at line 44 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOSwift5FieldMetadataSectionName = "__TEXT,__swift5_fieldmd" |
Definition at line 43 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOSwift5ProtoSectionName = "__TEXT,__swift5_proto" |
Definition at line 39 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOSwift5ProtosSectionName = "__TEXT,__swift5_protos" |
Definition at line 40 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOSwift5TypeRefSectionName = "__TEXT,__swift5_typeref" |
Definition at line 42 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOSwift5TypesSectionName = "__TEXT,__swift5_types" |
Definition at line 41 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOTextTextSectionName = "__TEXT,__text" |
Definition at line 45 of file MachOObjectFormat.cpp.
Referenced by llvm::jitlink::getMachODefaultTextSection().
StringRef llvm::orc::MachOThreadBSSSectionName = "__DATA,__thread_bss" |
Definition at line 46 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOThreadDataSectionName = "__DATA,__thread_data" |
Definition at line 47 of file MachOObjectFormat.cpp.
StringRef llvm::orc::MachOThreadVarsSectionName = "__DATA,__thread_vars" |
Definition at line 48 of file MachOObjectFormat.cpp.
RegisterDependenciesFunction llvm::orc::NoDependenciesToRegister |
This can be used as the value for a RegisterDependenciesFunction if there are no dependants to register with.
Definition at line 38 of file Core.cpp.
Referenced by llvm::orc::JITLinkReentryTrampolines::emit(), LLVMOrcExecutionSessionLookup(), llvm::orc::ExecutionSession::lookup(), lookupAndRecordAddrs(), llvm::orc::SymbolInstance::lookupAsync(), llvm::orc::Platform::lookupInitSymbols(), llvm::orc::Platform::lookupInitSymbolsAsync(), llvm::orc::Speculator::registerSymbols(), and llvm::orc::LazyCallThroughManager::resolveTrampolineLandingAddress().