[cfe-commits] [libcxxabi] r152785 - in /libcxxabi/trunk/src: cxa_default_handlers.cpp cxa_handlers.cpp
Dave Zarzycki
zarzycki at apple.com
Thu Mar 15 01:58:06 PDT 2012
Author: zarzycki
Date: Thu Mar 15 03:58:06 2012
New Revision: 152785
URL: http://llvm.org/viewvc/llvm-project?rev=152785&view=rev
Log:
Be friendly to when dead_strip doesn't work
Apple Radar: 11053417
Modified:
libcxxabi/trunk/src/cxa_default_handlers.cpp
libcxxabi/trunk/src/cxa_handlers.cpp
Modified: libcxxabi/trunk/src/cxa_default_handlers.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxxabi/trunk/src/cxa_default_handlers.cpp?rev=152785&r1=152784&r2=152785&view=diff
==============================================================================
--- libcxxabi/trunk/src/cxa_default_handlers.cpp (original)
+++ libcxxabi/trunk/src/cxa_default_handlers.cpp Thu Mar 15 03:58:06 2012
@@ -94,5 +94,24 @@
//
std::terminate_handler __cxa_terminate_handler = default_terminate_handler;
std::unexpected_handler __cxa_unexpected_handler = default_unexpected_handler;
-std::new_handler __cxa_new_handler = 0;
-
+
+namespace std
+{
+
+unexpected_handler
+set_unexpected(unexpected_handler func) _NOEXCEPT
+{
+ if (func == 0)
+ func = default_unexpected_handler;
+ return __sync_lock_test_and_set(&__cxxabiapple::__cxa_unexpected_handler, func);
+}
+
+terminate_handler
+set_terminate(terminate_handler func) _NOEXCEPT
+{
+ if (func == 0)
+ func = default_terminate_handler;
+ return __sync_lock_test_and_set(&__cxxabiapple::__cxa_terminate_handler, func);
+}
+
+};
Modified: libcxxabi/trunk/src/cxa_handlers.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxxabi/trunk/src/cxa_handlers.cpp?rev=152785&r1=152784&r2=152785&view=diff
==============================================================================
--- libcxxabi/trunk/src/cxa_handlers.cpp (original)
+++ libcxxabi/trunk/src/cxa_handlers.cpp Thu Mar 15 03:58:06 2012
@@ -20,17 +20,10 @@
#include "cxa_default_handlers.hpp"
#include "private_typeinfo.h"
-namespace std
-{
-
+std::new_handler __cxa_new_handler = 0;
-unexpected_handler
-set_unexpected(unexpected_handler func) _NOEXCEPT
+namespace std
{
- if (func == 0)
- func = default_unexpected_handler;
- return __sync_lock_test_and_set(&__cxxabiapple::__cxa_unexpected_handler, func);
-}
unexpected_handler
get_unexpected() _NOEXCEPT
@@ -55,14 +48,6 @@
}
terminate_handler
-set_terminate(terminate_handler func) _NOEXCEPT
-{
- if (func == 0)
- func = default_terminate_handler;
- return __sync_lock_test_and_set(&__cxxabiapple::__cxa_terminate_handler, func);
-}
-
-terminate_handler
get_terminate() _NOEXCEPT
{
return __sync_fetch_and_add(&__cxxabiapple::__cxa_terminate_handler, (terminate_handler)0);
More information about the cfe-commits
mailing list