brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 3d8dc6b Raw
56 lines · c
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//8// This file implements the functionality associated with the terminate_handler,9//   unexpected_handler, and new_handler.10//===----------------------------------------------------------------------===//11 12#ifndef _CXA_HANDLERS_H13#define _CXA_HANDLERS_H14 15#include "__cxxabi_config.h"16 17#include <exception>18 19namespace std20{21 22_LIBCXXABI_HIDDEN _LIBCXXABI_NORETURN23void24__unexpected(unexpected_handler func);25 26_LIBCXXABI_HIDDEN _LIBCXXABI_NORETURN27void28__terminate(terminate_handler func) noexcept;29 30}  // std31 32extern "C"33{34 35_LIBCXXABI_DATA_VIS extern void (*__cxa_terminate_handler)();36_LIBCXXABI_DATA_VIS extern void (*__cxa_unexpected_handler)();37_LIBCXXABI_DATA_VIS extern void (*__cxa_new_handler)();38 39/*40 41    At some point in the future these three symbols will become42    C++11 atomic variables:43 44    extern std::atomic<std::terminate_handler>  __cxa_terminate_handler;45    extern std::atomic<std::unexpected_handler> __cxa_unexpected_handler;46    extern std::atomic<std::new_handler>        __cxa_new_handler;47 48    This change will not impact their ABI.  But it will allow for a49    portable performance optimization.50 51*/52 53} // extern "C"54 55#endif // _CXA_HANDLERS_H56