diff options
| author | Eric Fiselier <eric@efcs.ca> | 2017-01-02 22:17:51 +0000 |
|---|---|---|
| committer | Eric Fiselier <eric@efcs.ca> | 2017-01-02 22:17:51 +0000 |
| commit | 9aca97d6f932fc33d5630060edd27c51450ae9b6 (patch) | |
| tree | d0721de90f6956df815804a7ee5b4ad808e08e15 /libcxx/include | |
| parent | 5d25843f66fbe0bed55bb2ae196e2748d94496c8 (diff) | |
| download | bcm5719-llvm-9aca97d6f932fc33d5630060edd27c51450ae9b6.tar.gz bcm5719-llvm-9aca97d6f932fc33d5630060edd27c51450ae9b6.zip | |
Introduce _LIBCPP_DEPRECATED_ABI_EXTERNAL_ERROR_CATEGORY_CONSTRUCTOR ABI option.
Currently libc++ compiles a special version of error_category()
into the dylib. This definition is no longer needed, and doesn't
work on Windows due to dllimport/dllexport semantics.
For those reasons this patch introduces an option to
disable/enable this definition. By default the definition
is provided in ABI v1 except on windows. This patch
also addresses D28210.
llvm-svn: 290840
Diffstat (limited to 'libcxx/include')
| -rw-r--r-- | libcxx/include/__config | 4 | ||||
| -rw-r--r-- | libcxx/include/system_error | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/libcxx/include/__config b/libcxx/include/__config index ac46979e342..7b175a15912 100644 --- a/libcxx/include/__config +++ b/libcxx/include/__config @@ -53,6 +53,10 @@ // of nullptr_t. This option is ABI incompatible with GCC in C++03 mode. #define _LIBCPP_ABI_ALWAYS_USE_CXX11_NULLPTR #elif _LIBCPP_ABI_VERSION == 1 +#if !defined(_WIN32) +// Enable compiling a definition of error_category() into the libc++ dylib. +#define _LIBCPP_DEPRECATED_ABI_EXTERNAL_ERROR_CATEGORY_CONSTRUCTOR +#endif // Feature macros for disabling pre ABI v1 features. All of these options // are deprecated. #if defined(__FreeBSD__) diff --git a/libcxx/include/system_error b/libcxx/include/system_error index c7e73d4ab82..58040639d3e 100644 --- a/libcxx/include/system_error +++ b/libcxx/include/system_error @@ -384,7 +384,8 @@ class _LIBCPP_TYPE_VIS error_category public: virtual ~error_category() _NOEXCEPT; -#ifdef _LIBCPP_BUILDING_SYSTEM_ERROR +#if defined(_LIBCPP_BUILDING_SYSTEM_ERROR) && \ + defined(_LIBCPP_DEPRECATED_ABI_EXTERNAL_ERROR_CATEGORY_CONSTRUCTOR) error_category() _NOEXCEPT; #else _LIBCPP_ALWAYS_INLINE |

