diff options
| author | Jan Korous <jkorous@apple.com> | 2019-09-12 22:55:55 +0000 | 
|---|---|---|
| committer | Jan Korous <jkorous@apple.com> | 2019-09-12 22:55:55 +0000 | 
| commit | f7d2376b98728a10143bd3bb715f07b01ee2f5d1 (patch) | |
| tree | a81f79e0e116c1140926a87ff60bd6b2fd9dca8b /clang/tools/libclang/FatalErrorHandler.cpp | |
| parent | 079e2104633489e9b99c17c0c1426db11d69bb2f (diff) | |
| download | bcm5719-llvm-f7d2376b98728a10143bd3bb715f07b01ee2f5d1.tar.gz bcm5719-llvm-f7d2376b98728a10143bd3bb715f07b01ee2f5d1.zip | |
[libclang] Expose abort()-ing LLVM fatal error handler
Differential Revision: https://reviews.llvm.org/D66775
llvm-svn: 371787
Diffstat (limited to 'clang/tools/libclang/FatalErrorHandler.cpp')
| -rw-r--r-- | clang/tools/libclang/FatalErrorHandler.cpp | 28 | 
1 files changed, 28 insertions, 0 deletions
| diff --git a/clang/tools/libclang/FatalErrorHandler.cpp b/clang/tools/libclang/FatalErrorHandler.cpp new file mode 100644 index 00000000000..e9a0d41bab3 --- /dev/null +++ b/clang/tools/libclang/FatalErrorHandler.cpp @@ -0,0 +1,28 @@ +/*===-- clang-c/FatalErrorHandler.cpp - Fatal Error Handling ------*- 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                    *| +|*                                                                            *| +\*===----------------------------------------------------------------------===*/ + +#include "clang-c/FatalErrorHandler.h" +#include "llvm/Support/ErrorHandling.h" + +static void aborting_fatal_error_handler(void *, const std::string &reason, +                                         bool) { +  // Write the result out to stderr avoiding errs() because raw_ostreams can +  // call report_fatal_error. +  fprintf(stderr, "LIBCLANG FATAL ERROR: %s\n", reason.c_str()); +  ::abort(); +} + +void clang_install_aborting_llvm_fatal_error_handler() { +  llvm::remove_fatal_error_handler(); +  llvm::install_fatal_error_handler(aborting_fatal_error_handler, nullptr); +} + +void clang_uninstall_llvm_fatal_error_handler() { +  llvm::remove_fatal_error_handler(); +} | 

