summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarshall Clow <mclow.lists@gmail.com>2018-02-01 18:45:57 +0000
committerMarshall Clow <mclow.lists@gmail.com>2018-02-01 18:45:57 +0000
commitb87adec4bd8ed164d09ebb1e186210f35ddf6e60 (patch)
tree4a27f0242ee83f357b5f66358823ac4c8112ea1f
parent29fcf883fb6ed9ea1bed1cb2bee9a5ff4524d57e (diff)
downloadbcm5719-llvm-b87adec4bd8ed164d09ebb1e186210f35ddf6e60.tar.gz
bcm5719-llvm-b87adec4bd8ed164d09ebb1e186210f35ddf6e60.zip
Put the exception classes for experimental::optional and experimental::any back in the dylib for binary compatibility
llvm-svn: 323989
-rw-r--r--libcxx/src/any.cpp19
-rw-r--r--libcxx/src/optional.cpp20
2 files changed, 39 insertions, 0 deletions
diff --git a/libcxx/src/any.cpp b/libcxx/src/any.cpp
index 96855202991..3795258bb06 100644
--- a/libcxx/src/any.cpp
+++ b/libcxx/src/any.cpp
@@ -14,3 +14,22 @@ const char* bad_any_cast::what() const _NOEXCEPT {
return "bad any cast";
}
}
+
+
+#include <experimental/__config>
+
+// Preserve std::experimental::any_bad_cast for ABI compatibility
+// Even though it no longer exists in a header file
+_LIBCPP_BEGIN_NAMESPACE_LFTS
+
+class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_ANY_CAST bad_any_cast : public bad_cast
+{
+public:
+ virtual const char* what() const _NOEXCEPT;
+};
+
+const char* bad_any_cast::what() const _NOEXCEPT {
+ return "bad any cast";
+}
+
+_LIBCPP_END_NAMESPACE_LFTS
diff --git a/libcxx/src/optional.cpp b/libcxx/src/optional.cpp
index 6444987bf8c..6099b6b41e8 100644
--- a/libcxx/src/optional.cpp
+++ b/libcxx/src/optional.cpp
@@ -20,3 +20,23 @@ const char* bad_optional_access::what() const _NOEXCEPT {
} // std
+
+#include <experimental/__config>
+
+// Preserve std::experimental::bad_optional_access for ABI compatibility
+// Even though it no longer exists in a header file
+_LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL
+
+class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS bad_optional_access
+ : public std::logic_error
+{
+public:
+ bad_optional_access() : std::logic_error("Bad optional Access") {}
+
+// Get the key function ~bad_optional_access() into the dylib
+ virtual ~bad_optional_access() _NOEXCEPT;
+};
+
+bad_optional_access::~bad_optional_access() _NOEXCEPT = default;
+
+_LIBCPP_END_NAMESPACE_EXPERIMENTAL
OpenPOWER on IntegriCloud