[libcxx-commits] [libcxxabi] 6714e1c - [libc++abi][NFCI] Consistently group new_handler, unexpected_handler and terminate_handler

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Thu Sep 30 11:16:15 PDT 2021


Author: Louis Dionne
Date: 2021-09-30T14:15:30-04:00
New Revision: 6714e1ce3b5ec02af2f9ab878bd10d273f02aa7e

URL: https://github.com/llvm/llvm-project/commit/6714e1ce3b5ec02af2f9ab878bd10d273f02aa7e
DIFF: https://github.com/llvm/llvm-project/commit/6714e1ce3b5ec02af2f9ab878bd10d273f02aa7e.diff

LOG: [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.

Added: 
    

Modified: 
    libcxxabi/src/cxa_default_handlers.cpp
    libcxxabi/src/cxa_handlers.cpp

Removed: 
    


################################################################################
diff  --git a/libcxxabi/src/cxa_default_handlers.cpp b/libcxxabi/src/cxa_default_handlers.cpp
index 8f9b2533b6a20..c521c1f97713f 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 <exception>
@@ -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 d022752e12e66..17ffd30d2940e 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 <stdexcept>
@@ -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
 {


        


More information about the libcxx-commits mailing list