summaryrefslogtreecommitdiffstats
path: root/libcxx/src/typeinfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/src/typeinfo.cpp')
-rw-r--r--libcxx/src/typeinfo.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/libcxx/src/typeinfo.cpp b/libcxx/src/typeinfo.cpp
index 3033c9800f1..d0a7dae3802 100644
--- a/libcxx/src/typeinfo.cpp
+++ b/libcxx/src/typeinfo.cpp
@@ -8,13 +8,19 @@
//===----------------------------------------------------------------------===//
#include <stdlib.h>
-#if defined(__APPLE__) || defined(LIBCXXRT) || \
- defined(LIBCXX_BUILDING_LIBCXXABI)
+#if !defined(_LIBCPP_BUILDING_HAS_NO_ABI_LIBRARY) && \
+ (defined(__APPLE__) || defined(LIBCXXRT) || defined(LIBCXX_BUILDING_LIBCXXABI))
#include <cxxabi.h>
#endif
#include "typeinfo"
+#if defined(_LIBCPP_BUILDING_HAS_NO_ABI_LIBRARY)
+std::type_info::~type_info()
+{
+}
+#endif
+
#if !defined(LIBCXXRT) && !defined(_LIBCPPABI_VERSION)
std::bad_cast::bad_cast() _NOEXCEPT
@@ -47,7 +53,7 @@ std::bad_typeid::what() const _NOEXCEPT
return "std::bad_typeid";
}
-#ifdef __APPLE__
+#if defined(__APPLE__) && !defined(_LIBCPP_BUILDING_HAS_NO_ABI_LIBRARY)
// On Darwin, the cxa_bad_* functions cannot be in the lower level library
// because bad_cast and bad_typeid are defined in his higher level library
void __cxxabiv1::__cxa_bad_typeid()
OpenPOWER on IntegriCloud