diff options
author | heretic <heretic@yandex-team.ru> | 2022-02-10 16:45:43 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:45:43 +0300 |
commit | 397cbe258b9e064f49c4ca575279f02f39fef76e (patch) | |
tree | a0b0eb3cca6a14e4e8ea715393637672fa651284 /contrib/libs/cxxsupp/libcxxabi/src/cxa_handlers.cpp | |
parent | 43f5a35593ebc9f6bcea619bb170394ea7ae468e (diff) | |
download | ydb-397cbe258b9e064f49c4ca575279f02f39fef76e.tar.gz |
Restoring authorship annotation for <heretic@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/cxxsupp/libcxxabi/src/cxa_handlers.cpp')
-rw-r--r-- | contrib/libs/cxxsupp/libcxxabi/src/cxa_handlers.cpp | 182 |
1 files changed, 91 insertions, 91 deletions
diff --git a/contrib/libs/cxxsupp/libcxxabi/src/cxa_handlers.cpp b/contrib/libs/cxxsupp/libcxxabi/src/cxa_handlers.cpp index 344250dde0..2ee473dea3 100644 --- a/contrib/libs/cxxsupp/libcxxabi/src/cxa_handlers.cpp +++ b/contrib/libs/cxxsupp/libcxxabi/src/cxa_handlers.cpp @@ -1,101 +1,101 @@ //===----------------------------------------------------------------------===// -// -// 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 file implements the functionality associated with the terminate_handler, +// +// 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 file implements the functionality associated with the terminate_handler, // unexpected_handler, and new_handler. -//===----------------------------------------------------------------------===// - -#include <stdexcept> -#include <new> -#include <exception> -#include "abort_message.h" -#include "cxxabi.h" -#include "cxa_handlers.h" -#include "cxa_exception.h" -#include "private_typeinfo.h" +//===----------------------------------------------------------------------===// + +#include <stdexcept> +#include <new> +#include <exception> +#include "abort_message.h" +#include "cxxabi.h" +#include "cxa_handlers.h" +#include "cxa_exception.h" +#include "private_typeinfo.h" #include "include/atomic_support.h" // from libc++ - -namespace std -{ - -unexpected_handler + +namespace std +{ + +unexpected_handler get_unexpected() noexcept -{ - return __libcpp_atomic_load(&__cxa_unexpected_handler, _AO_Acquire); -} - -void -__unexpected(unexpected_handler func) -{ - func(); - // unexpected handler should not return - abort_message("unexpected_handler unexpectedly returned"); -} - -__attribute__((noreturn)) -void -unexpected() -{ - __unexpected(get_unexpected()); -} - -terminate_handler +{ + return __libcpp_atomic_load(&__cxa_unexpected_handler, _AO_Acquire); +} + +void +__unexpected(unexpected_handler func) +{ + func(); + // unexpected handler should not return + abort_message("unexpected_handler unexpectedly returned"); +} + +__attribute__((noreturn)) +void +unexpected() +{ + __unexpected(get_unexpected()); +} + +terminate_handler get_terminate() noexcept -{ - return __libcpp_atomic_load(&__cxa_terminate_handler, _AO_Acquire); -} - -void +{ + return __libcpp_atomic_load(&__cxa_terminate_handler, _AO_Acquire); +} + +void __terminate(terminate_handler func) noexcept -{ -#ifndef _LIBCXXABI_NO_EXCEPTIONS - try - { +{ +#ifndef _LIBCXXABI_NO_EXCEPTIONS + try + { #endif // _LIBCXXABI_NO_EXCEPTIONS - func(); - // handler should not return - abort_message("terminate_handler unexpectedly returned"); -#ifndef _LIBCXXABI_NO_EXCEPTIONS - } - catch (...) - { - // handler should not throw exception - abort_message("terminate_handler unexpectedly threw an exception"); - } + func(); + // handler should not return + abort_message("terminate_handler unexpectedly returned"); +#ifndef _LIBCXXABI_NO_EXCEPTIONS + } + catch (...) + { + // handler should not throw exception + abort_message("terminate_handler unexpectedly threw an exception"); + } #endif // _LIBCXXABI_NO_EXCEPTIONS -} - -__attribute__((noreturn)) -void +} + +__attribute__((noreturn)) +void terminate() noexcept -{ -#ifndef _LIBCXXABI_NO_EXCEPTIONS - // If there might be an uncaught exception - using namespace __cxxabiv1; - __cxa_eh_globals* globals = __cxa_get_globals_fast(); - if (globals) - { - __cxa_exception* exception_header = globals->caughtExceptions; - if (exception_header) - { - _Unwind_Exception* unwind_exception = - reinterpret_cast<_Unwind_Exception*>(exception_header + 1) - 1; - if (__isOurExceptionClass(unwind_exception)) - __terminate(exception_header->terminateHandler); - } - } -#endif - __terminate(get_terminate()); -} - -new_handler +{ +#ifndef _LIBCXXABI_NO_EXCEPTIONS + // If there might be an uncaught exception + using namespace __cxxabiv1; + __cxa_eh_globals* globals = __cxa_get_globals_fast(); + if (globals) + { + __cxa_exception* exception_header = globals->caughtExceptions; + if (exception_header) + { + _Unwind_Exception* unwind_exception = + reinterpret_cast<_Unwind_Exception*>(exception_header + 1) - 1; + if (__isOurExceptionClass(unwind_exception)) + __terminate(exception_header->terminateHandler); + } + } +#endif + __terminate(get_terminate()); +} + +new_handler get_new_handler() noexcept -{ - return __libcpp_atomic_load(&__cxa_new_handler, _AO_Acquire); -} - -} // std +{ + return __libcpp_atomic_load(&__cxa_new_handler, _AO_Acquire); +} + +} // std |