003 File Manager
Current Path:
/usr/src/contrib/llvm-project/llvm/include/llvm-c
usr
/
src
/
contrib
/
llvm-project
/
llvm
/
include
/
llvm-c
/
📁
..
📄
Analysis.h
(2.53 KB)
📄
BitReader.h
(3.8 KB)
📄
BitWriter.h
(2.3 KB)
📄
Comdat.h
(2.63 KB)
📄
Core.h
(128.88 KB)
📄
DataTypes.h
(2.95 KB)
📄
DebugInfo.h
(53.79 KB)
📄
Disassembler.h
(4.91 KB)
📄
DisassemblerTypes.h
(7.58 KB)
📄
Error.h
(2.3 KB)
📄
ErrorHandling.h
(1.9 KB)
📄
ExecutionEngine.h
(8.25 KB)
📄
ExternC.h
(1.9 KB)
📄
IRReader.h
(1.58 KB)
📄
Initialization.h
(2.13 KB)
📄
LinkTimeOptimizer.h
(1.98 KB)
📄
Linker.h
(1.7 KB)
📄
Object.h
(9.19 KB)
📄
Orc.h
(12.93 KB)
📄
OrcBindings.h
(6.55 KB)
📄
Remarks.h
(9.41 KB)
📄
Support.h
(2.42 KB)
📄
Target.h
(11.84 KB)
📄
TargetMachine.h
(6.54 KB)
📁
Transforms
📄
Types.h
(4.54 KB)
📄
lto.h
(28.38 KB)
📄
module.modulemap
(57 B)
Editing: OrcBindings.h
/*===----------- llvm-c/OrcBindings.h - Orc Lib C Iface ---------*- C++ -*-===*\ |* *| |* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| |* Exceptions. *| |* See https://llvm.org/LICENSE.txt for license information. *| |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| |* *| |*===----------------------------------------------------------------------===*| |* *| |* This header declares the C interface to libLLVMOrcJIT.a, which implements *| |* JIT compilation of LLVM IR. *| |* *| |* Many exotic languages can interoperate with C code but have a harder time *| |* with C++ due to name mangling. So in addition to C, this interface enables *| |* tools written in such languages. *| |* *| |* Note: This interface is experimental. It is *NOT* stable, and may be *| |* changed without warning. *| |* *| \*===----------------------------------------------------------------------===*/ #ifndef LLVM_C_ORCBINDINGS_H #define LLVM_C_ORCBINDINGS_H #include "llvm-c/Error.h" #include "llvm-c/ExternC.h" #include "llvm-c/Object.h" #include "llvm-c/TargetMachine.h" LLVM_C_EXTERN_C_BEGIN typedef struct LLVMOrcOpaqueJITStack *LLVMOrcJITStackRef; typedef uint64_t LLVMOrcModuleHandle; typedef uint64_t LLVMOrcTargetAddress; typedef uint64_t (*LLVMOrcSymbolResolverFn)(const char *Name, void *LookupCtx); typedef uint64_t (*LLVMOrcLazyCompileCallbackFn)(LLVMOrcJITStackRef JITStack, void *CallbackCtx); /** * Create an ORC JIT stack. * * The client owns the resulting stack, and must call OrcDisposeInstance(...) * to destroy it and free its memory. The JIT stack will take ownership of the * TargetMachine, which will be destroyed when the stack is destroyed. The * client should not attempt to dispose of the Target Machine, or it will result * in a double-free. */ LLVMOrcJITStackRef LLVMOrcCreateInstance(LLVMTargetMachineRef TM); /** * Get the error message for the most recent error (if any). * * This message is owned by the ORC JIT Stack and will be freed when the stack * is disposed of by LLVMOrcDisposeInstance. */ const char *LLVMOrcGetErrorMsg(LLVMOrcJITStackRef JITStack); /** * Mangle the given symbol. * Memory will be allocated for MangledSymbol to hold the result. The client */ void LLVMOrcGetMangledSymbol(LLVMOrcJITStackRef JITStack, char **MangledSymbol, const char *Symbol); /** * Dispose of a mangled symbol. */ void LLVMOrcDisposeMangledSymbol(char *MangledSymbol); /** * Create a lazy compile callback. */ LLVMErrorRef LLVMOrcCreateLazyCompileCallback( LLVMOrcJITStackRef JITStack, LLVMOrcTargetAddress *RetAddr, LLVMOrcLazyCompileCallbackFn Callback, void *CallbackCtx); /** * Create a named indirect call stub. */ LLVMErrorRef LLVMOrcCreateIndirectStub(LLVMOrcJITStackRef JITStack, const char *StubName, LLVMOrcTargetAddress InitAddr); /** * Set the pointer for the given indirect stub. */ LLVMErrorRef LLVMOrcSetIndirectStubPointer(LLVMOrcJITStackRef JITStack, const char *StubName, LLVMOrcTargetAddress NewAddr); /** * Add module to be eagerly compiled. */ LLVMErrorRef LLVMOrcAddEagerlyCompiledIR(LLVMOrcJITStackRef JITStack, LLVMOrcModuleHandle *RetHandle, LLVMModuleRef Mod, LLVMOrcSymbolResolverFn SymbolResolver, void *SymbolResolverCtx); /** * Add module to be lazily compiled one function at a time. */ LLVMErrorRef LLVMOrcAddLazilyCompiledIR(LLVMOrcJITStackRef JITStack, LLVMOrcModuleHandle *RetHandle, LLVMModuleRef Mod, LLVMOrcSymbolResolverFn SymbolResolver, void *SymbolResolverCtx); /** * Add an object file. * * This method takes ownership of the given memory buffer and attempts to add * it to the JIT as an object file. * Clients should *not* dispose of the 'Obj' argument: the JIT will manage it * from this call onwards. */ LLVMErrorRef LLVMOrcAddObjectFile(LLVMOrcJITStackRef JITStack, LLVMOrcModuleHandle *RetHandle, LLVMMemoryBufferRef Obj, LLVMOrcSymbolResolverFn SymbolResolver, void *SymbolResolverCtx); /** * Remove a module set from the JIT. * * This works for all modules that can be added via OrcAdd*, including object * files. */ LLVMErrorRef LLVMOrcRemoveModule(LLVMOrcJITStackRef JITStack, LLVMOrcModuleHandle H); /** * Get symbol address from JIT instance. */ LLVMErrorRef LLVMOrcGetSymbolAddress(LLVMOrcJITStackRef JITStack, LLVMOrcTargetAddress *RetAddr, const char *SymbolName); /** * Get symbol address from JIT instance, searching only the specified * handle. */ LLVMErrorRef LLVMOrcGetSymbolAddressIn(LLVMOrcJITStackRef JITStack, LLVMOrcTargetAddress *RetAddr, LLVMOrcModuleHandle H, const char *SymbolName); /** * Dispose of an ORC JIT stack. */ LLVMErrorRef LLVMOrcDisposeInstance(LLVMOrcJITStackRef JITStack); /** * Register a JIT Event Listener. * * A NULL listener is ignored. */ void LLVMOrcRegisterJITEventListener(LLVMOrcJITStackRef JITStack, LLVMJITEventListenerRef L); /** * Unegister a JIT Event Listener. * * A NULL listener is ignored. */ void LLVMOrcUnregisterJITEventListener(LLVMOrcJITStackRef JITStack, LLVMJITEventListenerRef L); LLVM_C_EXTERN_C_END #endif /* LLVM_C_ORCBINDINGS_H */
Upload File
Create Folder