Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/llvm/llvm-project.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLouis Dionne <ldionne.2@gmail.com>2021-09-30 20:29:12 +0300
committerLouis Dionne <ldionne.2@gmail.com>2021-09-30 21:15:30 +0300
commit6714e1ce3b5ec02af2f9ab878bd10d273f02aa7e (patch)
tree61952174c446a2e6060e63f0b7d071ea49f73132 /libcxxabi/src/cxa_default_handlers.cpp
parent138dc27186bed4565584387fc49d88b235a1e2ed (diff)
[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.
Diffstat (limited to 'libcxxabi/src/cxa_default_handlers.cpp')
-rw-r--r--libcxxabi/src/cxa_default_handlers.cpp11
1 files changed, 10 insertions, 1 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 <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);
+}
+
}