summaryrefslogtreecommitdiffstats
path: root/libcxx/src/exception.cpp
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2017-01-03 01:18:48 +0000
committerEric Fiselier <eric@efcs.ca>2017-01-03 01:18:48 +0000
commit1285e4d60e60bcd166aed64d4913e4e5d0b042ad (patch)
tree092da5ae7b7db35aa28d0ad097aeb8fcc1c67c01 /libcxx/src/exception.cpp
parent1c9867d0097a9fe6b669c08c7434a71cc464941d (diff)
downloadbcm5719-llvm-1285e4d60e60bcd166aed64d4913e4e5d0b042ad.tar.gz
bcm5719-llvm-1285e4d60e60bcd166aed64d4913e4e5d0b042ad.zip
Recommit r290839 - Fix configuring and building libc++ w/o an ABI library.
This patch re-commits a previous attempt to support building libc++ w/o an ABI library. That patch was originally reverted because: 1) It forgot to teach the test suite about "default" ABI libraries. 2) Some LLVM builders don't clear the CMake cache between builds. The previous patch caused those builders to fail since their old cache entry for LIBCXX_CXX_ABI="" is no longer valid. The updated patch addresses both issues. It works around (2) by adding a hack to force the builders to update their cache entries. The hack will be removed shortly once all LLVM builders have run. Original commit message ----------------------- Typically libc++ uses libc++abi or libcxxrt to provide the ABI and runtime bits of the C++ STL. However we also support building w/o an ABI library entirely. This patch fixes building libc++ w/o an ABI library (and incorporates the `~type_info()` fix in D28211). The main changes in this patch are: 1) Add `-DLIBCXX_CXX_ABI=default` instead of using the empty string to mean "default". 2) Fix CMake bits which treated "none" as "default" on OS X. 3) Teach the source files to respect `-D_LIBCPP_BUILDING_HAS_NO_ABI_LIBRARY`. 4) Define ~type_info() when _LIBCPP_BUILDING_HAS_NO_ABI_LIBRARY is defined. Unfortunately this patch doesn't help clean up the macro mess that we use to configure for different ABI libraries. llvm-svn: 290849
Diffstat (limited to 'libcxx/src/exception.cpp')
-rw-r--r--libcxx/src/exception.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/libcxx/src/exception.cpp b/libcxx/src/exception.cpp
index 96bd7ee59a0..ec8969aaf4c 100644
--- a/libcxx/src/exception.cpp
+++ b/libcxx/src/exception.cpp
@@ -12,7 +12,8 @@
#include "exception"
#include "new"
-#if defined(__APPLE__) && !defined(LIBCXXRT)
+#if defined(__APPLE__) && !defined(LIBCXXRT) && \
+ !defined(_LIBCPP_BUILDING_HAS_NO_ABI_LIBRARY)
#include <cxxabi.h>
using namespace __cxxabiv1;
@@ -106,7 +107,8 @@ bool uncaught_exception() _NOEXCEPT { return uncaught_exceptions() > 0; }
int uncaught_exceptions() _NOEXCEPT
{
-#if defined(__APPLE__) || defined(_LIBCPPABI_VERSION)
+#if !defined(_LIBCPP_BUILDING_HAS_NO_ABI_LIBRARY) && \
+ (defined(__APPLE__) || defined(_LIBCPPABI_VERSION))
// on Darwin, there is a helper function so __cxa_get_globals is private
# if _LIBCPPABI_VERSION > 1101
return __cxa_uncaught_exceptions();
OpenPOWER on IntegriCloud