10b57cec5SDimitry Andric /*===-- llvm-c/ErrorHandling.h - Error Handling C Interface -------*- C -*-===*\ 20b57cec5SDimitry Andric |* *| 30b57cec5SDimitry Andric |* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| 40b57cec5SDimitry Andric |* Exceptions. *| 50b57cec5SDimitry Andric |* See https://llvm.org/LICENSE.txt for license information. *| 60b57cec5SDimitry Andric |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| 70b57cec5SDimitry Andric |* *| 80b57cec5SDimitry Andric |*===----------------------------------------------------------------------===*| 90b57cec5SDimitry Andric |* *| 100b57cec5SDimitry Andric |* This file defines the C interface to LLVM's error handling mechanism. *| 110b57cec5SDimitry Andric |* *| 120b57cec5SDimitry Andric \*===----------------------------------------------------------------------===*/ 130b57cec5SDimitry Andric 14fe6060f1SDimitry Andric #ifndef LLVM_C_ERRORHANDLING_H 15fe6060f1SDimitry Andric #define LLVM_C_ERRORHANDLING_H 160b57cec5SDimitry Andric 17480093f4SDimitry Andric #include "llvm-c/ExternC.h" 18480093f4SDimitry Andric 19480093f4SDimitry Andric LLVM_C_EXTERN_C_BEGIN 200b57cec5SDimitry Andric 21*349cc55cSDimitry Andric /** 22*349cc55cSDimitry Andric * @addtogroup LLVMCError 23*349cc55cSDimitry Andric * 24*349cc55cSDimitry Andric * @{ 25*349cc55cSDimitry Andric */ 26*349cc55cSDimitry Andric 270b57cec5SDimitry Andric typedef void (*LLVMFatalErrorHandler)(const char *Reason); 280b57cec5SDimitry Andric 290b57cec5SDimitry Andric /** 300b57cec5SDimitry Andric * Install a fatal error handler. By default, if LLVM detects a fatal error, it 310b57cec5SDimitry Andric * will call exit(1). This may not be appropriate in many contexts. For example, 320b57cec5SDimitry Andric * doing exit(1) will bypass many crash reporting/tracing system tools. This 330b57cec5SDimitry Andric * function allows you to install a callback that will be invoked prior to the 340b57cec5SDimitry Andric * call to exit(1). 350b57cec5SDimitry Andric */ 360b57cec5SDimitry Andric void LLVMInstallFatalErrorHandler(LLVMFatalErrorHandler Handler); 370b57cec5SDimitry Andric 380b57cec5SDimitry Andric /** 390b57cec5SDimitry Andric * Reset the fatal error handler. This resets LLVM's fatal error handling 400b57cec5SDimitry Andric * behavior to the default. 410b57cec5SDimitry Andric */ 420b57cec5SDimitry Andric void LLVMResetFatalErrorHandler(void); 430b57cec5SDimitry Andric 440b57cec5SDimitry Andric /** 450b57cec5SDimitry Andric * Enable LLVM's built-in stack trace code. This intercepts the OS's crash 460b57cec5SDimitry Andric * signals and prints which component of LLVM you were in at the time if the 470b57cec5SDimitry Andric * crash. 480b57cec5SDimitry Andric */ 490b57cec5SDimitry Andric void LLVMEnablePrettyStackTrace(void); 500b57cec5SDimitry Andric 51*349cc55cSDimitry Andric /** 52*349cc55cSDimitry Andric * @} 53*349cc55cSDimitry Andric */ 54*349cc55cSDimitry Andric 55480093f4SDimitry Andric LLVM_C_EXTERN_C_END 560b57cec5SDimitry Andric 570b57cec5SDimitry Andric #endif 58