32 return LS.IPLS.release();
36 return LS.reset(IPLS);
93 Discard(Discard), Destroy(Destroy) {}
102 void materialize(std::unique_ptr<MaterializationResponsibility> R)
override {
105 Materialize(Tmp,
wrap(R.release()));
156 Result.reserve(Symbols.Length);
157 for (
size_t I = 0;
I != Symbols.Length; ++
I)
164 for (
size_t I = 0;
I != NumPairs; ++
I) {
175 for (
size_t I = 0;
I != NumPairs; ++
I) {
191 return LookupKind::Static;
193 return LookupKind::DLSym;
200 case LookupKind::Static:
202 case LookupKind::DLSym:
212 return JITDylibLookupFlags::MatchExportedSymbolsOnly;
214 return JITDylibLookupFlags::MatchAllSymbols;
222 case JITDylibLookupFlags::MatchExportedSymbolsOnly:
224 case JITDylibLookupFlags::MatchAllSymbols:
233 return SymbolLookupFlags::RequiredSymbol;
235 return SymbolLookupFlags::WeaklyReferencedSymbol;
242 case SymbolLookupFlags::RequiredSymbol:
244 case SymbolLookupFlags::WeaklyReferencedSymbol:
265 : Dispose(Dispose), Ctx(Ctx), TryToGenerate(TryToGenerate) {}
284 fromJITDylibLookupFlags(JDLookupFlags);
287 std::vector<LLVMOrcCLookupSetElement> CLookupSet;
288 CLookupSet.reserve(LookupSet.
size());
289 for (
auto &KV : LookupSet) {
293 CLookupSet.push_back({
Name, SLF});
297 auto Err =
unwrap(TryToGenerate(
::wrap(
this), Ctx, &LSR, CLookupKind,
298 ::wrap(&JD), CJDLookupFlags,
299 CLookupSet.data(), CLookupSet.size()));
319 unwrap(ES)->setErrorReporter(
320 [=](
Error Err) { ReportError(Ctx,
wrap(std::move(Err))); });
326 unwrap(ES)->getExecutorProcessControl().getSymbolStringPool().
get());
330 unwrap(SSP)->clearDeadEntries();
343 assert(ES &&
"ES cannot be null");
344 assert(SearchOrder &&
"SearchOrder cannot be null");
345 assert(Symbols &&
"Symbols cannot be null");
346 assert(HandleResult &&
"HandleResult cannot be null");
349 for (
size_t I = 0;
I != SearchOrderSize; ++
I)
350 SO.push_back({unwrap(SearchOrder[I].JD),
351 toJITDylibLookupFlags(SearchOrder[I].JDLookupFlags)});
354 for (
size_t I = 0;
I != SymbolsSize; ++
I)
356 toSymbolLookupFlags(Symbols[
I].LookupFlags));
359 toLookupKind(K), SO, std::move(SLS), SymbolState::Ready,
365 wrap(SymbolStringPoolEntryUnsafe::from(KV.first)),
366 fromExecutorSymbolDef(KV.second)});
369 HandleResult(
wrap(
Result.takeError()),
nullptr, 0, Ctx);
388 auto RT =
unwrap(JD)->createResourceTracker();
391 return wrap(RT.get());
396 auto RT =
unwrap(JD)->getDefaultResourceTracker();
398 return wrap(RT.get());
418 std::unique_ptr<DefinitionGenerator> TmpDG(
unwrap(DG));
422 std::unique_ptr<MaterializationUnit> TmpMU(
unwrap(MU));
432 for (
size_t I = 0;
I != NumSyms; ++
I)
434 toJITSymbolFlags(Syms[
I].Flags);
438 return wrap(
new OrcCAPIMaterializationUnit(
439 Name, std::move(SFM), std::move(IS), Ctx, Materialize, Discard, Destroy));
444 SymbolMap SM = toSymbolMap(Syms, NumPairs);
454 for (
size_t I = 0;
I != NumPairs; ++
I) {
455 auto pair = CallableAliases[
I];
469 std::unique_ptr<MaterializationResponsibility> TmpMR(
unwrap(MR));
474 return wrap(&
unwrap(MR)->getTargetJITDylib());
480 return wrap(&
unwrap(MR)->getExecutionSession());
486 auto Symbols =
unwrap(MR)->getSymbols();
490 for (
auto const &pair : Symbols) {
492 auto Flags = pair.second;
496 *NumPairs = Symbols.size();
507 auto Sym =
unwrap(MR)->getInitializerSymbol();
515 auto Symbols =
unwrap(MR)->getRequestedSymbols();
520 for (
auto &
Name : Symbols) {
524 *NumSymbols = Symbols.size();
535 SymbolMap SM = toSymbolMap(Symbols, NumSymbols);
536 return wrap(
unwrap(MR)->notifyResolved(std::move(SM)));
542 std::vector<SymbolDependenceGroup> SDGs;
543 SDGs.reserve(NumSymbolDepGroups);
544 for (
size_t I = 0;
I != NumSymbolDepGroups; ++
I) {
546 auto &SDG = SDGs.back();
547 SDG.Symbols = toSymbolNameSet(SymbolDepGroups[
I].Symbols);
548 SDG.Dependencies = toSymbolDependenceMap(
549 SymbolDepGroups[
I].Dependencies, SymbolDepGroups[
I].NumDependencies);
558 for (
size_t I = 0;
I != NumSyms; ++
I)
560 toJITSymbolFlags(Syms[
I].Flags);
562 return wrap(
unwrap(MR)->defineMaterializing(std::move(SFM)));
568 std::unique_ptr<MaterializationUnit> TmpMU(
unwrap(MU));
577 for (
size_t I = 0;
I != NumSymbols;
I++) {
580 auto OtherMR =
unwrap(MR)->delegate(Syms);
583 return wrap(OtherMR.takeError());
591 unwrap(MR)->failMaterialization();
597 std::unique_ptr<ThreadSafeModule> TmpTSM(
unwrap(TSM));
599 std::unique_ptr<MaterializationResponsibility>(
unwrap(MR)),
615 return wrap(JD.takeError());
628 std::unique_ptr<MaterializationUnit> TmpMU(
unwrap(MU));
630 if (
auto Err =
unwrap(JD)->define(TmpMU)) {
632 return wrap(std::move(Err));
643 unwrap(JD)->addGenerator(std::unique_ptr<DefinitionGenerator>(
unwrap(DG)));
649 auto DG = std::make_unique<CAPIDefinitionGenerator>(Dispose, Ctx,
F);
650 return wrap(DG.release());
657 LS.continueLookup(
unwrap(Err));
665 "if Filter is null then FilterCtx must also be null");
673 auto ProcessSymsGenerator =
676 if (!ProcessSymsGenerator) {
678 return wrap(ProcessSymsGenerator.takeError());
681 *
Result =
wrap(ProcessSymsGenerator->release());
689 assert(FileName &&
"FileName can not be null");
691 "if Filter is null then FilterCtx must also be null");
699 auto LibrarySymsGenerator =
702 if (!LibrarySymsGenerator) {
704 return wrap(LibrarySymsGenerator.takeError());
707 *
Result =
wrap(LibrarySymsGenerator->release());
713 const char *FileName) {
715 assert(FileName &&
"Filename can not be null");
716 assert(ObjLayer &&
"ObjectLayer can not be null");
718 auto LibrarySymsGenerator =
720 if (!LibrarySymsGenerator) {
722 return wrap(LibrarySymsGenerator.takeError());
724 *
Result =
wrap(LibrarySymsGenerator->release());
767 return wrap(JTMB.takeError());
776 auto *TemplateTM =
unwrap(TM);
779 std::make_unique<JITTargetMachineBuilder>(TemplateTM->getTargetTriple());
782 .setCPU(TemplateTM->getTargetCPU().str())
783 .setRelocationModel(TemplateTM->getRelocationModel())
784 .setCodeModel(TemplateTM->getCodeModel())
785 .setCodeGenOptLevel(TemplateTM->getOptLevel())
786 .setFeatures(TemplateTM->getTargetFeatureString())
787 .setOptions(TemplateTM->Options);
791 return wrap(JTMB.release());
801 auto Tmp =
unwrap(JTMB)->getTargetTriple().str();
802 char *TargetTriple = (
char *)malloc(Tmp.size() + 1);
803 strcpy(TargetTriple, Tmp.c_str());
816 *
unwrap(JD), std::unique_ptr<MemoryBuffer>(
unwrap(ObjBuffer))));
824 std::unique_ptr<MemoryBuffer>(
unwrap(ObjBuffer))));
831 std::unique_ptr<MaterializationResponsibility>(
unwrap(R)),
832 std::unique_ptr<MemoryBuffer>(
unwrap(ObjBuffer)));
849 assert(!TSMRef &&
"TSMRef was not reset to null on error");
852 assert(TSMRef &&
"Transform succeeded, but TSMRef was set to null");
863 ->setTransform([TransformFunction, Ctx](std::unique_ptr<MemoryBuffer> Obj)
864 ->
Expected<std::unique_ptr<MemoryBuffer>> {
866 if (
LLVMErrorRef Err = TransformFunction(Ctx, &ObjBuffer)) {
867 assert(!ObjBuffer &&
"ObjBuffer was not reset to null on error");
870 return std::unique_ptr<MemoryBuffer>(
unwrap(ObjBuffer));
875 const char *IdentifierOverride) {
876 assert(DumpDir &&
"DumpDir should not be null");
877 assert(IdentifierOverride &&
"IdentifierOverride should not be null");
887 std::unique_ptr<MemoryBuffer> OB(
unwrap(*ObjBuffer));
892 *ObjBuffer =
nullptr;
907 unwrap(Builder)->setJITTargetMachineBuilder(std::move(*
unwrap(JTMB)));
914 unwrap(Builder)->setObjectLinkingLayerCreator(
916 auto TTStr = TT.str();
917 return std::unique_ptr<ObjectLayer>(
929 auto J =
unwrap(Builder)->create();
934 return wrap(J.takeError());
947 return wrap(&
unwrap(J)->getExecutionSession());
955 return unwrap(J)->getTargetTriple().str().c_str();
959 return unwrap(J)->getDataLayout().getGlobalPrefix();
965 unwrap(J)->mangleAndIntern(UnmangledName)));
971 *
unwrap(JD), std::unique_ptr<MemoryBuffer>(
unwrap(ObjBuffer))));
979 std::unique_ptr<MemoryBuffer>(
unwrap(ObjBuffer))));
985 std::unique_ptr<ThreadSafeModule> TmpTSM(
unwrap(TSM));
992 std::unique_ptr<ThreadSafeModule> TmpTSM(
unwrap(TSM));
994 std::move(*TmpTSM)));
1013 return wrap(&
unwrap(J)->getObjLinkingLayer());
1018 return wrap(&
unwrap(J)->getObjTransformLayer());
1024 assert(ES &&
"ES must not be null");
1026 *
unwrap(ES), [] {
return std::make_unique<SectionMemoryManager>(); }));
1039 struct MCJITMemoryManagerLikeCallbacks {
1040 MCJITMemoryManagerLikeCallbacks() =
default;
1041 MCJITMemoryManagerLikeCallbacks(
1042 void *CreateContextCtx,
1049 : CreateContextCtx(CreateContextCtx), CreateContext(CreateContext),
1050 NotifyTerminating(NotifyTerminating),
1051 AllocateCodeSection(AllocateCodeSection),
1052 AllocateDataSection(AllocateDataSection),
1053 FinalizeMemory(FinalizeMemory), Destroy(Destroy) {}
1055 MCJITMemoryManagerLikeCallbacks(MCJITMemoryManagerLikeCallbacks &&
Other) {
1065 ~MCJITMemoryManagerLikeCallbacks() {
1066 if (NotifyTerminating)
1067 NotifyTerminating(CreateContextCtx);
1070 void *CreateContextCtx =
nullptr;
1081 MCJITMemoryManagerLikeCallbacksMemMgr(
1082 const MCJITMemoryManagerLikeCallbacks &CBs)
1084 Opaque = CBs.CreateContext(CBs.CreateContextCtx);
1086 ~MCJITMemoryManagerLikeCallbacksMemMgr()
override { CBs.Destroy(Opaque); }
1091 return CBs.AllocateCodeSection(Opaque,
Size, Alignment, SectionID,
1097 bool isReadOnly)
override {
1098 return CBs.AllocateDataSection(Opaque,
Size, Alignment, SectionID,
1103 char *ErrMsgCString =
nullptr;
1104 bool Result = CBs.FinalizeMemory(Opaque, &ErrMsgCString);
1106 "Did not expect an error message if FinalizeMemory succeeded");
1107 if (ErrMsgCString) {
1109 *ErrMsg = ErrMsgCString;
1110 free(ErrMsgCString);
1116 const MCJITMemoryManagerLikeCallbacks &CBs;
1117 void *Opaque =
nullptr;
1120 assert(ES &&
"ES must not be null");
1121 assert(CreateContext &&
"CreateContext must not be null");
1122 assert(NotifyTerminating &&
"NotifyTerminating must not be null");
1123 assert(AllocateCodeSection &&
"AllocateCodeSection must not be null");
1124 assert(AllocateDataSection &&
"AllocateDataSection must not be null");
1125 assert(FinalizeMemory &&
"FinalizeMemory must not be null");
1126 assert(Destroy &&
"Destroy must not be null");
1128 MCJITMemoryManagerLikeCallbacks CBs(
1129 CreateContextCtx, CreateContext, NotifyTerminating, AllocateCodeSection,
1130 AllocateDataSection, FinalizeMemory, Destroy);
1133 return std::make_unique<MCJITMemoryManagerLikeCallbacksMemMgr>(CBs);
1142 assert(RTDyldObjLinkingLayer &&
"RTDyldObjLinkingLayer must not be null");
1143 assert(Listener &&
"Listener must not be null");
1145 ->registerJITEventListener(*
unwrap(Listener));
1149 return wrap(&
unwrap(J)->getIRTransformLayer());
1153 return unwrap(J)->getDataLayout().getStringRepresentation().c_str();
1163 std::unique_ptr<IndirectStubsManager> TmpISM(
unwrap(ISM));
1174 return wrap(LCTM.takeError());
1181 std::unique_ptr<LazyCallThroughManager> TmpLCM(
unwrap(LCM));
#define DEFINE_SIMPLE_CONVERSION_FUNCTIONS(ty, ref)
std::optional< std::vector< StOtherPiece > > Other
LLVM_C_EXTERN_C_BEGIN typedef void *(* LLVMMemoryManagerCreateContextCallback)(void *CtxCtx)
void(* LLVMMemoryManagerNotifyTerminatingCallback)(void *CtxCtx)
LLVMErrorRef LLVMOrcCreateStaticLibrarySearchGeneratorForPath(LLVMOrcDefinitionGeneratorRef *Result, LLVMOrcObjectLayerRef ObjLayer, const char *FileName)
LLVMOrcSymbolStringPoolEntryRef wrap(SymbolStringPoolEntryUnsafe E)
SymbolStringPoolEntryUnsafe unwrap(LLVMOrcSymbolStringPoolEntryRef E)
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
StringRef getName() const override
Return the name of this materialization unit.
~OrcCAPIMaterializationUnit()
void materialize(std::unique_ptr< MaterializationResponsibility > R) override
Implementations of this method should materialize all symbols in the materialzation unit,...
OrcCAPIMaterializationUnit(std::string Name, SymbolFlagsMap InitialSymbolFlags, SymbolStringPtr InitSymbol, void *Ctx, LLVMOrcMaterializationUnitMaterializeFunction Materialize, LLVMOrcMaterializationUnitDiscardFunction Discard, LLVMOrcMaterializationUnitDestroyFunction Destroy)
Lightweight error class with error context and mandatory checking.
Tagged union holding either a T or a Error.
Flags for symbols in the JIT.
TargetFlagsType & getTargetFlags()
Return a reference to the target-specific flags.
@ MaterializationSideEffectsOnly
A Module instance is used to store all the information related to an LLVM module.
virtual uint8_t * allocateDataSection(uintptr_t Size, unsigned Alignment, unsigned SectionID, StringRef SectionName, bool IsReadOnly)=0
Allocate a memory block of (at least) the given size suitable for data.
virtual uint8_t * allocateCodeSection(uintptr_t Size, unsigned Alignment, unsigned SectionID, StringRef SectionName)=0
Allocate a memory block of (at least) the given size suitable for executable code.
virtual bool finalizeMemory(std::string *ErrMsg=nullptr)=0
This method is called when object loading is complete and section page permissions can be applied.
void push_back(const T &Elt)
pointer data()
Return a pointer to the vector's buffer, even if empty().
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
StringMapEntry - This is used to represent one value that is inserted into a StringMap.
StringRef - Represent a constant reference to a string, i.e.
constexpr const char * data() const
data - Get a pointer to the start of the string (which may not be null terminated).
Primary interface to the complete machine description for the target machine.
Triple - Helper class for working with autoconf configuration names.
std::pair< iterator, bool > insert(const ValueT &V)
Error tryToGenerate(LookupState &LS, LookupKind K, JITDylib &JD, JITDylibLookupFlags JDLookupFlags, const SymbolLookupSet &LookupSet) override
DefinitionGenerators should override this method to insert new definitions into the parent JITDylib.
CAPIDefinitionGenerator(LLVMOrcDisposeCAPIDefinitionGeneratorFunction Dispose, void *Ctx, LLVMOrcCAPIDefinitionGeneratorTryToGenerateFunction TryToGenerate)
~CAPIDefinitionGenerator()
Definition generators can be attached to JITDylibs to generate new definitions for otherwise unresolv...
A function object that can be used as an ObjectTransformLayer transform to dump object files to disk ...
std::function< bool(const SymbolStringPtr &)> SymbolPredicate
static Expected< std::unique_ptr< DynamicLibrarySearchGenerator > > Load(const char *FileName, char GlobalPrefix, SymbolPredicate Allow=SymbolPredicate(), AddAbsoluteSymbolsFn AddAbsoluteSymbols=nullptr)
Permanently loads the library at the given path and, on success, returns a DynamicLibrarySearchGenera...
static Expected< std::unique_ptr< DynamicLibrarySearchGenerator > > GetForCurrentProcess(char GlobalPrefix, SymbolPredicate Allow=SymbolPredicate(), AddAbsoluteSymbolsFn AddAbsoluteSymbols=nullptr)
Creates a DynamicLibrarySearchGenerator that searches for symbols in the current process.
An ExecutionSession represents a running JIT program.
Represents an address in the executor process.
uint64_t getValue() const
Represents a defining location for a JIT symbol.
const JITSymbolFlags & getFlags() const
const ExecutorAddr & getAddress() const
Interface for layers that accept LLVM IR.
Base class for managing collections of named indirect stubs.
Represents a JIT'd dynamic library.
A utility class for building TargetMachines for JITs.
static Expected< JITTargetMachineBuilder > detectHost()
Create a JITTargetMachineBuilder for the host system.
Constructs LLJIT instances.
A pre-fabricated ORC JIT stack that can serve as an alternative to MCJIT.
Manages a set of 'lazy call-through' trampolines.
Wraps state for a lookup-in-progress.
Tracks responsibility for materialization, and mediates interactions between MaterializationUnits and...
A MaterializationUnit represents a set of symbol definitions that can be materialized as a group,...
Interface for Layers that accept object files.
static InProgressLookupState * extractLookupState(LookupState &LS)
static void resetLookupState(LookupState &LS, InProgressLookupState *IPLS)
API to remove / transfer ownership of JIT resources.
void transferTo(ResourceTracker &DstRT)
Transfer all resources associated with this key to the given tracker, which must target the same JITD...
Error remove()
Remove all resources associated with this key.
static Expected< std::unique_ptr< StaticLibraryDefinitionGenerator > > Load(ObjectLayer &L, const char *FileName, VisitMembersFunction VisitMembers=VisitMembersFunction(), GetObjectFileInterface GetObjFileInterface=GetObjectFileInterface())
Try to create a StaticLibraryDefinitionGenerator from the given path.
A set of symbols to look up, each associated with a SymbolLookupFlags value.
UnderlyingVector::size_type size() const
SymbolLookupSet & add(SymbolStringPtr Name, SymbolLookupFlags Flags=SymbolLookupFlags::RequiredSymbol)
Add an element to the set.
Provides unsafe access to ownership operations on SymbolStringPtr.
static SymbolStringPoolEntryUnsafe from(const SymbolStringPtr &S)
Create an unsafe pool entry ref without changing the ref-count.
static SymbolStringPoolEntryUnsafe take(SymbolStringPtr &&S)
Consumes the given SymbolStringPtr without releasing the pool entry.
SymbolStringPtr moveToSymbolStringPtr()
Creates a SymbolStringPtr for this entry without performing a retain operation during construction.
String pool for symbol names used by the JIT.
Pointer to a pooled string representing a symbol name.
An LLVMContext together with an associated mutex that can be used to lock the context to prevent conc...
An LLVM Module together with a shared ThreadSafeContext.
struct LLVMOpaqueError * LLVMErrorRef
Opaque reference to an error instance.
LLVMErrorRef LLVMOrcLLJITAddObjectFile(LLVMOrcLLJITRef J, LLVMOrcJITDylibRef JD, LLVMMemoryBufferRef ObjBuffer)
Add a buffer representing an object file to the given JITDylib in the given LLJIT instance.
LLVMErrorRef LLVMOrcLLJITAddLLVMIRModuleWithRT(LLVMOrcLLJITRef J, LLVMOrcResourceTrackerRef RT, LLVMOrcThreadSafeModuleRef TSM)
Add an IR module to the given ResourceTracker's JITDylib in the given LLJIT instance.
struct LLVMOrcOpaqueLLJIT * LLVMOrcLLJITRef
A reference to an orc::LLJIT instance.
LLVMOrcObjectLayerRef(* LLVMOrcLLJITBuilderObjectLinkingLayerCreatorFunction)(void *Ctx, LLVMOrcExecutionSessionRef ES, const char *Triple)
A function for constructing an ObjectLinkingLayer instance to be used by an LLJIT instance.
void LLVMOrcLLJITBuilderSetJITTargetMachineBuilder(LLVMOrcLLJITBuilderRef Builder, LLVMOrcJITTargetMachineBuilderRef JTMB)
Set the JITTargetMachineBuilder to be used when constructing the LLJIT instance.
LLVMErrorRef LLVMOrcDisposeLLJIT(LLVMOrcLLJITRef J)
Dispose of an LLJIT instance.
LLVMOrcObjectLayerRef LLVMOrcLLJITGetObjLinkingLayer(LLVMOrcLLJITRef J)
Returns a non-owning reference to the LLJIT instance's object linking layer.
LLVMErrorRef LLVMOrcLLJITAddLLVMIRModule(LLVMOrcLLJITRef J, LLVMOrcJITDylibRef JD, LLVMOrcThreadSafeModuleRef TSM)
Add an IR module to the given JITDylib in the given LLJIT instance.
LLVMErrorRef LLVMOrcLLJITAddObjectFileWithRT(LLVMOrcLLJITRef J, LLVMOrcResourceTrackerRef RT, LLVMMemoryBufferRef ObjBuffer)
Add a buffer representing an object file to the given ResourceTracker's JITDylib in the given LLJIT i...
LLVMOrcSymbolStringPoolEntryRef LLVMOrcLLJITMangleAndIntern(LLVMOrcLLJITRef J, const char *UnmangledName)
Mangles the given string according to the LLJIT instance's DataLayout, then interns the result in the...
LLVMOrcJITDylibRef LLVMOrcLLJITGetMainJITDylib(LLVMOrcLLJITRef J)
Return a reference to the Main JITDylib.
struct LLVMOrcOpaqueLLJITBuilder * LLVMOrcLLJITBuilderRef
A reference to an orc::LLJITBuilder instance.
void LLVMOrcLLJITBuilderSetObjectLinkingLayerCreator(LLVMOrcLLJITBuilderRef Builder, LLVMOrcLLJITBuilderObjectLinkingLayerCreatorFunction F, void *Ctx)
Set an ObjectLinkingLayer creator function for this LLJIT instance.
LLVMOrcIRTransformLayerRef LLVMOrcLLJITGetIRTransformLayer(LLVMOrcLLJITRef J)
Returns a non-owning reference to the LLJIT instance's IR transform layer.
const char * LLVMOrcLLJITGetTripleString(LLVMOrcLLJITRef J)
Return the target triple for this LLJIT instance.
LLVMOrcLLJITBuilderRef LLVMOrcCreateLLJITBuilder(void)
Create an LLVMOrcLLJITBuilder.
void LLVMOrcDisposeLLJITBuilder(LLVMOrcLLJITBuilderRef Builder)
Dispose of an LLVMOrcLLJITBuilderRef.
LLVMOrcExecutionSessionRef LLVMOrcLLJITGetExecutionSession(LLVMOrcLLJITRef J)
Get a reference to the ExecutionSession for this LLJIT instance.
LLVMOrcObjectTransformLayerRef LLVMOrcLLJITGetObjTransformLayer(LLVMOrcLLJITRef J)
Returns a non-owning reference to the LLJIT instance's object linking layer.
LLVMErrorRef LLVMOrcCreateLLJIT(LLVMOrcLLJITRef *Result, LLVMOrcLLJITBuilderRef Builder)
Create an LLJIT instance from an LLJITBuilder.
char LLVMOrcLLJITGetGlobalPrefix(LLVMOrcLLJITRef J)
Returns the global prefix character according to the LLJIT's DataLayout.
const char * LLVMOrcLLJITGetDataLayoutStr(LLVMOrcLLJITRef J)
Get the LLJIT instance's default data layout string.
LLVMErrorRef LLVMOrcLLJITLookup(LLVMOrcLLJITRef J, LLVMOrcJITTargetAddress *Result, const char *Name)
Look up the given symbol in the main JITDylib of the given LLJIT instance.
LLVMOrcObjectLayerRef LLVMOrcCreateRTDyldObjectLinkingLayerWithMCJITMemoryManagerLikeCallbacks(LLVMOrcExecutionSessionRef ES, void *CreateContextCtx, LLVMMemoryManagerCreateContextCallback CreateContext, LLVMMemoryManagerNotifyTerminatingCallback NotifyTerminating, LLVMMemoryManagerAllocateCodeSectionCallback AllocateCodeSection, LLVMMemoryManagerAllocateDataSectionCallback AllocateDataSection, LLVMMemoryManagerFinalizeMemoryCallback FinalizeMemory, LLVMMemoryManagerDestroyCallback Destroy)
Create a RTDyldObjectLinkingLayer instance using MCJIT-memory-manager-like callbacks.
LLVMOrcObjectLayerRef LLVMOrcCreateRTDyldObjectLinkingLayerWithSectionMemoryManager(LLVMOrcExecutionSessionRef ES)
Create a RTDyldObjectLinkingLayer instance using the standard SectionMemoryManager for memory managem...
void LLVMOrcRTDyldObjectLinkingLayerRegisterJITEventListener(LLVMOrcObjectLayerRef RTDyldObjLinkingLayer, LLVMJITEventListenerRef Listener)
Add the given listener to the given RTDyldObjectLinkingLayer.
uint64_t LLVMOrcJITTargetAddress
Represents an address in the executor process.
void LLVMOrcDisposeMaterializationResponsibility(LLVMOrcMaterializationResponsibilityRef MR)
Disposes of the passed MaterializationResponsibility object.
LLVMErrorRef(* LLVMOrcGenericIRModuleOperationFunction)(void *Ctx, LLVMModuleRef M)
A function for inspecting/mutating IR modules, suitable for use with LLVMOrcThreadSafeModuleWithModul...
LLVMOrcSymbolStringPoolRef LLVMOrcExecutionSessionGetSymbolStringPool(LLVMOrcExecutionSessionRef ES)
Return a reference to the SymbolStringPool for an ExecutionSession.
void LLVMOrcSymbolStringPoolClearDeadEntries(LLVMOrcSymbolStringPoolRef SSP)
Clear all unreferenced symbol string pool entries.
LLVMOrcLookupKind
Lookup kind.
void LLVMOrcDisposeCSymbolFlagsMap(LLVMOrcCSymbolFlagsMapPairs Pairs)
Disposes of the passed LLVMOrcCSymbolFlagsMap.
LLVMOrcSymbolStringPoolEntryRef * LLVMOrcMaterializationResponsibilityGetRequestedSymbols(LLVMOrcMaterializationResponsibilityRef MR, size_t *NumSymbols)
Returns the names of any symbols covered by this MaterializationResponsibility object that have queri...
LLVMOrcJITDylibRef LLVMOrcMaterializationResponsibilityGetTargetDylib(LLVMOrcMaterializationResponsibilityRef MR)
Returns the target JITDylib that these symbols are being materialized into.
LLVMErrorRef LLVMOrcObjectLayerAddObjectFileWithRT(LLVMOrcObjectLayerRef ObjLayer, LLVMOrcResourceTrackerRef RT, LLVMMemoryBufferRef ObjBuffer)
Add an object to an ObjectLayer using the given ResourceTracker.
LLVMOrcCSymbolFlagsMapPairs LLVMOrcMaterializationResponsibilityGetSymbols(LLVMOrcMaterializationResponsibilityRef MR, size_t *NumPairs)
Returns the symbol flags map for this responsibility instance.
LLVMErrorRef LLVMOrcCreateLocalLazyCallThroughManager(const char *TargetTriple, LLVMOrcExecutionSessionRef ES, LLVMOrcJITTargetAddress ErrorHandlerAddr, LLVMOrcLazyCallThroughManagerRef *Result)
void LLVMOrcDisposeMaterializationUnit(LLVMOrcMaterializationUnitRef MU)
Dispose of a MaterializationUnit.
LLVMErrorRef LLVMOrcThreadSafeModuleWithModuleDo(LLVMOrcThreadSafeModuleRef TSM, LLVMOrcGenericIRModuleOperationFunction F, void *Ctx)
Apply the given function to the module contained in this ThreadSafeModule.
LLVMOrcMaterializationUnitRef LLVMOrcCreateCustomMaterializationUnit(const char *Name, void *Ctx, LLVMOrcCSymbolFlagsMapPairs Syms, size_t NumSyms, LLVMOrcSymbolStringPoolEntryRef InitSym, LLVMOrcMaterializationUnitMaterializeFunction Materialize, LLVMOrcMaterializationUnitDiscardFunction Discard, LLVMOrcMaterializationUnitDestroyFunction Destroy)
Create a custom MaterializationUnit.
struct LLVMOrcOpaqueObjectTransformLayer * LLVMOrcObjectTransformLayerRef
A reference to an orc::ObjectTransformLayer instance.
LLVMOrcExecutionSessionRef LLVMOrcMaterializationResponsibilityGetExecutionSession(LLVMOrcMaterializationResponsibilityRef MR)
Returns the ExecutionSession for this MaterializationResponsibility.
void LLVMOrcIRTransformLayerEmit(LLVMOrcIRTransformLayerRef IRLayer, LLVMOrcMaterializationResponsibilityRef MR, LLVMOrcThreadSafeModuleRef TSM)
LLVMErrorRef LLVMOrcMaterializationResponsibilityReplace(LLVMOrcMaterializationResponsibilityRef MR, LLVMOrcMaterializationUnitRef MU)
Transfers responsibility to the given MaterializationUnit for all symbols defined by that Materializa...
LLVMOrcResourceTrackerRef LLVMOrcJITDylibCreateResourceTracker(LLVMOrcJITDylibRef JD)
Return a reference to a newly created resource tracker associated with JD.
LLVMErrorRef(* LLVMOrcObjectTransformLayerTransformFunction)(void *Ctx, LLVMMemoryBufferRef *ObjInOut)
A function for applying transformations to an object file buffer.
LLVMOrcMaterializationUnitRef LLVMOrcAbsoluteSymbols(LLVMOrcCSymbolMapPairs Syms, size_t NumPairs)
Create a MaterializationUnit to define the given symbols as pointing to the corresponding raw address...
LLVMOrcThreadSafeModuleRef LLVMOrcCreateNewThreadSafeModule(LLVMModuleRef M, LLVMOrcThreadSafeContextRef TSCtx)
Create a ThreadSafeModule wrapper around the given LLVM module.
LLVMErrorRef LLVMOrcResourceTrackerRemove(LLVMOrcResourceTrackerRef RT)
Remove all resources associated with the given tracker.
void LLVMOrcDisposeObjectLayer(LLVMOrcObjectLayerRef ObjLayer)
Dispose of an ObjectLayer.
void LLVMOrcDisposeThreadSafeModule(LLVMOrcThreadSafeModuleRef TSM)
Dispose of a ThreadSafeModule.
void LLVMOrcObjectTransformLayerSetTransform(LLVMOrcObjectTransformLayerRef ObjTransformLayer, LLVMOrcObjectTransformLayerTransformFunction TransformFunction, void *Ctx)
Set the transform function on an LLVMOrcObjectTransformLayer.
struct LLVMOrcOpaqueJITTargetMachineBuilder * LLVMOrcJITTargetMachineBuilderRef
A reference to an orc::JITTargetMachineBuilder instance.
void LLVMOrcExecutionSessionLookup(LLVMOrcExecutionSessionRef ES, LLVMOrcLookupKind K, LLVMOrcCJITDylibSearchOrder SearchOrder, size_t SearchOrderSize, LLVMOrcCLookupSet Symbols, size_t SymbolsSize, LLVMOrcExecutionSessionLookupHandleResultFunction HandleResult, void *Ctx)
Look up symbols in an execution session.
void LLVMOrcDisposeDefinitionGenerator(LLVMOrcDefinitionGeneratorRef DG)
Dispose of a JITDylib::DefinitionGenerator.
void(* LLVMOrcErrorReporterFunction)(void *Ctx, LLVMErrorRef Err)
Error reporter function.
LLVMErrorRef LLVMOrcJITTargetMachineBuilderDetectHost(LLVMOrcJITTargetMachineBuilderRef *Result)
Create a JITTargetMachineBuilder by detecting the host.
struct LLVMOrcOpaqueMaterializationResponsibility * LLVMOrcMaterializationResponsibilityRef
A reference to a uniquely owned orc::MaterializationResponsibility instance.
void(* LLVMOrcDisposeCAPIDefinitionGeneratorFunction)(void *Ctx)
Disposer for a custom generator.
struct LLVMOrcOpaqueThreadSafeModule * LLVMOrcThreadSafeModuleRef
A reference to an orc::ThreadSafeModule instance.
LLVMOrcResourceTrackerRef LLVMOrcJITDylibGetDefaultResourceTracker(LLVMOrcJITDylibRef JD)
Return a reference to the default resource tracker for the given JITDylib.
struct LLVMOrcOpaqueExecutionSession * LLVMOrcExecutionSessionRef
A reference to an orc::ExecutionSession instance.
LLVMOrcSymbolStringPoolEntryRef LLVMOrcMaterializationResponsibilityGetInitializerSymbol(LLVMOrcMaterializationResponsibilityRef MR)
Returns the initialization pseudo-symbol, if any.
struct LLVMOrcOpaqueIndirectStubsManager * LLVMOrcIndirectStubsManagerRef
A reference to an orc::IndirectStubsManager instance.
void(* LLVMOrcExecutionSessionLookupHandleResultFunction)(LLVMErrorRef Err, LLVMOrcCSymbolMapPairs Result, size_t NumPairs, void *Ctx)
Callback type for ExecutionSession lookups.
LLVMErrorRef LLVMOrcCreateDynamicLibrarySearchGeneratorForPath(LLVMOrcDefinitionGeneratorRef *Result, const char *FileName, char GlobalPrefix, LLVMOrcSymbolPredicate Filter, void *FilterCtx)
Get a LLVMOrcCreateDynamicLibararySearchGeneratorForPath that will reflect library symbols into the J...
void LLVMOrcLookupStateContinueLookup(LLVMOrcLookupStateRef S, LLVMErrorRef Err)
Continue a lookup that was suspended in a generator (see LLVMOrcCAPIDefinitionGeneratorTryToGenerateF...
LLVMErrorRef(* LLVMOrcCAPIDefinitionGeneratorTryToGenerateFunction)(LLVMOrcDefinitionGeneratorRef GeneratorObj, void *Ctx, LLVMOrcLookupStateRef *LookupState, LLVMOrcLookupKind Kind, LLVMOrcJITDylibRef JD, LLVMOrcJITDylibLookupFlags JDLookupFlags, LLVMOrcCLookupSet LookupSet, size_t LookupSetSize)
A custom generator function.
void LLVMOrcReleaseResourceTracker(LLVMOrcResourceTrackerRef RT)
Reduces the ref-count of a ResourceTracker.
void LLVMOrcDisposeThreadSafeContext(LLVMOrcThreadSafeContextRef TSCtx)
Dispose of a ThreadSafeContext.
LLVMErrorRef(* LLVMOrcIRTransformLayerTransformFunction)(void *Ctx, LLVMOrcThreadSafeModuleRef *ModInOut, LLVMOrcMaterializationResponsibilityRef MR)
A function for applying transformations as part of an transform layer.
struct LLVMOrcOpaqueSymbolStringPool * LLVMOrcSymbolStringPoolRef
A reference to an orc::SymbolStringPool.
void(* LLVMOrcMaterializationUnitDestroyFunction)(void *Ctx)
A MaterializationUnit destruction callback.
LLVMOrcDumpObjectsRef LLVMOrcCreateDumpObjects(const char *DumpDir, const char *IdentifierOverride)
Create a DumpObjects instance.
struct LLVMOrcOpaqueResourceTracker * LLVMOrcResourceTrackerRef
A reference to an orc::ResourceTracker instance.
void LLVMOrcObjectLayerEmit(LLVMOrcObjectLayerRef ObjLayer, LLVMOrcMaterializationResponsibilityRef R, LLVMMemoryBufferRef ObjBuffer)
Emit an object buffer to an ObjectLayer.
void LLVMOrcExecutionSessionSetErrorReporter(LLVMOrcExecutionSessionRef ES, LLVMOrcErrorReporterFunction ReportError, void *Ctx)
Attach a custom error reporter function to the ExecutionSession.
void LLVMOrcRetainSymbolStringPoolEntry(LLVMOrcSymbolStringPoolEntryRef S)
Increments the ref-count for a SymbolStringPool entry.
LLVMErrorRef LLVMOrcMaterializationResponsibilityDelegate(LLVMOrcMaterializationResponsibilityRef MR, LLVMOrcSymbolStringPoolEntryRef *Symbols, size_t NumSymbols, LLVMOrcMaterializationResponsibilityRef *Result)
Delegates responsibility for the given symbols to the returned materialization responsibility.
LLVMErrorRef LLVMOrcDumpObjects_CallOperator(LLVMOrcDumpObjectsRef DumpObjects, LLVMMemoryBufferRef *ObjBuffer)
Dump the contents of the given MemoryBuffer.
LLVMErrorRef LLVMOrcCreateDynamicLibrarySearchGeneratorForProcess(LLVMOrcDefinitionGeneratorRef *Result, char GlobalPrefix, LLVMOrcSymbolPredicate Filter, void *FilterCtx)
Get a DynamicLibrarySearchGenerator that will reflect process symbols into the JITDylib.
LLVMOrcIndirectStubsManagerRef LLVMOrcCreateLocalIndirectStubsManager(const char *TargetTriple)
Create a LocalIndirectStubsManager from the given target triple.
void LLVMOrcJITTargetMachineBuilderSetTargetTriple(LLVMOrcJITTargetMachineBuilderRef JTMB, const char *TargetTriple)
Sets the target triple for the given JITTargetMachineBuilder to the given string.
void LLVMOrcJITDylibAddGenerator(LLVMOrcJITDylibRef JD, LLVMOrcDefinitionGeneratorRef DG)
Add a DefinitionGenerator to the given JITDylib.
LLVMOrcJITTargetMachineBuilderRef LLVMOrcJITTargetMachineBuilderCreateFromTargetMachine(LLVMTargetMachineRef TM)
Create a JITTargetMachineBuilder from the given TargetMachine template.
LLVMOrcJITDylibRef LLVMOrcExecutionSessionGetJITDylibByName(LLVMOrcExecutionSessionRef ES, const char *Name)
Returns the JITDylib with the given name, or NULL if no such JITDylib exists.
const char * LLVMOrcSymbolStringPoolEntryStr(LLVMOrcSymbolStringPoolEntryRef S)
Return the c-string for the given symbol.
LLVMErrorRef LLVMOrcJITDylibDefine(LLVMOrcJITDylibRef JD, LLVMOrcMaterializationUnitRef MU)
Add the given MaterializationUnit to the given JITDylib.
struct LLVMOrcOpaqueObjectLayer * LLVMOrcObjectLayerRef
A reference to an orc::ObjectLayer instance.
void LLVMOrcMaterializationResponsibilityFailMaterialization(LLVMOrcMaterializationResponsibilityRef MR)
Notify all not-yet-emitted covered by this MaterializationResponsibility instance that an error has o...
LLVMErrorRef LLVMOrcMaterializationResponsibilityNotifyEmitted(LLVMOrcMaterializationResponsibilityRef MR, LLVMOrcCSymbolDependenceGroup *SymbolDepGroups, size_t NumSymbolDepGroups)
Notifies the target JITDylib (and any pending queries on that JITDylib) that all symbols covered by t...
LLVMOrcThreadSafeContextRef LLVMOrcCreateNewThreadSafeContext(void)
Create a ThreadSafeContext containing a new LLVMContext.
int(* LLVMOrcSymbolPredicate)(void *Ctx, LLVMOrcSymbolStringPoolEntryRef Sym)
Predicate function for SymbolStringPoolEntries.
struct LLVMOrcOpaqueDefinitionGenerator * LLVMOrcDefinitionGeneratorRef
A reference to an orc::DefinitionGenerator.
struct LLVMOrcOpaqueSymbolStringPoolEntry * LLVMOrcSymbolStringPoolEntryRef
A reference to an orc::SymbolStringPool table entry.
LLVMOrcSymbolLookupFlags
Symbol lookup flags for lookup sets.
LLVMOrcSymbolStringPoolEntryRef LLVMOrcExecutionSessionIntern(LLVMOrcExecutionSessionRef ES, const char *Name)
Intern a string in the ExecutionSession's SymbolStringPool and return a reference to it.
void LLVMOrcDisposeIndirectStubsManager(LLVMOrcIndirectStubsManagerRef ISM)
Dispose of an IndirectStubsManager.
LLVMErrorRef LLVMOrcMaterializationResponsibilityDefineMaterializing(LLVMOrcMaterializationResponsibilityRef MR, LLVMOrcCSymbolFlagsMapPairs Syms, size_t NumSyms)
Attempt to claim responsibility for new definitions.
LLVMErrorRef LLVMOrcObjectLayerAddObjectFile(LLVMOrcObjectLayerRef ObjLayer, LLVMOrcJITDylibRef JD, LLVMMemoryBufferRef ObjBuffer)
Add an object to an ObjectLayer to the given JITDylib.
LLVMErrorRef LLVMOrcMaterializationResponsibilityNotifyResolved(LLVMOrcMaterializationResponsibilityRef MR, LLVMOrcCSymbolMapPairs Symbols, size_t NumSymbols)
Notifies the target JITDylib that the given symbols have been resolved.
void(* LLVMOrcMaterializationUnitDiscardFunction)(void *Ctx, LLVMOrcJITDylibRef JD, LLVMOrcSymbolStringPoolEntryRef Symbol)
A MaterializationUnit discard callback.
void(* LLVMOrcMaterializationUnitMaterializeFunction)(void *Ctx, LLVMOrcMaterializationResponsibilityRef MR)
A MaterializationUnit materialize callback.
void LLVMOrcDisposeDumpObjects(LLVMOrcDumpObjectsRef DumpObjects)
Dispose of a DumpObjects instance.
char * LLVMOrcJITTargetMachineBuilderGetTargetTriple(LLVMOrcJITTargetMachineBuilderRef JTMB)
Returns the target triple for the given JITTargetMachineBuilder as a string.
struct LLVMOrcOpaqueDumpObjects * LLVMOrcDumpObjectsRef
A reference to an orc::DumpObjects object.
LLVMErrorRef LLVMOrcJITDylibClear(LLVMOrcJITDylibRef JD)
Calls remove on all trackers associated with this JITDylib, see JITDylib::clear().
void LLVMOrcDisposeLazyCallThroughManager(LLVMOrcLazyCallThroughManagerRef LCM)
Dispose of an LazyCallThroughManager.
LLVMOrcJITDylibRef LLVMOrcExecutionSessionCreateBareJITDylib(LLVMOrcExecutionSessionRef ES, const char *Name)
Create a "bare" JITDylib.
struct LLVMOrcOpaqueIRTransformLayer * LLVMOrcIRTransformLayerRef
A reference to an orc::IRTransformLayer instance.
struct LLVMOrcOpaqueLookupState * LLVMOrcLookupStateRef
An opaque lookup state object.
void LLVMOrcDisposeSymbols(LLVMOrcSymbolStringPoolEntryRef *Symbols)
Disposes of the passed LLVMOrcSymbolStringPoolEntryRef* .
LLVMOrcDefinitionGeneratorRef LLVMOrcCreateCustomCAPIDefinitionGenerator(LLVMOrcCAPIDefinitionGeneratorTryToGenerateFunction F, void *Ctx, LLVMOrcDisposeCAPIDefinitionGeneratorFunction Dispose)
Create a custom generator.
LLVMErrorRef LLVMOrcExecutionSessionCreateJITDylib(LLVMOrcExecutionSessionRef ES, LLVMOrcJITDylibRef *Result, const char *Name)
Create a JITDylib.
LLVMContextRef LLVMOrcThreadSafeContextGetContext(LLVMOrcThreadSafeContextRef TSCtx)
Get a reference to the wrapped LLVMContext.
void LLVMOrcReleaseSymbolStringPoolEntry(LLVMOrcSymbolStringPoolEntryRef S)
Reduces the ref-count for of a SymbolStringPool entry.
struct LLVMOrcOpaqueMaterializationUnit * LLVMOrcMaterializationUnitRef
A reference to a uniquely owned orc::MaterializationUnit instance.
struct LLVMOrcOpaqueJITDylib * LLVMOrcJITDylibRef
A reference to an orc::JITDylib instance.
struct LLVMOrcOpaqueThreadSafeContext * LLVMOrcThreadSafeContextRef
A reference to an orc::ThreadSafeContext instance.
void LLVMOrcIRTransformLayerSetTransform(LLVMOrcIRTransformLayerRef IRTransformLayer, LLVMOrcIRTransformLayerTransformFunction TransformFunction, void *Ctx)
Set the transform function of the provided transform layer, passing through a pointer to user provide...
LLVMOrcJITDylibLookupFlags
JITDylib lookup flags.
void LLVMOrcResourceTrackerTransferTo(LLVMOrcResourceTrackerRef SrcRT, LLVMOrcResourceTrackerRef DstRT)
Transfers tracking of all resources associated with resource tracker SrcRT to resource tracker DstRT.
LLVMOrcMaterializationUnitRef LLVMOrcLazyReexports(LLVMOrcLazyCallThroughManagerRef LCTM, LLVMOrcIndirectStubsManagerRef ISM, LLVMOrcJITDylibRef SourceJD, LLVMOrcCSymbolAliasMapPairs CallableAliases, size_t NumPairs)
Create a MaterializationUnit to define lazy re-expots.
void LLVMOrcDisposeJITTargetMachineBuilder(LLVMOrcJITTargetMachineBuilderRef JTMB)
Dispose of a JITTargetMachineBuilder.
@ LLVMOrcLookupKindStatic
@ LLVMJITSymbolGenericFlagsWeak
@ LLVMJITSymbolGenericFlagsExported
@ LLVMJITSymbolGenericFlagsCallable
@ LLVMJITSymbolGenericFlagsMaterializationSideEffectsOnly
@ LLVMOrcSymbolLookupFlagsRequiredSymbol
@ LLVMOrcSymbolLookupFlagsWeaklyReferencedSymbol
@ LLVMOrcJITDylibLookupFlagsMatchAllSymbols
@ LLVMOrcJITDylibLookupFlagsMatchExportedSymbolsOnly
void(* LLVMMemoryManagerDestroyCallback)(void *Opaque)
LLVMBool(* LLVMMemoryManagerFinalizeMemoryCallback)(void *Opaque, char **ErrMsg)
uint8_t *(* LLVMMemoryManagerAllocateDataSectionCallback)(void *Opaque, uintptr_t Size, unsigned Alignment, unsigned SectionID, const char *SectionName, LLVMBool IsReadOnly)
uint8_t *(* LLVMMemoryManagerAllocateCodeSectionCallback)(void *Opaque, uintptr_t Size, unsigned Alignment, unsigned SectionID, const char *SectionName)
struct LLVMOpaqueMemoryBuffer * LLVMMemoryBufferRef
LLVM uses a polymorphic type hierarchy which C cannot represent, therefore parameters must be passed ...
struct LLVMOpaqueContext * LLVMContextRef
The top-level container for all LLVM global data.
struct LLVMOpaqueModule * LLVMModuleRef
The top-level container for all other LLVM Intermediate Representation (IR) objects.
struct LLVMOpaqueJITEventListener * LLVMJITEventListenerRef
struct LLVMOpaqueTargetMachine * LLVMTargetMachineRef
void LLVMDisposeTargetMachine(LLVMTargetMachineRef T)
Dispose the LLVMTargetMachineRef instance generated by LLVMCreateTargetMachine.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
static LLVMJITEvaluatedSymbol fromExecutorSymbolDef(const ExecutorSymbolDef &S)
static JITSymbolFlags toJITSymbolFlags(LLVMJITSymbolFlags F)
static SymbolNameSet toSymbolNameSet(LLVMOrcCSymbolsList Symbols)
static JITDylibLookupFlags toJITDylibLookupFlags(LLVMOrcJITDylibLookupFlags LF)
static LLVMOrcSymbolLookupFlags fromSymbolLookupFlags(SymbolLookupFlags SLF)
static SymbolMap toSymbolMap(LLVMOrcCSymbolMapPairs Syms, size_t NumPairs)
static LLVMOrcLookupKind fromLookupKind(LookupKind K)
static LLVMOrcJITDylibLookupFlags fromJITDylibLookupFlags(JITDylibLookupFlags LF)
static SymbolDependenceMap toSymbolDependenceMap(LLVMOrcCDependenceMapPairs Pairs, size_t NumPairs)
static LookupKind toLookupKind(LLVMOrcLookupKind K)
static SymbolLookupFlags toSymbolLookupFlags(LLVMOrcSymbolLookupFlags SLF)
static LLVMJITSymbolFlags fromJITSymbolFlags(JITSymbolFlags JSF)
std::vector< std::pair< JITDylib *, JITDylibLookupFlags > > JITDylibSearchOrder
A list of (JITDylib*, JITDylibLookupFlags) pairs to be used as a search order during symbol lookup.
std::unique_ptr< AbsoluteSymbolsMaterializationUnit > absoluteSymbols(SymbolMap Symbols)
Create an AbsoluteSymbolsMaterializationUnit with the given symbols.
IntrusiveRefCntPtr< ResourceTracker > ResourceTrackerSP
SymbolLookupFlags
Lookup flags that apply to each symbol in a lookup.
JITDylibLookupFlags
Lookup flags that apply to each dylib in the search order for a lookup.
std::function< std::unique_ptr< IndirectStubsManager >()> createLocalIndirectStubsManagerBuilder(const Triple &T)
Create a local indirect stubs manager builder.
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.
LookupKind
Describes the kind of lookup being performed.
RegisterDependenciesFunction NoDependenciesToRegister
This can be used as the value for a RegisterDependenciesFunction if there are no dependants to regist...
This is an optimization pass for GlobalISel generic memory operations.
decltype(auto) get(const PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info > &Pair)
LLVM_ATTRIBUTE_RETURNS_NONNULL void * safe_malloc(size_t Sz)
Attribute unwrap(LLVMAttributeRef Attr)
void replace(R &&Range, const T &OldValue, const T &NewValue)
Provide wrappers to std::replace which take ranges instead of having to pass begin/end explicitly.
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
LLVMAttributeRef wrap(Attribute Attr)
Implement std::hash so that hash_code can be used in STL containers.
void swap(llvm::BitVector &LHS, llvm::BitVector &RHS)
Implement std::swap in terms of BitVector swap.
Represents an evaluated symbol address and flags.
Represents the linkage flags for a symbol definition.
Represents a pair of a JITDylib and LLVMOrcCSymbolsList.
LLVMOrcCSymbolsList Names
An element type for a JITDylib search order.
An element type for a symbol lookup set.
Represents a pair of a symbol name and SymbolAliasMapEntry.
A set of symbols that share dependencies.
Represents a pair of a symbol name and LLVMJITSymbolFlags.
Represents a pair of a symbol name and an evaluated symbol.
Represents a list of LLVMOrcSymbolStringPoolEntryRef and the associated length.
LLVMOrcSymbolStringPoolEntryRef * Symbols
A set of symbols and the their dependencies.