diff options
author | Marshall Clow <mclow.lists@gmail.com> | 2018-02-01 18:45:57 +0000 |
---|---|---|
committer | Marshall Clow <mclow.lists@gmail.com> | 2018-02-01 18:45:57 +0000 |
commit | b87adec4bd8ed164d09ebb1e186210f35ddf6e60 (patch) | |
tree | 4a27f0242ee83f357b5f66358823ac4c8112ea1f | |
parent | 29fcf883fb6ed9ea1bed1cb2bee9a5ff4524d57e (diff) | |
download | bcm5719-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.cpp | 19 | ||||
-rw-r--r-- | libcxx/src/optional.cpp | 20 |
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 |