|
@@ -1,169 +0,0 @@
|
|
|
-/*===----------- 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 "Error.h"
|
|
|
-#include "ExternC.h"
|
|
|
-#include "Object.h"
|
|
|
-#include "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 */
|