diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2024-04-26 15:33:29 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2024-05-08 19:37:29 -0700 |
| commit | 06ee65af9ed6aa5ee4d1d7f4fab9d7acecf66e76 (patch) | |
| tree | 1316711b92a43dd5c599e425b8693fa8e1e0c0b7 /lib/libcxx/include/stdexcept | |
| parent | bc6ebc6f2597fda1f98842c6f545751fef2a5334 (diff) | |
| download | zig-06ee65af9ed6aa5ee4d1d7f4fab9d7acecf66e76.tar.gz zig-06ee65af9ed6aa5ee4d1d7f4fab9d7acecf66e76.zip | |
libcxx: update to LLVM 18
release/18.x branch, commit 78b99c73ee4b96fe9ce0e294d4632326afb2db42
This adds the flag `-D_LIBCPP_HARDENING_MODE` which is determined based
on the Zig optimization mode.
This commit also fixes libunwind, libcxx, and libcxxabi to properly
report sub compilation errors.
Diffstat (limited to 'lib/libcxx/include/stdexcept')
| -rw-r--r-- | lib/libcxx/include/stdexcept | 228 |
1 files changed, 104 insertions, 124 deletions
diff --git a/lib/libcxx/include/stdexcept b/lib/libcxx/include/stdexcept index 5428535a10..3016c130a9 100644 --- a/lib/libcxx/include/stdexcept +++ b/lib/libcxx/include/stdexcept @@ -44,8 +44,8 @@ public: #include <__assert> // all public C++ headers provide the assertion handler #include <__config> #include <__exception/exception.h> +#include <__fwd/string.h> #include <__verbose_abort> -#include <iosfwd> // for string forward decl #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header @@ -54,159 +54,154 @@ public: _LIBCPP_BEGIN_NAMESPACE_STD #ifndef _LIBCPP_ABI_VCRUNTIME -class _LIBCPP_HIDDEN __libcpp_refstring -{ - const char* __imp_; +class _LIBCPP_HIDDEN __libcpp_refstring { + const char* __imp_; + + bool __uses_refcount() const; - bool __uses_refcount() const; public: - explicit __libcpp_refstring(const char* __msg); - __libcpp_refstring(const __libcpp_refstring& __s) _NOEXCEPT; - __libcpp_refstring& operator=(const __libcpp_refstring& __s) _NOEXCEPT; - ~__libcpp_refstring(); + explicit __libcpp_refstring(const char* __msg); + __libcpp_refstring(const __libcpp_refstring& __s) _NOEXCEPT; + __libcpp_refstring& operator=(const __libcpp_refstring& __s) _NOEXCEPT; + ~__libcpp_refstring(); - _LIBCPP_HIDE_FROM_ABI const char* c_str() const _NOEXCEPT {return __imp_;} + _LIBCPP_HIDE_FROM_ABI const char* c_str() const _NOEXCEPT { return __imp_; } }; #endif // !_LIBCPP_ABI_VCRUNTIME _LIBCPP_END_NAMESPACE_STD -namespace std // purposefully not using versioning namespace +namespace std // purposefully not using versioning namespace { -class _LIBCPP_EXPORTED_FROM_ABI logic_error - : public exception -{ +class _LIBCPP_EXPORTED_FROM_ABI logic_error : public exception { #ifndef _LIBCPP_ABI_VCRUNTIME + private: - _VSTD::__libcpp_refstring __imp_; + std::__libcpp_refstring __imp_; + public: - explicit logic_error(const string&); - explicit logic_error(const char*); + explicit logic_error(const string&); + explicit logic_error(const char*); - logic_error(const logic_error&) _NOEXCEPT; - logic_error& operator=(const logic_error&) _NOEXCEPT; + logic_error(const logic_error&) _NOEXCEPT; + logic_error& operator=(const logic_error&) _NOEXCEPT; - ~logic_error() _NOEXCEPT override; + ~logic_error() _NOEXCEPT override; - const char* what() const _NOEXCEPT override; + const char* what() const _NOEXCEPT override; #else + public: - explicit logic_error(const _VSTD::string&); // Symbol uses versioned std::string - _LIBCPP_INLINE_VISIBILITY explicit logic_error(const char* __s) : exception(__s) {} + explicit logic_error(const std::string&); // Symbol uses versioned std::string + _LIBCPP_HIDE_FROM_ABI explicit logic_error(const char* __s) : exception(__s) {} #endif }; -class _LIBCPP_EXPORTED_FROM_ABI runtime_error - : public exception -{ +class _LIBCPP_EXPORTED_FROM_ABI runtime_error : public exception { #ifndef _LIBCPP_ABI_VCRUNTIME + private: - _VSTD::__libcpp_refstring __imp_; + std::__libcpp_refstring __imp_; + public: - explicit runtime_error(const string&); - explicit runtime_error(const char*); + explicit runtime_error(const string&); + explicit runtime_error(const char*); - runtime_error(const runtime_error&) _NOEXCEPT; - runtime_error& operator=(const runtime_error&) _NOEXCEPT; + runtime_error(const runtime_error&) _NOEXCEPT; + runtime_error& operator=(const runtime_error&) _NOEXCEPT; - ~runtime_error() _NOEXCEPT override; + ~runtime_error() _NOEXCEPT override; - const char* what() const _NOEXCEPT override; + const char* what() const _NOEXCEPT override; #else + public: - explicit runtime_error(const _VSTD::string&); // Symbol uses versioned std::string - _LIBCPP_INLINE_VISIBILITY explicit runtime_error(const char* __s) : exception(__s) {} + explicit runtime_error(const std::string&); // Symbol uses versioned std::string + _LIBCPP_HIDE_FROM_ABI explicit runtime_error(const char* __s) : exception(__s) {} #endif // _LIBCPP_ABI_VCRUNTIME }; -class _LIBCPP_EXPORTED_FROM_ABI domain_error - : public logic_error -{ +class _LIBCPP_EXPORTED_FROM_ABI domain_error : public logic_error { public: - _LIBCPP_INLINE_VISIBILITY explicit domain_error(const string& __s) : logic_error(__s) {} - _LIBCPP_INLINE_VISIBILITY explicit domain_error(const char* __s) : logic_error(__s) {} + _LIBCPP_HIDE_FROM_ABI explicit domain_error(const string& __s) : logic_error(__s) {} + _LIBCPP_HIDE_FROM_ABI explicit domain_error(const char* __s) : logic_error(__s) {} #ifndef _LIBCPP_ABI_VCRUNTIME - _LIBCPP_HIDE_FROM_ABI domain_error(const domain_error&) _NOEXCEPT = default; - ~domain_error() _NOEXCEPT override; + _LIBCPP_HIDE_FROM_ABI domain_error(const domain_error&) _NOEXCEPT = default; + _LIBCPP_HIDE_FROM_ABI domain_error& operator=(const domain_error&) _NOEXCEPT = default; + ~domain_error() _NOEXCEPT override; #endif }; -class _LIBCPP_EXPORTED_FROM_ABI invalid_argument - : public logic_error -{ +class _LIBCPP_EXPORTED_FROM_ABI invalid_argument : public logic_error { public: - _LIBCPP_INLINE_VISIBILITY explicit invalid_argument(const string& __s) : logic_error(__s) {} - _LIBCPP_INLINE_VISIBILITY explicit invalid_argument(const char* __s) : logic_error(__s) {} + _LIBCPP_HIDE_FROM_ABI explicit invalid_argument(const string& __s) : logic_error(__s) {} + _LIBCPP_HIDE_FROM_ABI explicit invalid_argument(const char* __s) : logic_error(__s) {} #ifndef _LIBCPP_ABI_VCRUNTIME - _LIBCPP_HIDE_FROM_ABI invalid_argument(const invalid_argument&) _NOEXCEPT = default; - ~invalid_argument() _NOEXCEPT override; + _LIBCPP_HIDE_FROM_ABI invalid_argument(const invalid_argument&) _NOEXCEPT = default; + _LIBCPP_HIDE_FROM_ABI invalid_argument& operator=(const invalid_argument&) _NOEXCEPT = default; + ~invalid_argument() _NOEXCEPT override; #endif }; -class _LIBCPP_EXPORTED_FROM_ABI length_error - : public logic_error -{ +class _LIBCPP_EXPORTED_FROM_ABI length_error : public logic_error { public: - _LIBCPP_INLINE_VISIBILITY explicit length_error(const string& __s) : logic_error(__s) {} - _LIBCPP_INLINE_VISIBILITY explicit length_error(const char* __s) : logic_error(__s) {} + _LIBCPP_HIDE_FROM_ABI explicit length_error(const string& __s) : logic_error(__s) {} + _LIBCPP_HIDE_FROM_ABI explicit length_error(const char* __s) : logic_error(__s) {} #ifndef _LIBCPP_ABI_VCRUNTIME - _LIBCPP_HIDE_FROM_ABI length_error(const length_error&) _NOEXCEPT = default; - ~length_error() _NOEXCEPT override; + _LIBCPP_HIDE_FROM_ABI length_error(const length_error&) _NOEXCEPT = default; + _LIBCPP_HIDE_FROM_ABI length_error& operator=(const length_error&) _NOEXCEPT = default; + ~length_error() _NOEXCEPT override; #endif }; -class _LIBCPP_EXPORTED_FROM_ABI out_of_range - : public logic_error -{ +class _LIBCPP_EXPORTED_FROM_ABI out_of_range : public logic_error { public: - _LIBCPP_INLINE_VISIBILITY explicit out_of_range(const string& __s) : logic_error(__s) {} - _LIBCPP_INLINE_VISIBILITY explicit out_of_range(const char* __s) : logic_error(__s) {} + _LIBCPP_HIDE_FROM_ABI explicit out_of_range(const string& __s) : logic_error(__s) {} + _LIBCPP_HIDE_FROM_ABI explicit out_of_range(const char* __s) : logic_error(__s) {} #ifndef _LIBCPP_ABI_VCRUNTIME - _LIBCPP_HIDE_FROM_ABI out_of_range(const out_of_range&) _NOEXCEPT = default; - ~out_of_range() _NOEXCEPT override; + _LIBCPP_HIDE_FROM_ABI out_of_range(const out_of_range&) _NOEXCEPT = default; + _LIBCPP_HIDE_FROM_ABI out_of_range& operator=(const out_of_range&) _NOEXCEPT = default; + ~out_of_range() _NOEXCEPT override; #endif }; -class _LIBCPP_EXPORTED_FROM_ABI range_error - : public runtime_error -{ +class _LIBCPP_EXPORTED_FROM_ABI range_error : public runtime_error { public: - _LIBCPP_INLINE_VISIBILITY explicit range_error(const string& __s) : runtime_error(__s) {} - _LIBCPP_INLINE_VISIBILITY explicit range_error(const char* __s) : runtime_error(__s) {} + _LIBCPP_HIDE_FROM_ABI explicit range_error(const string& __s) : runtime_error(__s) {} + _LIBCPP_HIDE_FROM_ABI explicit range_error(const char* __s) : runtime_error(__s) {} #ifndef _LIBCPP_ABI_VCRUNTIME - _LIBCPP_HIDE_FROM_ABI range_error(const range_error&) _NOEXCEPT = default; - ~range_error() _NOEXCEPT override; + _LIBCPP_HIDE_FROM_ABI range_error(const range_error&) _NOEXCEPT = default; + _LIBCPP_HIDE_FROM_ABI range_error& operator=(const range_error&) _NOEXCEPT = default; + ~range_error() _NOEXCEPT override; #endif }; -class _LIBCPP_EXPORTED_FROM_ABI overflow_error - : public runtime_error -{ +class _LIBCPP_EXPORTED_FROM_ABI overflow_error : public runtime_error { public: - _LIBCPP_INLINE_VISIBILITY explicit overflow_error(const string& __s) : runtime_error(__s) {} - _LIBCPP_INLINE_VISIBILITY explicit overflow_error(const char* __s) : runtime_error(__s) {} + _LIBCPP_HIDE_FROM_ABI explicit overflow_error(const string& __s) : runtime_error(__s) {} + _LIBCPP_HIDE_FROM_ABI explicit overflow_error(const char* __s) : runtime_error(__s) {} #ifndef _LIBCPP_ABI_VCRUNTIME - _LIBCPP_HIDE_FROM_ABI overflow_error(const overflow_error&) _NOEXCEPT = default; - ~overflow_error() _NOEXCEPT override; + _LIBCPP_HIDE_FROM_ABI overflow_error(const overflow_error&) _NOEXCEPT = default; + _LIBCPP_HIDE_FROM_ABI overflow_error& operator=(const overflow_error&) _NOEXCEPT = default; + ~overflow_error() _NOEXCEPT override; #endif }; -class _LIBCPP_EXPORTED_FROM_ABI underflow_error - : public runtime_error -{ +class _LIBCPP_EXPORTED_FROM_ABI underflow_error : public runtime_error { public: - _LIBCPP_INLINE_VISIBILITY explicit underflow_error(const string& __s) : runtime_error(__s) {} - _LIBCPP_INLINE_VISIBILITY explicit underflow_error(const char* __s) : runtime_error(__s) {} + _LIBCPP_HIDE_FROM_ABI explicit underflow_error(const string& __s) : runtime_error(__s) {} + _LIBCPP_HIDE_FROM_ABI explicit underflow_error(const char* __s) : runtime_error(__s) {} #ifndef _LIBCPP_ABI_VCRUNTIME - _LIBCPP_HIDE_FROM_ABI underflow_error(const underflow_error&) _NOEXCEPT = default; - ~underflow_error() _NOEXCEPT override; + _LIBCPP_HIDE_FROM_ABI underflow_error(const underflow_error&) _NOEXCEPT = default; + _LIBCPP_HIDE_FROM_ABI underflow_error& operator=(const underflow_error&) _NOEXCEPT = default; + ~underflow_error() _NOEXCEPT override; #endif }; @@ -217,83 +212,67 @@ _LIBCPP_BEGIN_NAMESPACE_STD // in the dylib _LIBCPP_NORETURN _LIBCPP_EXPORTED_FROM_ABI void __throw_runtime_error(const char*); -_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY -void __throw_logic_error(const char*__msg) -{ +_LIBCPP_NORETURN inline _LIBCPP_HIDE_FROM_ABI void __throw_logic_error(const char* __msg) { #ifndef _LIBCPP_HAS_NO_EXCEPTIONS - throw logic_error(__msg); + throw logic_error(__msg); #else - _LIBCPP_VERBOSE_ABORT("logic_error was thrown in -fno-exceptions mode with message \"%s\"", __msg); + _LIBCPP_VERBOSE_ABORT("logic_error was thrown in -fno-exceptions mode with message \"%s\"", __msg); #endif } -_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY -void __throw_domain_error(const char*__msg) -{ +_LIBCPP_NORETURN inline _LIBCPP_HIDE_FROM_ABI void __throw_domain_error(const char* __msg) { #ifndef _LIBCPP_HAS_NO_EXCEPTIONS - throw domain_error(__msg); + throw domain_error(__msg); #else - _LIBCPP_VERBOSE_ABORT("domain_error was thrown in -fno-exceptions mode with message \"%s\"", __msg); + _LIBCPP_VERBOSE_ABORT("domain_error was thrown in -fno-exceptions mode with message \"%s\"", __msg); #endif } -_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY -void __throw_invalid_argument(const char*__msg) -{ +_LIBCPP_NORETURN inline _LIBCPP_HIDE_FROM_ABI void __throw_invalid_argument(const char* __msg) { #ifndef _LIBCPP_HAS_NO_EXCEPTIONS - throw invalid_argument(__msg); + throw invalid_argument(__msg); #else - _LIBCPP_VERBOSE_ABORT("invalid_argument was thrown in -fno-exceptions mode with message \"%s\"", __msg); + _LIBCPP_VERBOSE_ABORT("invalid_argument was thrown in -fno-exceptions mode with message \"%s\"", __msg); #endif } -_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY -void __throw_length_error(const char*__msg) -{ +_LIBCPP_NORETURN inline _LIBCPP_HIDE_FROM_ABI void __throw_length_error(const char* __msg) { #ifndef _LIBCPP_HAS_NO_EXCEPTIONS - throw length_error(__msg); + throw length_error(__msg); #else - _LIBCPP_VERBOSE_ABORT("length_error was thrown in -fno-exceptions mode with message \"%s\"", __msg); + _LIBCPP_VERBOSE_ABORT("length_error was thrown in -fno-exceptions mode with message \"%s\"", __msg); #endif } -_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY -void __throw_out_of_range(const char*__msg) -{ +_LIBCPP_NORETURN inline _LIBCPP_HIDE_FROM_ABI void __throw_out_of_range(const char* __msg) { #ifndef _LIBCPP_HAS_NO_EXCEPTIONS - throw out_of_range(__msg); + throw out_of_range(__msg); #else - _LIBCPP_VERBOSE_ABORT("out_of_range was thrown in -fno-exceptions mode with message \"%s\"", __msg); + _LIBCPP_VERBOSE_ABORT("out_of_range was thrown in -fno-exceptions mode with message \"%s\"", __msg); #endif } -_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY -void __throw_range_error(const char*__msg) -{ +_LIBCPP_NORETURN inline _LIBCPP_HIDE_FROM_ABI void __throw_range_error(const char* __msg) { #ifndef _LIBCPP_HAS_NO_EXCEPTIONS - throw range_error(__msg); + throw range_error(__msg); #else - _LIBCPP_VERBOSE_ABORT("range_error was thrown in -fno-exceptions mode with message \"%s\"", __msg); + _LIBCPP_VERBOSE_ABORT("range_error was thrown in -fno-exceptions mode with message \"%s\"", __msg); #endif } -_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY -void __throw_overflow_error(const char*__msg) -{ +_LIBCPP_NORETURN inline _LIBCPP_HIDE_FROM_ABI void __throw_overflow_error(const char* __msg) { #ifndef _LIBCPP_HAS_NO_EXCEPTIONS - throw overflow_error(__msg); + throw overflow_error(__msg); #else - _LIBCPP_VERBOSE_ABORT("overflow_error was thrown in -fno-exceptions mode with message \"%s\"", __msg); + _LIBCPP_VERBOSE_ABORT("overflow_error was thrown in -fno-exceptions mode with message \"%s\"", __msg); #endif } -_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY -void __throw_underflow_error(const char*__msg) -{ +_LIBCPP_NORETURN inline _LIBCPP_HIDE_FROM_ABI void __throw_underflow_error(const char* __msg) { #ifndef _LIBCPP_HAS_NO_EXCEPTIONS - throw underflow_error(__msg); + throw underflow_error(__msg); #else - _LIBCPP_VERBOSE_ABORT("underflow_error was thrown in -fno-exceptions mode with message \"%s\"", __msg); + _LIBCPP_VERBOSE_ABORT("underflow_error was thrown in -fno-exceptions mode with message \"%s\"", __msg); #endif } @@ -302,6 +281,7 @@ _LIBCPP_END_NAMESPACE_STD #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include <cstdlib> # include <exception> +# include <iosfwd> #endif #endif // _LIBCPP_STDEXCEPT |
