From 6714e1ce3b5ec02af2f9ab878bd10d273f02aa7e Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Thu, 30 Sep 2021 13:29:12 -0400 Subject: [PATCH] [libc++abi][NFCI] Consistently group new_handler, unexpected_handler and terminate_handler Previously, the definitions of __cxa_terminate_handler and __cxa_unexpected_handler (and their set_xxx_handler functions) were grouped together, but the definition of __cxa_new_handler wasn't. This commit simply moves those to the same file to treat all handlers consistently. --- libcxxabi/src/cxa_default_handlers.cpp | 11 ++++++++++- libcxxabi/src/cxa_handlers.cpp | 12 +----------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/libcxxabi/src/cxa_default_handlers.cpp b/libcxxabi/src/cxa_default_handlers.cpp index 8f9b2533b6a2..c521c1f97713 100644 --- a/libcxxabi/src/cxa_default_handlers.cpp +++ b/libcxxabi/src/cxa_default_handlers.cpp @@ -5,7 +5,8 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // // -// This file implements the default terminate_handler and unexpected_handler. +// This file implements the default terminate_handler, unexpected_handler and +// new_handler. //===----------------------------------------------------------------------===// #include @@ -104,6 +105,8 @@ _LIBCPP_SAFE_STATIC std::terminate_handler __cxa_terminate_handler = default_ter _LIBCXXABI_DATA_VIS _LIBCPP_SAFE_STATIC std::unexpected_handler __cxa_unexpected_handler = default_unexpected_handler; +std::new_handler __cxa_new_handler = 0; + namespace std { @@ -125,4 +128,10 @@ set_terminate(terminate_handler func) noexcept _AO_Acq_Rel); } +new_handler +set_new_handler(new_handler handler) noexcept +{ + return __libcpp_atomic_exchange(&__cxa_new_handler, handler, _AO_Acq_Rel); +} + } diff --git a/libcxxabi/src/cxa_handlers.cpp b/libcxxabi/src/cxa_handlers.cpp index d022752e12e6..17ffd30d2940 100644 --- a/libcxxabi/src/cxa_handlers.cpp +++ b/libcxxabi/src/cxa_handlers.cpp @@ -6,7 +6,7 @@ // // // This file implements the functionality associated with the terminate_handler, -// unexpected_handler, and new_handler. +// unexpected_handler, and new_handler. //===----------------------------------------------------------------------===// #include @@ -92,16 +92,6 @@ terminate() noexcept __terminate(get_terminate()); } -extern "C" { -new_handler __cxa_new_handler = 0; -} - -new_handler -set_new_handler(new_handler handler) noexcept -{ - return __libcpp_atomic_exchange(&__cxa_new_handler, handler, _AO_Acq_Rel); -} - new_handler get_new_handler() noexcept {