mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-28 06:46:07 +00:00

Allow C-API users to debug their JITed code via the GDB JIT Interface. This is currently supported on ELF and MachO based platforms. On other systems `LLVMOrcLLJITEnableDebugSupport()` returns an error. This patch adds a new C-API header `LLJITUtils.h`, which can host further advanced JIT features in the future. Using the header requires linking against LLVMOrcDebugging.
53 lines
2.4 KiB
C
53 lines
2.4 KiB
C
/*===------- llvm-c/LLJITUtils.h - Advanced LLJIT features --------*- 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 for extra utilities to be used with *|
|
|
|* the LLJIT class from the llvm-c/LLJIT.h header. It requires to following *|
|
|
|* link libraries in addition to libLLVMOrcJIT.a: *|
|
|
|* - libLLVMOrcDebugging.a *|
|
|
|* *|
|
|
|* 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. Only C API usage documentation is *|
|
|
|* provided. See the C++ documentation for all higher level ORC API *|
|
|
|* details. *|
|
|
|* *|
|
|
\*===----------------------------------------------------------------------===*/
|
|
|
|
#ifndef LLVM_C_LLJITUTILS_H
|
|
#define LLVM_C_LLJITUTILS_H
|
|
|
|
#include "llvm-c/LLJIT.h"
|
|
|
|
LLVM_C_EXTERN_C_BEGIN
|
|
|
|
/**
|
|
* @defgroup LLVMCExecutionEngineLLJITUtils LLJIT Utilities
|
|
* @ingroup LLVMCExecutionEngineLLJIT
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* Install the plugin that submits debug objects to the executor. Executors must
|
|
* expose the llvm_orc_registerJITLoaderGDBWrapper symbol.
|
|
*/
|
|
LLVMErrorRef LLVMOrcLLJITEnableDebugSupport(LLVMOrcLLJITRef J);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
LLVM_C_EXTERN_C_END
|
|
|
|
#endif /* LLVM_C_LLJITUTILS_H */
|