1*5f757f3fSDimitry Andric /*===------- llvm-c/LLJITUtils.h - Advanced LLJIT features --------*- C -*-===*\ 2*5f757f3fSDimitry Andric |* *| 3*5f757f3fSDimitry Andric |* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| 4*5f757f3fSDimitry Andric |* Exceptions. *| 5*5f757f3fSDimitry Andric |* See https://llvm.org/LICENSE.txt for license information. *| 6*5f757f3fSDimitry Andric |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| 7*5f757f3fSDimitry Andric |* *| 8*5f757f3fSDimitry Andric |*===----------------------------------------------------------------------===*| 9*5f757f3fSDimitry Andric |* *| 10*5f757f3fSDimitry Andric |* This header declares the C interface for extra utilities to be used with *| 11*5f757f3fSDimitry Andric |* the LLJIT class from the llvm-c/LLJIT.h header. It requires to following *| 12*5f757f3fSDimitry Andric |* link libraries in addition to libLLVMOrcJIT.a: *| 13*5f757f3fSDimitry Andric |* - libLLVMOrcDebugging.a *| 14*5f757f3fSDimitry Andric |* *| 15*5f757f3fSDimitry Andric |* Many exotic languages can interoperate with C code but have a harder time *| 16*5f757f3fSDimitry Andric |* with C++ due to name mangling. So in addition to C, this interface enables *| 17*5f757f3fSDimitry Andric |* tools written in such languages. *| 18*5f757f3fSDimitry Andric |* *| 19*5f757f3fSDimitry Andric |* Note: This interface is experimental. It is *NOT* stable, and may be *| 20*5f757f3fSDimitry Andric |* changed without warning. Only C API usage documentation is *| 21*5f757f3fSDimitry Andric |* provided. See the C++ documentation for all higher level ORC API *| 22*5f757f3fSDimitry Andric |* details. *| 23*5f757f3fSDimitry Andric |* *| 24*5f757f3fSDimitry Andric \*===----------------------------------------------------------------------===*/ 25*5f757f3fSDimitry Andric 26*5f757f3fSDimitry Andric #ifndef LLVM_C_LLJITUTILS_H 27*5f757f3fSDimitry Andric #define LLVM_C_LLJITUTILS_H 28*5f757f3fSDimitry Andric 29*5f757f3fSDimitry Andric #include "llvm-c/LLJIT.h" 30*5f757f3fSDimitry Andric 31*5f757f3fSDimitry Andric LLVM_C_EXTERN_C_BEGIN 32*5f757f3fSDimitry Andric 33*5f757f3fSDimitry Andric /** 34*5f757f3fSDimitry Andric * @defgroup LLVMCExecutionEngineLLJITUtils LLJIT Utilities 35*5f757f3fSDimitry Andric * @ingroup LLVMCExecutionEngineLLJIT 36*5f757f3fSDimitry Andric * 37*5f757f3fSDimitry Andric * @{ 38*5f757f3fSDimitry Andric */ 39*5f757f3fSDimitry Andric 40*5f757f3fSDimitry Andric /** 41*5f757f3fSDimitry Andric * Install the plugin that submits debug objects to the executor. Executors must 42*5f757f3fSDimitry Andric * expose the llvm_orc_registerJITLoaderGDBWrapper symbol. 43*5f757f3fSDimitry Andric */ 44*5f757f3fSDimitry Andric LLVMErrorRef LLVMOrcLLJITEnableDebugSupport(LLVMOrcLLJITRef J); 45*5f757f3fSDimitry Andric 46*5f757f3fSDimitry Andric /** 47*5f757f3fSDimitry Andric * @} 48*5f757f3fSDimitry Andric */ 49*5f757f3fSDimitry Andric 50*5f757f3fSDimitry Andric LLVM_C_EXTERN_C_END 51*5f757f3fSDimitry Andric 52*5f757f3fSDimitry Andric #endif /* LLVM_C_LLJITUTILS_H */ 53