diff --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt index e27fb7602430..5c2520de90dc 100644 --- a/libcxx/include/CMakeLists.txt +++ b/libcxx/include/CMakeLists.txt @@ -341,6 +341,7 @@ set(files __configuration/language.h __configuration/namespace.h __configuration/platform.h + __configuration/utility.h __coroutine/coroutine_handle.h __coroutine/coroutine_traits.h __coroutine/noop_coroutine_handle.h diff --git a/libcxx/include/__algorithm/shuffle.h b/libcxx/include/__algorithm/shuffle.h index 7177fbb469ba..c0707f17b5b3 100644 --- a/libcxx/include/__algorithm/shuffle.h +++ b/libcxx/include/__algorithm/shuffle.h @@ -28,6 +28,7 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class _LIBCPP_EXPORTED_FROM_ABI __libcpp_debug_randomizer { public: _LIBCPP_HIDE_FROM_ABI __libcpp_debug_randomizer() { @@ -160,6 +161,7 @@ shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, _UniformRan std::move(__first), std::move(__last), std::forward<_UniformRandomNumberGenerator>(__g)); } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/__algorithm/sort.h b/libcxx/include/__algorithm/sort.h index 8aa894e9228c..0a936db78e5f 100644 --- a/libcxx/include/__algorithm/sort.h +++ b/libcxx/include/__algorithm/sort.h @@ -828,6 +828,7 @@ void __introsort(_RandomAccessIterator __first, } } +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS template void __sort(_RandomAccessIterator, _RandomAccessIterator, _Comp); @@ -856,6 +857,7 @@ extern template _LIBCPP_EXPORTED_FROM_ABI void __sort<__less&, float*>(fl extern template _LIBCPP_EXPORTED_FROM_ABI void __sort<__less&, double*>(double*, double*, __less&); extern template _LIBCPP_EXPORTED_FROM_ABI void __sort<__less&, long double*>(long double*, long double*, __less&); +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void diff --git a/libcxx/include/__atomic/atomic_sync.h b/libcxx/include/__atomic/atomic_sync.h index 12bd1b96a026..b9b67d9092c6 100644 --- a/libcxx/include/__atomic/atomic_sync.h +++ b/libcxx/include/__atomic/atomic_sync.h @@ -28,6 +28,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER >= 20 # if _LIBCPP_HAS_THREADS +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS + # if !_LIBCPP_AVAILABILITY_HAS_NEW_SYNC // old dylib interface kept for backwards compatibility @@ -73,6 +75,8 @@ _LIBCPP_AVAILABILITY_NEW_SYNC _LIBCPP_EXPORTED_FROM_ABI void __atomic_notify_one template _LIBCPP_AVAILABILITY_NEW_SYNC _LIBCPP_EXPORTED_FROM_ABI void __atomic_notify_all_native(const void*) _NOEXCEPT; +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS + # if _LIBCPP_AVAILABILITY_HAS_NEW_SYNC template diff --git a/libcxx/include/__atomic/atomic_sync_timed.h b/libcxx/include/__atomic/atomic_sync_timed.h index f3bf780b0e36..7cb24151fde7 100644 --- a/libcxx/include/__atomic/atomic_sync_timed.h +++ b/libcxx/include/__atomic/atomic_sync_timed.h @@ -30,6 +30,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER >= 20 # if _LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_NEW_SYNC +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_AVAILABILITY_NEW_SYNC _LIBCPP_EXPORTED_FROM_ABI __cxx_contention_t __atomic_monitor_global(void const* __address) _NOEXCEPT; @@ -41,6 +42,7 @@ _LIBCPP_AVAILABILITY_NEW_SYNC _LIBCPP_EXPORTED_FROM_ABI void __atomic_wait_globa template _LIBCPP_AVAILABILITY_NEW_SYNC _LIBCPP_EXPORTED_FROM_ABI void __atomic_wait_native_with_timeout(void const* __address, void const* __old_value, uint64_t __timeout_ns) _NOEXCEPT; +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS template struct __atomic_wait_timed_backoff_impl { diff --git a/libcxx/include/__charconv/from_chars_floating_point.h b/libcxx/include/__charconv/from_chars_floating_point.h index 811e518a81db..ed7c54ae5826 100644 --- a/libcxx/include/__charconv/from_chars_floating_point.h +++ b/libcxx/include/__charconv/from_chars_floating_point.h @@ -35,6 +35,7 @@ struct __from_chars_result { errc __ec; }; +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS template _LIBCPP_EXPORTED_FROM_ABI __from_chars_result<_Fp> __from_chars_floating_point( _LIBCPP_NOESCAPE const char* __first, _LIBCPP_NOESCAPE const char* __last, chars_format __fmt); @@ -44,6 +45,7 @@ extern template __from_chars_result __from_chars_floating_point( extern template __from_chars_result __from_chars_floating_point( _LIBCPP_NOESCAPE const char* __first, _LIBCPP_NOESCAPE const char* __last, chars_format __fmt); +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS template _LIBCPP_HIDE_FROM_ABI from_chars_result diff --git a/libcxx/include/__charconv/to_chars_floating_point.h b/libcxx/include/__charconv/to_chars_floating_point.h index 118f316b21a1..ca997f85526f 100644 --- a/libcxx/include/__charconv/to_chars_floating_point.h +++ b/libcxx/include/__charconv/to_chars_floating_point.h @@ -19,6 +19,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #if _LIBCPP_STD_VER >= 17 @@ -50,6 +51,7 @@ _LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT _LIBCPP_EXPORTED_FROM_ABI to_chars_ to_chars(char* __first, char* __last, long double __value, chars_format __fmt, int __precision); #endif // _LIBCPP_STD_VER >= 17 +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___CHARCONV_TO_CHARS_FLOATING_POINT_H diff --git a/libcxx/include/__chrono/exception.h b/libcxx/include/__chrono/exception.h index 1eb5b1b62d92..27fbfd6b57a2 100644 --- a/libcxx/include/__chrono/exception.h +++ b/libcxx/include/__chrono/exception.h @@ -31,6 +31,7 @@ # endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS # if _LIBCPP_STD_VER >= 20 @@ -128,6 +129,7 @@ template # endif // _LIBCPP_STD_VER >= 20 +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_HAS_EXPERIMENTAL_TZDB diff --git a/libcxx/include/__chrono/file_clock.h b/libcxx/include/__chrono/file_clock.h index 968f652f796d..7ded6162fada 100644 --- a/libcxx/include/__chrono/file_clock.h +++ b/libcxx/include/__chrono/file_clock.h @@ -46,6 +46,8 @@ _LIBCPP_END_NAMESPACE_STD #ifndef _LIBCPP_CXX03_LANG _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS + struct _FilesystemClock { # if _LIBCPP_HAS_INT128 typedef __int128_t rep; @@ -76,6 +78,8 @@ struct _FilesystemClock { } # endif // _LIBCPP_STD_VER >= 20 }; + +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_FILESYSTEM #endif // !_LIBCPP_CXX03_LANG diff --git a/libcxx/include/__chrono/steady_clock.h b/libcxx/include/__chrono/steady_clock.h index 8e68c9a3c20f..ed530815dc4c 100644 --- a/libcxx/include/__chrono/steady_clock.h +++ b/libcxx/include/__chrono/steady_clock.h @@ -19,6 +19,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace chrono { @@ -37,6 +38,7 @@ public: } // namespace chrono +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___CHRONO_STEADY_CLOCK_H diff --git a/libcxx/include/__chrono/system_clock.h b/libcxx/include/__chrono/system_clock.h index e3ef75ae50fa..449514b05149 100644 --- a/libcxx/include/__chrono/system_clock.h +++ b/libcxx/include/__chrono/system_clock.h @@ -20,6 +20,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace chrono { @@ -47,6 +48,7 @@ using sys_days = sys_time; } // namespace chrono +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___CHRONO_SYSTEM_CLOCK_H diff --git a/libcxx/include/__chrono/time_zone.h b/libcxx/include/__chrono/time_zone.h index d18d59d2736b..20f3297f772b 100644 --- a/libcxx/include/__chrono/time_zone.h +++ b/libcxx/include/__chrono/time_zone.h @@ -36,6 +36,7 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS # if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION @@ -176,6 +177,7 @@ operator<=>(const time_zone& __x, const time_zone& __y) noexcept { # endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && // _LIBCPP_HAS_LOCALIZATION +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/__chrono/tzdb.h b/libcxx/include/__chrono/tzdb.h index fb85f66b0196..2fa04604b91f 100644 --- a/libcxx/include/__chrono/tzdb.h +++ b/libcxx/include/__chrono/tzdb.h @@ -35,6 +35,7 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS # if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION @@ -87,6 +88,7 @@ private: # endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && // _LIBCPP_HAS_LOCALIZATION +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/__chrono/tzdb_list.h b/libcxx/include/__chrono/tzdb_list.h index 2b83a6df1daf..997599ac7496 100644 --- a/libcxx/include/__chrono/tzdb_list.h +++ b/libcxx/include/__chrono/tzdb_list.h @@ -28,6 +28,7 @@ # endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS # if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION @@ -101,6 +102,7 @@ _LIBCPP_AVAILABILITY_TZDB _LIBCPP_EXPORTED_FROM_ABI const tzdb& reload_tzdb(); # endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && // _LIBCPP_HAS_LOCALIZATION +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_HAS_EXPERIMENTAL_TZDB diff --git a/libcxx/include/__condition_variable/condition_variable.h b/libcxx/include/__condition_variable/condition_variable.h index b7151930e922..3fa40287c360 100644 --- a/libcxx/include/__condition_variable/condition_variable.h +++ b/libcxx/include/__condition_variable/condition_variable.h @@ -32,6 +32,7 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #if _LIBCPP_HAS_THREADS @@ -225,6 +226,7 @@ inline void condition_variable::__do_timed_wait(unique_lock& __lk, #endif // _LIBCPP_HAS_THREADS +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/__config b/libcxx/include/__config index 6cf965232723..a34c6ee502bb 100644 --- a/libcxx/include/__config +++ b/libcxx/include/__config @@ -40,9 +40,6 @@ # define _LIBCPP_CONCAT(_X, _Y) _LIBCPP_CONCAT_IMPL(_X, _Y) # define _LIBCPP_CONCAT3(X, Y, Z) _LIBCPP_CONCAT(X, _LIBCPP_CONCAT(Y, Z)) -# define _LIBCPP_TOSTRING2(x) #x -# define _LIBCPP_TOSTRING(x) _LIBCPP_TOSTRING2(x) - # ifndef __has_constexpr_builtin # define __has_constexpr_builtin(x) 0 # endif diff --git a/libcxx/include/__configuration/attributes.h b/libcxx/include/__configuration/attributes.h index 39683b7688d7..cc828466482f 100644 --- a/libcxx/include/__configuration/attributes.h +++ b/libcxx/include/__configuration/attributes.h @@ -12,6 +12,7 @@ #include <__config_site> #include <__configuration/hardening.h> #include <__configuration/language.h> +#include <__configuration/utility.h> #ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER # pragma GCC system_header diff --git a/libcxx/include/__configuration/diagnostic_suppression.h b/libcxx/include/__configuration/diagnostic_suppression.h index 25d43449a6a7..cd9ffa06d120 100644 --- a/libcxx/include/__configuration/diagnostic_suppression.h +++ b/libcxx/include/__configuration/diagnostic_suppression.h @@ -12,6 +12,7 @@ #include <__config_site> #include <__configuration/compiler.h> +#include <__configuration/utility.h> #ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER # pragma GCC system_header diff --git a/libcxx/include/__configuration/namespace.h b/libcxx/include/__configuration/namespace.h index 740baad567af..befb64ac5903 100644 --- a/libcxx/include/__configuration/namespace.h +++ b/libcxx/include/__configuration/namespace.h @@ -13,6 +13,7 @@ #include <__config_site> #include <__configuration/attributes.h> #include <__configuration/diagnostic_suppression.h> +#include <__configuration/utility.h> #ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER # pragma GCC system_header @@ -39,6 +40,17 @@ # define _LIBCPP_POP_EXTENSION_DIAGNOSTICS #endif +#define _LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS \ + _LIBCPP_DIAGNOSTIC_PUSH _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wpragma-clang-attribute") \ + _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wignored-attributes") \ + _Pragma(_LIBCPP_TOSTRING(clang attribute _LibcxxExplicitABIAnnotations.push( \ + __attribute__((__exclude_from_explicit_instantiation__, \ + __visibility__("hidden"), \ + __abi_tag__(_LIBCPP_TOSTRING(_LIBCPP_ODR_SIGNATURE)))), \ + apply_to = function))) _LIBCPP_DIAGNOSTIC_POP + +#define _LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS _Pragma("clang attribute _LibcxxExplicitABIAnnotations.pop") + // clang-format off // The unversioned namespace is used when we want to be ABI compatible with other standard libraries in some way. There @@ -50,9 +62,9 @@ // If it's not clear whether using the unversioned namespace is the correct thing to do, it's not. The versioned // namespace (_LIBCPP_BEGIN_NAMESPACE_STD) should almost always be used. # define _LIBCPP_BEGIN_UNVERSIONED_NAMESPACE_STD \ - _LIBCPP_PUSH_EXTENSION_DIAGNOSTICS namespace _LIBCPP_NAMESPACE_VISIBILITY std { + _LIBCPP_PUSH_EXTENSION_DIAGNOSTICS _LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS namespace _LIBCPP_NAMESPACE_VISIBILITY std { -# define _LIBCPP_END_UNVERSIONED_NAMESPACE_STD } _LIBCPP_POP_EXTENSION_DIAGNOSTICS +# define _LIBCPP_END_UNVERSIONED_NAMESPACE_STD } _LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_POP_EXTENSION_DIAGNOSTICS # define _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_BEGIN_UNVERSIONED_NAMESPACE_STD inline namespace _LIBCPP_ABI_NAMESPACE { # define _LIBCPP_END_NAMESPACE_STD } _LIBCPP_END_UNVERSIONED_NAMESPACE_STD diff --git a/libcxx/include/__configuration/utility.h b/libcxx/include/__configuration/utility.h new file mode 100644 index 000000000000..81e91887614d --- /dev/null +++ b/libcxx/include/__configuration/utility.h @@ -0,0 +1,22 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONFIGURATION_UTILITY_H +#define _LIBCPP___CONFIGURATION_UTILITY_H + +#include <__config_site> + +#ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER +# pragma GCC system_header +#endif + +#define _LIBCPP_TOSTRING2(x) #x +#define _LIBCPP_TOSTRING(x) _LIBCPP_TOSTRING2(x) + +#endif // _LIBCPP___CONFIGURATION_UTILITY_H diff --git a/libcxx/include/__exception/exception.h b/libcxx/include/__exception/exception.h index ddc34b0fa8fa..c5f37d5fd161 100644 --- a/libcxx/include/__exception/exception.h +++ b/libcxx/include/__exception/exception.h @@ -22,6 +22,7 @@ #endif _LIBCPP_BEGIN_UNVERSIONED_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #if defined(_LIBCPP_ABI_VCRUNTIME) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0) // The std::exception class was already included above, but we're explicit about this condition here for clarity. @@ -91,6 +92,7 @@ public: }; #endif // !_LIBCPP_ABI_VCRUNTIME +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_UNVERSIONED_NAMESPACE_STD #endif // _LIBCPP___EXCEPTION_EXCEPTION_H diff --git a/libcxx/include/__exception/exception_ptr.h b/libcxx/include/__exception/exception_ptr.h index d3c137d53041..f7ed00d55583 100644 --- a/libcxx/include/__exception/exception_ptr.h +++ b/libcxx/include/__exception/exception_ptr.h @@ -60,6 +60,7 @@ _LIBCPP_OVERRIDABLE_FUNC_VIS __cxa_exception* __cxa_init_primary_exception( #endif // !defined(_LIBCPP_ABI_MICROSOFT) _LIBCPP_BEGIN_UNVERSIONED_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #ifndef _LIBCPP_ABI_MICROSOFT @@ -219,6 +220,8 @@ _LIBCPP_HIDE_FROM_ABI exception_ptr make_exception_ptr(_Ep __e) _NOEXCEPT { } #endif // defined(_LIBCPP_ABI_MICROSOFT) + +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_UNVERSIONED_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/__exception/nested_exception.h b/libcxx/include/__exception/nested_exception.h index dd84efbccde8..f8abe7db50de 100644 --- a/libcxx/include/__exception/nested_exception.h +++ b/libcxx/include/__exception/nested_exception.h @@ -28,6 +28,7 @@ #endif _LIBCPP_BEGIN_UNVERSIONED_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class _LIBCPP_EXPORTED_FROM_ABI nested_exception { exception_ptr __ptr_; @@ -95,6 +96,7 @@ inline _LIBCPP_HIDE_FROM_ABI void rethrow_if_nested(const _Ep& __e) { template ::value, int> = 0> inline _LIBCPP_HIDE_FROM_ABI void rethrow_if_nested(const _Ep&) {} +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_UNVERSIONED_NAMESPACE_STD #endif // _LIBCPP___EXCEPTION_NESTED_EXCEPTION_H diff --git a/libcxx/include/__exception/operations.h b/libcxx/include/__exception/operations.h index 2b93ad260c30..83507a739366 100644 --- a/libcxx/include/__exception/operations.h +++ b/libcxx/include/__exception/operations.h @@ -16,6 +16,8 @@ #endif _LIBCPP_BEGIN_UNVERSIONED_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS + #if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS) || \ defined(_LIBCPP_BUILDING_LIBRARY) using unexpected_handler = void (*)(); @@ -37,6 +39,8 @@ class _LIBCPP_EXPORTED_FROM_ABI exception_ptr; [[__nodiscard__]] _LIBCPP_EXPORTED_FROM_ABI exception_ptr current_exception() _NOEXCEPT; [[__noreturn__]] _LIBCPP_EXPORTED_FROM_ABI void rethrow_exception(exception_ptr); + +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_UNVERSIONED_NAMESPACE_STD #endif // _LIBCPP___EXCEPTION_OPERATIONS_H diff --git a/libcxx/include/__exception/terminate.h b/libcxx/include/__exception/terminate.h index 955a49c2b00c..8f2f584b18d3 100644 --- a/libcxx/include/__exception/terminate.h +++ b/libcxx/include/__exception/terminate.h @@ -16,7 +16,11 @@ #endif _LIBCPP_BEGIN_UNVERSIONED_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS + [[__noreturn__]] _LIBCPP_EXPORTED_FROM_ABI void terminate() _NOEXCEPT; + +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_UNVERSIONED_NAMESPACE_STD #endif // _LIBCPP___EXCEPTION_TERMINATE_H diff --git a/libcxx/include/__expected/bad_expected_access.h b/libcxx/include/__expected/bad_expected_access.h index b1958101d517..d0ba175c04c9 100644 --- a/libcxx/include/__expected/bad_expected_access.h +++ b/libcxx/include/__expected/bad_expected_access.h @@ -23,6 +23,7 @@ _LIBCPP_PUSH_MACROS #if _LIBCPP_STD_VER >= 23 _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS template class bad_expected_access; @@ -66,6 +67,7 @@ private: _Err __unex_; }; +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_STD_VER >= 23 diff --git a/libcxx/include/__filesystem/directory_entry.h b/libcxx/include/__filesystem/directory_entry.h index fab400b43942..d741984b34fe 100644 --- a/libcxx/include/__filesystem/directory_entry.h +++ b/libcxx/include/__filesystem/directory_entry.h @@ -39,6 +39,7 @@ _LIBCPP_PUSH_MACROS #if _LIBCPP_STD_VER >= 17 && _LIBCPP_HAS_FILESYSTEM _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class directory_entry { typedef filesystem::path _Path; @@ -465,6 +466,7 @@ private: directory_entry __elem_; }; +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_FILESYSTEM #endif // _LIBCPP_STD_VER >= 17 && _LIBCPP_HAS_FILESYSTEM diff --git a/libcxx/include/__filesystem/directory_iterator.h b/libcxx/include/__filesystem/directory_iterator.h index b62129807b56..52a5bf59a2c8 100644 --- a/libcxx/include/__filesystem/directory_iterator.h +++ b/libcxx/include/__filesystem/directory_iterator.h @@ -33,6 +33,7 @@ _LIBCPP_PUSH_MACROS #if _LIBCPP_STD_VER >= 17 && _LIBCPP_HAS_FILESYSTEM _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class _LIBCPP_HIDDEN __dir_stream; class directory_iterator { @@ -129,6 +130,7 @@ operator!=(const directory_iterator& __lhs, const directory_iterator& __rhs) noe return directory_iterator(); } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_FILESYSTEM # if _LIBCPP_STD_VER >= 20 diff --git a/libcxx/include/__filesystem/filesystem_error.h b/libcxx/include/__filesystem/filesystem_error.h index 6f1daf866a50..054e38111b41 100644 --- a/libcxx/include/__filesystem/filesystem_error.h +++ b/libcxx/include/__filesystem/filesystem_error.h @@ -26,6 +26,7 @@ #if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class _LIBCPP_EXPORTED_FROM_ABI filesystem_error : public system_error { public: @@ -80,6 +81,7 @@ template } # endif +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_FILESYSTEM #endif // _LIBCPP_STD_VER >= 17 diff --git a/libcxx/include/__filesystem/operations.h b/libcxx/include/__filesystem/operations.h index f536a1a9d446..77b6e1908066 100644 --- a/libcxx/include/__filesystem/operations.h +++ b/libcxx/include/__filesystem/operations.h @@ -31,6 +31,7 @@ _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_EXPORTED_FROM_ABI path __absolute(const path&, error_code* __ec = nullptr); _LIBCPP_EXPORTED_FROM_ABI path __canonical(const path&, error_code* __ec = nullptr); _LIBCPP_EXPORTED_FROM_ABI bool @@ -67,6 +68,7 @@ _LIBCPP_EXPORTED_FROM_ABI path __temp_directory_path(error_code* __ec = nullptr) _LIBCPP_EXPORTED_FROM_ABI bool __fs_is_empty(const path& __p, error_code* __ec = nullptr); _LIBCPP_EXPORTED_FROM_ABI void __permissions(const path&, perms, perm_options, error_code* = nullptr); _LIBCPP_EXPORTED_FROM_ABI space_info __space(const path&, error_code* __ec = nullptr); +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS [[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path absolute(const path& __p) { return __absolute(__p); } [[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path absolute(const path& __p, error_code& __ec) { diff --git a/libcxx/include/__filesystem/path.h b/libcxx/include/__filesystem/path.h index 47ecf1ce1978..a63c4ee611eb 100644 --- a/libcxx/include/__filesystem/path.h +++ b/libcxx/include/__filesystem/path.h @@ -42,6 +42,7 @@ _LIBCPP_PUSH_MACROS #if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS template struct __can_convert_char { @@ -899,6 +900,7 @@ inline _LIBCPP_HIDE_FROM_ABI void swap(path& __lhs, path& __rhs) noexcept { __lh [[nodiscard]] _LIBCPP_EXPORTED_FROM_ABI size_t hash_value(const path& __p) noexcept; +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_FILESYSTEM _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/__filesystem/path_iterator.h b/libcxx/include/__filesystem/path_iterator.h index dd408a76ca59..30a9a5a059af 100644 --- a/libcxx/include/__filesystem/path_iterator.h +++ b/libcxx/include/__filesystem/path_iterator.h @@ -22,6 +22,7 @@ #if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class _LIBCPP_EXPORTED_FROM_ABI path::iterator { public: @@ -103,6 +104,7 @@ inline _LIBCPP_HIDE_FROM_ABI bool operator!=(const path::iterator& __lhs, const return !(__lhs == __rhs); } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_FILESYSTEM #endif // _LIBCPP_STD_VER >= 17 diff --git a/libcxx/include/__filesystem/recursive_directory_iterator.h b/libcxx/include/__filesystem/recursive_directory_iterator.h index 18165b0031e5..99665d017a10 100644 --- a/libcxx/include/__filesystem/recursive_directory_iterator.h +++ b/libcxx/include/__filesystem/recursive_directory_iterator.h @@ -32,6 +32,7 @@ _LIBCPP_PUSH_MACROS #if _LIBCPP_STD_VER >= 17 && _LIBCPP_HAS_FILESYSTEM _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class recursive_directory_iterator { public: @@ -139,6 +140,7 @@ begin(recursive_directory_iterator __iter) noexcept { return recursive_directory_iterator(); } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_FILESYSTEM # if _LIBCPP_STD_VER >= 20 diff --git a/libcxx/include/__format/format_error.h b/libcxx/include/__format/format_error.h index b92e6d1de00e..853b4c1c3e75 100644 --- a/libcxx/include/__format/format_error.h +++ b/libcxx/include/__format/format_error.h @@ -19,6 +19,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #if _LIBCPP_STD_VER >= 20 @@ -45,6 +46,7 @@ _LIBCPP_DIAGNOSTIC_POP #endif // _LIBCPP_STD_VER >= 20 +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___FORMAT_FORMAT_ERROR_H diff --git a/libcxx/include/__functional/function.h b/libcxx/include/__functional/function.h index d3a978ac862d..3185a1942455 100644 --- a/libcxx/include/__functional/function.h +++ b/libcxx/include/__functional/function.h @@ -44,6 +44,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD // bad_function_call _LIBCPP_DIAGNOSTIC_PUSH +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS # if !_LIBCPP_AVAILABILITY_HAS_BAD_FUNCTION_CALL_KEY_FUNCTION _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wweak-vtables") # endif @@ -65,6 +66,7 @@ public: const char* what() const _NOEXCEPT override; # endif }; +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_DIAGNOSTIC_POP [[__noreturn__]] inline _LIBCPP_HIDE_FROM_ABI void __throw_bad_function_call() { diff --git a/libcxx/include/__functional/hash.h b/libcxx/include/__functional/hash.h index fa7181984f16..c794f57356ae 100644 --- a/libcxx/include/__functional/hash.h +++ b/libcxx/include/__functional/hash.h @@ -249,7 +249,9 @@ private: }; #if _LIBCPP_AVAILABILITY_HAS_HASH_MEMORY +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS [[__gnu__::__pure__]] _LIBCPP_EXPORTED_FROM_ABI size_t __hash_memory(_LIBCPP_NOESCAPE const void*, size_t) _NOEXCEPT; +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS #else _LIBCPP_HIDE_FROM_ABI inline size_t __hash_memory(const void* __ptr, size_t __size) _NOEXCEPT { return __murmur2_or_cityhash()(__ptr, __size); diff --git a/libcxx/include/__hash_table b/libcxx/include/__hash_table index 4b1e729c1d45..e1264703f6b1 100644 --- a/libcxx/include/__hash_table +++ b/libcxx/include/__hash_table @@ -74,7 +74,9 @@ struct __is_hash_value_type : false_type {}; template struct __is_hash_value_type<_One> : __is_hash_value_type_imp<__remove_cvref_t<_One> > {}; +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_EXPORTED_FROM_ABI size_t __next_prime(size_t __n); +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS template struct __hash_node_base { diff --git a/libcxx/include/__locale b/libcxx/include/__locale index 8b6b48ccd6b5..1d5f12431588 100644 --- a/libcxx/include/__locale +++ b/libcxx/include/__locale @@ -42,6 +42,7 @@ # endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class _LIBCPP_EXPORTED_FROM_ABI locale; @@ -1497,6 +1498,7 @@ protected: }; # endif // _LIBCPP_HAS_WIDE_CHARACTERS +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_HAS_LOCALIZATION diff --git a/libcxx/include/__locale_dir/check_grouping.h b/libcxx/include/__locale_dir/check_grouping.h index 93e9e404bb5f..fe0f4f4b1780 100644 --- a/libcxx/include/__locale_dir/check_grouping.h +++ b/libcxx/include/__locale_dir/check_grouping.h @@ -20,10 +20,12 @@ # endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_EXPORTED_FROM_ABI void __check_grouping(const string& __grouping, unsigned* __g, unsigned* __g_end, ios_base::iostate& __err); +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_HAS_LOCALIZATION diff --git a/libcxx/include/__locale_dir/get_c_locale.h b/libcxx/include/__locale_dir/get_c_locale.h index e8bac9a87095..677827f2d8f1 100644 --- a/libcxx/include/__locale_dir/get_c_locale.h +++ b/libcxx/include/__locale_dir/get_c_locale.h @@ -29,7 +29,9 @@ _LIBCPP_BEGIN_NAMESPACE_STD # else # define _LIBCPP_GET_C_LOCALE __cloc() // Get the C locale object +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_EXPORTED_FROM_ABI __locale::__locale_t __cloc(); +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS # define __cloc_defined # endif diff --git a/libcxx/include/__locale_dir/messages.h b/libcxx/include/__locale_dir/messages.h index 686f472840c2..4023d2d5688d 100644 --- a/libcxx/include/__locale_dir/messages.h +++ b/libcxx/include/__locale_dir/messages.h @@ -33,6 +33,7 @@ # endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class _LIBCPP_EXPORTED_FROM_ABI messages_base { public: @@ -136,6 +137,7 @@ extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS messages_byname; extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS messages_byname; # endif +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_HAS_LOCALIZATION diff --git a/libcxx/include/__locale_dir/money.h b/libcxx/include/__locale_dir/money.h index 12ba38467d80..bb67f95ca2e0 100644 --- a/libcxx/include/__locale_dir/money.h +++ b/libcxx/include/__locale_dir/money.h @@ -32,6 +32,7 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS // money_base @@ -864,6 +865,7 @@ extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS money_put; extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS money_put; # endif +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/__locale_dir/num.h b/libcxx/include/__locale_dir/num.h index b7ea02e7cb7f..8af427ca37db 100644 --- a/libcxx/include/__locale_dir/num.h +++ b/libcxx/include/__locale_dir/num.h @@ -42,6 +42,7 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS struct _LIBCPP_EXPORTED_FROM_ABI __num_get_base { static const int __num_get_buf_sz = 40; @@ -1008,6 +1009,7 @@ extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS num_put; extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS num_put; # endif +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/__locale_dir/support/windows.h b/libcxx/include/__locale_dir/support/windows.h index bacad6fa52e0..c9ea500bc0b1 100644 --- a/libcxx/include/__locale_dir/support/windows.h +++ b/libcxx/include/__locale_dir/support/windows.h @@ -27,6 +27,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace __locale { using __lconv_t _LIBCPP_NODEBUG = std::lconv; @@ -304,6 +305,7 @@ struct __locale_guard { #endif // _LIBCPP_BUILDING_LIBRARY } // namespace __locale +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___LOCALE_DIR_SUPPORT_WINDOWS_H diff --git a/libcxx/include/__locale_dir/time.h b/libcxx/include/__locale_dir/time.h index 78698e965191..7db1cc660cd3 100644 --- a/libcxx/include/__locale_dir/time.h +++ b/libcxx/include/__locale_dir/time.h @@ -22,6 +22,7 @@ # endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS template _LIBCPP_HIDE_FROM_ABI int __get_up_to_n_digits( @@ -755,6 +756,7 @@ extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS time_put_byname; extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS time_put_byname; # endif +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_HAS_LOCALIZATION diff --git a/libcxx/include/__log_hardening_failure b/libcxx/include/__log_hardening_failure index d1805306f6b6..2b6065e9a19f 100644 --- a/libcxx/include/__log_hardening_failure +++ b/libcxx/include/__log_hardening_failure @@ -24,7 +24,9 @@ _LIBCPP_BEGIN_NAMESPACE_STD // This function should never be called directly from the code -- it should only be called through the // `_LIBCPP_LOG_HARDENING_FAILURE` macro. +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS [[__gnu__::__cold__]] _LIBCPP_EXPORTED_FROM_ABI void __log_hardening_failure(const char* __message) noexcept; +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS // _LIBCPP_LOG_HARDENING_FAILURE(message) // diff --git a/libcxx/include/__math/gamma.h b/libcxx/include/__math/gamma.h index 6c82cbf0cae9..a742ea42d900 100644 --- a/libcxx/include/__math/gamma.h +++ b/libcxx/include/__math/gamma.h @@ -68,11 +68,13 @@ inline _LIBCPP_HIDE_FROM_ABI double __lgamma_r(double __d) _NOEXCEPT { return __ #else +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS # if defined(_LIBCPP_OBJECT_FORMAT_MACHO) double __lgamma_r_shim(double, int*) _NOEXCEPT __asm__("_lgamma_r"); # else double __lgamma_r_shim(double, int*) _NOEXCEPT __asm__("lgamma_r"); # endif +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS inline _LIBCPP_HIDE_FROM_ABI double __lgamma_r(double __d) _NOEXCEPT { int __sign; diff --git a/libcxx/include/__memory/shared_count.h b/libcxx/include/__memory/shared_count.h index b40d8c9cf77d..4fd81287d854 100644 --- a/libcxx/include/__memory/shared_count.h +++ b/libcxx/include/__memory/shared_count.h @@ -18,6 +18,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS // NOTE: Relaxed and acq/rel atomics (for increment and decrement respectively) // should be sufficient for thread safety. @@ -111,6 +112,7 @@ private: virtual void __on_zero_shared_weak() _NOEXCEPT = 0; }; +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___MEMORY_SHARED_COUNT_H diff --git a/libcxx/include/__memory/shared_ptr.h b/libcxx/include/__memory/shared_ptr.h index 4c86eb160ef1..bbf4a5553f78 100644 --- a/libcxx/include/__memory/shared_ptr.h +++ b/libcxx/include/__memory/shared_ptr.h @@ -70,6 +70,7 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class _LIBCPP_EXPORTED_FROM_ABI bad_weak_ptr : public std::exception { public: @@ -1536,6 +1537,7 @@ inline _LIBCPP_HIDE_FROM_ABI bool atomic_compare_exchange_weak_explicit( #endif // _LIBCPP_HAS_THREADS +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/__memory_resource/memory_resource.h b/libcxx/include/__memory_resource/memory_resource.h index 5b42ae54890b..c5726bd2bcdb 100644 --- a/libcxx/include/__memory_resource/memory_resource.h +++ b/libcxx/include/__memory_resource/memory_resource.h @@ -21,6 +21,7 @@ #if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace pmr { @@ -84,6 +85,7 @@ null_memory_resource() noexcept; } // namespace pmr +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_STD_VER >= 17 diff --git a/libcxx/include/__memory_resource/monotonic_buffer_resource.h b/libcxx/include/__memory_resource/monotonic_buffer_resource.h index 9c7b07df52f8..a6d292386169 100644 --- a/libcxx/include/__memory_resource/monotonic_buffer_resource.h +++ b/libcxx/include/__memory_resource/monotonic_buffer_resource.h @@ -21,6 +21,7 @@ #if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace pmr { @@ -112,6 +113,7 @@ private: } // namespace pmr +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_STD_VER >= 17 diff --git a/libcxx/include/__memory_resource/synchronized_pool_resource.h b/libcxx/include/__memory_resource/synchronized_pool_resource.h index 1c929675bb3b..97a0f28ad412 100644 --- a/libcxx/include/__memory_resource/synchronized_pool_resource.h +++ b/libcxx/include/__memory_resource/synchronized_pool_resource.h @@ -24,6 +24,7 @@ #if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace pmr { @@ -88,6 +89,7 @@ private: } // namespace pmr +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_STD_VER >= 17 diff --git a/libcxx/include/__memory_resource/unsynchronized_pool_resource.h b/libcxx/include/__memory_resource/unsynchronized_pool_resource.h index 89198a1b7c96..589afaf2faa2 100644 --- a/libcxx/include/__memory_resource/unsynchronized_pool_resource.h +++ b/libcxx/include/__memory_resource/unsynchronized_pool_resource.h @@ -22,6 +22,7 @@ #if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace pmr { @@ -99,6 +100,7 @@ private: } // namespace pmr +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_STD_VER >= 17 diff --git a/libcxx/include/__mutex/mutex.h b/libcxx/include/__mutex/mutex.h index e9cedf8db1cc..d0addacc2893 100644 --- a/libcxx/include/__mutex/mutex.h +++ b/libcxx/include/__mutex/mutex.h @@ -20,6 +20,7 @@ #if _LIBCPP_HAS_THREADS _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class _LIBCPP_EXPORTED_FROM_ABI _LIBCPP_CAPABILITY("mutex") mutex { __libcpp_mutex_t __m_ = _LIBCPP_MUTEX_INITIALIZER; @@ -46,6 +47,7 @@ public: static_assert(is_nothrow_default_constructible::value, "the default constructor for std::mutex must be nothrow"); +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_HAS_THREADS diff --git a/libcxx/include/__mutex/once_flag.h b/libcxx/include/__mutex/once_flag.h index ad15b2eb6df6..9999852b8b78 100644 --- a/libcxx/include/__mutex/once_flag.h +++ b/libcxx/include/__mutex/once_flag.h @@ -113,7 +113,9 @@ void _LIBCPP_HIDE_FROM_ABI __call_once_proxy(void* __vp) { (*__p)(); } +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_EXPORTED_FROM_ABI void __call_once(volatile once_flag::_State_type&, void*, void (*)(void*)); +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS template inline _LIBCPP_HIDE_FROM_ABI _ValueType __libcpp_acquire_load(_ValueType const* __value) { diff --git a/libcxx/include/__new/exceptions.h b/libcxx/include/__new/exceptions.h index 1aadc23120cb..28561187fb55 100644 --- a/libcxx/include/__new/exceptions.h +++ b/libcxx/include/__new/exceptions.h @@ -24,6 +24,8 @@ #endif _LIBCPP_BEGIN_UNVERSIONED_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS + #if !defined(_LIBCPP_ABI_VCRUNTIME) class _LIBCPP_EXPORTED_FROM_ABI bad_alloc : public exception { @@ -74,6 +76,7 @@ public: _LIBCPP_VERBOSE_ABORT("bad_array_new_length was thrown in -fno-exceptions mode"); #endif } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_UNVERSIONED_NAMESPACE_STD #endif // _LIBCPP___NEW_EXCEPTIONS_H diff --git a/libcxx/include/__new/new_handler.h b/libcxx/include/__new/new_handler.h index 05f4e846c3ef..fc6aabec61b6 100644 --- a/libcxx/include/__new/new_handler.h +++ b/libcxx/include/__new/new_handler.h @@ -19,9 +19,13 @@ # include #else _LIBCPP_BEGIN_UNVERSIONED_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS + typedef void (*new_handler)(); _LIBCPP_EXPORTED_FROM_ABI new_handler set_new_handler(new_handler) _NOEXCEPT; _LIBCPP_EXPORTED_FROM_ABI new_handler get_new_handler() _NOEXCEPT; + +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_UNVERSIONED_NAMESPACE_STD #endif // _LIBCPP_ABI_VCRUNTIME diff --git a/libcxx/include/__ostream/basic_ostream.h b/libcxx/include/__ostream/basic_ostream.h index 62770be72f98..43c9399758bf 100644 --- a/libcxx/include/__ostream/basic_ostream.h +++ b/libcxx/include/__ostream/basic_ostream.h @@ -41,6 +41,7 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS template class basic_ostream : virtual public basic_ios<_CharT, _Traits> { @@ -672,6 +673,7 @@ extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream; extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream; # endif +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/__ostream/print.h b/libcxx/include/__ostream/print.h index 8ed52301403e..5b4ab60a45ee 100644 --- a/libcxx/include/__ostream/print.h +++ b/libcxx/include/__ostream/print.h @@ -82,7 +82,9 @@ _LIBCPP_HIDE_FROM_ABI inline void vprint_nonunicode(ostream& __os, string_view _ // native Unicode API; // Whether the returned FILE* is "a terminal capable of displaying Unicode" // is determined in the same way as the print(FILE*, ...) overloads. +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_EXPORTED_FROM_ABI FILE* __get_ostream_file(ostream& __os); +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS # if _LIBCPP_HAS_UNICODE template // TODO PRINT template or availability markup fires too eagerly (http://llvm.org/PR61563). diff --git a/libcxx/include/__pstl/backends/libdispatch.h b/libcxx/include/__pstl/backends/libdispatch.h index 88d4231d29a0..33fd5de66fbb 100644 --- a/libcxx/include/__pstl/backends/libdispatch.h +++ b/libcxx/include/__pstl/backends/libdispatch.h @@ -48,6 +48,7 @@ _LIBCPP_PUSH_MACROS #if _LIBCPP_STD_VER >= 17 _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace __pstl { namespace __libdispatch { @@ -393,6 +394,7 @@ struct __fill<__libdispatch_backend_tag, _ExecutionPolicy> : __cpu_parallel_fill<__libdispatch_backend_tag, _ExecutionPolicy> {}; } // namespace __pstl +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_STD_VER >= 17 diff --git a/libcxx/include/__random/random_device.h b/libcxx/include/__random/random_device.h index 33ec585cc0ef..17ca2fc7499d 100644 --- a/libcxx/include/__random/random_device.h +++ b/libcxx/include/__random/random_device.h @@ -20,6 +20,7 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #if _LIBCPP_HAS_RANDOM_DEVICE @@ -74,6 +75,7 @@ public: #endif // _LIBCPP_HAS_RANDOM_DEVICE +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/__system_error/error_category.h b/libcxx/include/__system_error/error_category.h index 7f7c7355c7e7..f7b9233f6ef9 100644 --- a/libcxx/include/__system_error/error_category.h +++ b/libcxx/include/__system_error/error_category.h @@ -19,6 +19,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class error_condition; class _LIBCPP_EXPORTED_FROM_ABI error_code; @@ -70,6 +71,7 @@ public: [[__gnu__::__const__]] [[__nodiscard__]] _LIBCPP_EXPORTED_FROM_ABI const error_category& generic_category() _NOEXCEPT; [[__gnu__::__const__]] [[__nodiscard__]] _LIBCPP_EXPORTED_FROM_ABI const error_category& system_category() _NOEXCEPT; +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___SYSTEM_ERROR_ERROR_CATEGORY_H diff --git a/libcxx/include/__system_error/error_code.h b/libcxx/include/__system_error/error_code.h index e90437693975..1b4fdd8eabb7 100644 --- a/libcxx/include/__system_error/error_code.h +++ b/libcxx/include/__system_error/error_code.h @@ -24,6 +24,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS template struct is_error_code_enum : public false_type {}; @@ -137,6 +138,7 @@ struct hash : public __unary_function { } }; +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___SYSTEM_ERROR_ERROR_CODE_H diff --git a/libcxx/include/__system_error/error_condition.h b/libcxx/include/__system_error/error_condition.h index be7deaba0444..47d87be8d765 100644 --- a/libcxx/include/__system_error/error_condition.h +++ b/libcxx/include/__system_error/error_condition.h @@ -23,6 +23,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS template struct is_error_condition_enum : public false_type {}; @@ -124,6 +125,7 @@ struct hash : public __unary_function } }; +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___SYSTEM_ERROR_ERROR_CONDITION_H diff --git a/libcxx/include/__system_error/system_error.h b/libcxx/include/__system_error/system_error.h index 74427d8f0bf9..435b8f7f6aa1 100644 --- a/libcxx/include/__system_error/system_error.h +++ b/libcxx/include/__system_error/system_error.h @@ -22,6 +22,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class _LIBCPP_EXPORTED_FROM_ABI system_error : public runtime_error { error_code __ec_; @@ -52,6 +53,7 @@ public: #endif } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___SYSTEM_ERROR_SYSTEM_ERROR_H diff --git a/libcxx/include/__system_error/throw_system_error.h b/libcxx/include/__system_error/throw_system_error.h index e4605b6f014d..abcfaeb7fbed 100644 --- a/libcxx/include/__system_error/throw_system_error.h +++ b/libcxx/include/__system_error/throw_system_error.h @@ -17,9 +17,11 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS [[__noreturn__]] _LIBCPP_EXPORTED_FROM_ABI void __throw_system_error(int __ev, const char* __what_arg); +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___SYSTEM_ERROR_THROW_SYSTEM_ERROR_H diff --git a/libcxx/include/__thread/support/windows.h b/libcxx/include/__thread/support/windows.h index 558b5c81dc19..558e8b5050e3 100644 --- a/libcxx/include/__thread/support/windows.h +++ b/libcxx/include/__thread/support/windows.h @@ -19,6 +19,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS using __libcpp_timespec_t = ::timespec; @@ -126,6 +127,7 @@ _LIBCPP_EXPORTED_FROM_ABI void* __libcpp_tls_get(__libcpp_tls_key __key); _LIBCPP_EXPORTED_FROM_ABI int __libcpp_tls_set(__libcpp_tls_key __key, void* __p); +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP___THREAD_SUPPORT_WINDOWS_H diff --git a/libcxx/include/__thread/this_thread.h b/libcxx/include/__thread/this_thread.h index 4df137711a7f..5a93e4d60502 100644 --- a/libcxx/include/__thread/this_thread.h +++ b/libcxx/include/__thread/this_thread.h @@ -32,7 +32,9 @@ namespace this_thread { #if _LIBCPP_HAS_THREADS +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_EXPORTED_FROM_ABI void sleep_for(const chrono::nanoseconds& __ns); +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS template _LIBCPP_HIDE_FROM_ABI void sleep_for(const chrono::duration<_Rep, _Period>& __d) { diff --git a/libcxx/include/__thread/thread.h b/libcxx/include/__thread/thread.h index 3b1f45e45e35..ee7a65212f31 100644 --- a/libcxx/include/__thread/thread.h +++ b/libcxx/include/__thread/thread.h @@ -45,6 +45,7 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #if _LIBCPP_HAS_THREADS @@ -261,6 +262,7 @@ inline _LIBCPP_HIDE_FROM_ABI void swap(thread& __x, thread& __y) _NOEXCEPT { __x #endif // _LIBCPP_HAS_THREADS +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/__verbose_abort b/libcxx/include/__verbose_abort index f8b696733e2b..22df0e14463d 100644 --- a/libcxx/include/__verbose_abort +++ b/libcxx/include/__verbose_abort @@ -20,8 +20,10 @@ _LIBCPP_BEGIN_NAMESPACE_STD // This function should never be called directly from the code -- it should only be called through // the _LIBCPP_VERBOSE_ABORT macro. +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS [[__noreturn__]] _LIBCPP_AVAILABILITY_VERBOSE_ABORT _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_ATTRIBUTE_FORMAT( __printf__, 1, 2) void __libcpp_verbose_abort(const char* __format, ...) _NOEXCEPT; +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS // _LIBCPP_VERBOSE_ABORT(format, args...) // diff --git a/libcxx/include/any b/libcxx/include/any index d9368df75296..740bcec93835 100644 --- a/libcxx/include/any +++ b/libcxx/include/any @@ -120,10 +120,14 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> _LIBCPP_BEGIN_UNVERSIONED_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS + class _LIBCPP_EXPORTED_FROM_ABI bad_any_cast : public bad_cast { public: const char* what() const _NOEXCEPT override; }; + +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_UNVERSIONED_NAMESPACE_STD _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/barrier b/libcxx/include/barrier index 428a39a44e09..0bd0e3da0ca1 100644 --- a/libcxx/include/barrier +++ b/libcxx/include/barrier @@ -95,6 +95,7 @@ using __barrier_phase_t _LIBCPP_NODEBUG = uint8_t; class __barrier_algorithm_base; +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS [[__gnu__::__returns_nonnull__, __gnu__::__malloc__]] _LIBCPP_EXPORTED_FROM_ABI __barrier_algorithm_base* __construct_barrier_algorithm_base(ptrdiff_t& __expected); @@ -104,6 +105,7 @@ __arrive_barrier_algorithm_base([[__gnu__::__nonnull__]] _LIBCPP_NOESCAPE __barr _LIBCPP_EXPORTED_FROM_ABI void __destroy_barrier_algorithm_base( [[__gnu__::__nonnull__]] _LIBCPP_NOESCAPE __barrier_algorithm_base* __barrier) noexcept; +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS template class __barrier_base { diff --git a/libcxx/include/codecvt b/libcxx/include/codecvt index 33ade1d298a7..00f3301a60f5 100644 --- a/libcxx/include/codecvt +++ b/libcxx/include/codecvt @@ -71,6 +71,7 @@ class codecvt_utf8_utf16 # if _LIBCPP_STD_VER < 26 || defined(_LIBCPP_BUILDING_LIBRARY) || defined(_LIBCPP_ENABLE_CXX26_REMOVED_CODECVT) _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS enum _LIBCPP_DEPRECATED_IN_CXX17 codecvt_mode { consume_header = 4, generate_header = 2, little_endian = 1 }; @@ -579,6 +580,7 @@ public: }; _LIBCPP_SUPPRESS_DEPRECATED_POP +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD # endif // _LIBCPP_STD_VER < 26 || defined(_LIBCPP_BUILDING_LIBRARY) || defined(_LIBCPP_ENABLE_CXX26_REMOVED_CODECVT) diff --git a/libcxx/include/condition_variable b/libcxx/include/condition_variable index d42a4802b179..a5dc060fbfa3 100644 --- a/libcxx/include/condition_variable +++ b/libcxx/include/condition_variable @@ -146,6 +146,7 @@ _LIBCPP_PUSH_MACROS # if _LIBCPP_HAS_THREADS _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS template struct __unlock_guard { @@ -342,6 +343,7 @@ bool condition_variable_any::wait_for( _LIBCPP_EXPORTED_FROM_ABI void notify_all_at_thread_exit(condition_variable&, unique_lock); +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD # endif // _LIBCPP_HAS_THREADS diff --git a/libcxx/include/fstream b/libcxx/include/fstream index 4000be815373..7edecbb935a0 100644 --- a/libcxx/include/fstream +++ b/libcxx/include/fstream @@ -220,6 +220,7 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS # if _LIBCPP_STD_VER >= 23 && defined(_LIBCPP_WIN32API) _LIBCPP_EXPORTED_FROM_ABI void* __filebuf_windows_native_handle(FILE* __file) noexcept; @@ -1616,6 +1617,7 @@ extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ofstream; extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_filebuf; # endif +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/future b/libcxx/include/future index 6bd836afa04e..9c71dfb89087 100644 --- a/libcxx/include/future +++ b/libcxx/include/future @@ -420,6 +420,7 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS // enum class future_errc _LIBCPP_DECLARE_STRONG_ENUM(future_errc){ @@ -2057,6 +2058,7 @@ inline shared_future<_Rp&> future<_Rp&>::share() _NOEXCEPT { inline shared_future future::share() _NOEXCEPT { return shared_future(std::move(*this)); } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/ios b/libcxx/include/ios index 9c03f56a230b..d1ec14cba37d 100644 --- a/libcxx/include/ios +++ b/libcxx/include/ios @@ -247,6 +247,7 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS typedef ptrdiff_t streamsize; @@ -878,6 +879,7 @@ _LIBCPP_HIDE_FROM_ABI inline ios_base& defaultfloat(ios_base& __str) { return __str; } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/istream b/libcxx/include/istream index dfa22e9f3bfb..c4b2de9caf01 100644 --- a/libcxx/include/istream +++ b/libcxx/include/istream @@ -190,6 +190,7 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS template class basic_istream : virtual public basic_ios<_CharT, _Traits> { @@ -1405,6 +1406,7 @@ extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_istream; # endif extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_iostream; +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/module.modulemap.in b/libcxx/include/module.modulemap.in index 44d8e21b2fba..b5aa319d0aca 100644 --- a/libcxx/include/module.modulemap.in +++ b/libcxx/include/module.modulemap.in @@ -13,6 +13,7 @@ module std_config [system] { textual header "__configuration/language.h" textual header "__configuration/namespace.h" textual header "__configuration/platform.h" + textual header "__configuration/utility.h" textual header "version" } diff --git a/libcxx/include/mutex b/libcxx/include/mutex index bec0185ede21..a3f358afe2ac 100644 --- a/libcxx/include/mutex +++ b/libcxx/include/mutex @@ -215,6 +215,7 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS # if _LIBCPP_HAS_THREADS @@ -497,6 +498,7 @@ _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(scoped_lock); # endif // _LIBCPP_STD_VER >= 17 # endif // _LIBCPP_HAS_THREADS +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/print b/libcxx/include/print index 19a0117a9041..cfa844e6ab60 100644 --- a/libcxx/include/print +++ b/libcxx/include/print @@ -55,6 +55,7 @@ namespace std { _LIBCPP_BEGIN_NAMESPACE_STD # ifdef _LIBCPP_WIN32API +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_EXPORTED_FROM_ABI bool __is_windows_terminal(FILE* __stream); # if _LIBCPP_HAS_WIDE_CHARACTERS @@ -69,6 +70,7 @@ _LIBCPP_EXPORTED_FROM_ABI bool __is_windows_terminal(FILE* __stream); // Note the function is only implemented on the Windows platform. _LIBCPP_EXPORTED_FROM_ABI void __write_to_windows_console(FILE* __stream, wstring_view __view); # endif // _LIBCPP_HAS_WIDE_CHARACTERS +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS # endif // _LIBCPP_WIN32API # if _LIBCPP_STD_VER >= 23 diff --git a/libcxx/include/regex b/libcxx/include/regex index ae6ffcbb5548..695a0f21754c 100644 --- a/libcxx/include/regex +++ b/libcxx/include/regex @@ -841,6 +841,7 @@ _LIBCPP_PUSH_MACROS # define _LIBCPP_REGEX_COMPLEXITY_FACTOR 4096 _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace regex_constants { @@ -5808,6 +5809,7 @@ regex_replace(const _CharT* __s, return __r; } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD # if _LIBCPP_STD_VER >= 17 diff --git a/libcxx/include/shared_mutex b/libcxx/include/shared_mutex index 028bbf565025..c1ba1c3b7a77 100644 --- a/libcxx/include/shared_mutex +++ b/libcxx/include/shared_mutex @@ -153,6 +153,7 @@ _LIBCPP_PUSH_MACROS # endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS struct _LIBCPP_EXPORTED_FROM_ABI __shared_mutex_base { mutex __mut_; @@ -431,6 +432,7 @@ inline _LIBCPP_HIDE_FROM_ABI void swap(shared_lock<_Mutex>& __x, shared_lock<_Mu __x.swap(__y); } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD # endif // _LIBCPP_STD_VER >= 14 diff --git a/libcxx/include/sstream b/libcxx/include/sstream index a42e8fbc9b72..e40e65dbde2b 100644 --- a/libcxx/include/sstream +++ b/libcxx/include/sstream @@ -338,6 +338,7 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS // Class template basic_stringbuf [stringbuf] @@ -1288,6 +1289,7 @@ extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostringstream extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_istringstream; # endif +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/stdexcept b/libcxx/include/stdexcept index d01de5c46211..3c9c03c0ca27 100644 --- a/libcxx/include/stdexcept +++ b/libcxx/include/stdexcept @@ -212,7 +212,9 @@ public: _LIBCPP_BEGIN_NAMESPACE_STD // in the dylib +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS [[__noreturn__]] _LIBCPP_EXPORTED_FROM_ABI void __throw_runtime_error(const char*); +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS [[__noreturn__]] inline _LIBCPP_HIDE_FROM_ABI void __throw_logic_error(const char* __msg) { # if _LIBCPP_HAS_EXCEPTIONS diff --git a/libcxx/include/streambuf b/libcxx/include/streambuf index 978ecb353853..bffdeacfa045 100644 --- a/libcxx/include/streambuf +++ b/libcxx/include/streambuf @@ -133,6 +133,7 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS template class basic_streambuf { @@ -430,6 +431,7 @@ extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_streambuf; extern template class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_streambuf; # endif +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/string b/libcxx/include/string index 5bd168f16eb4..2455938a92d9 100644 --- a/libcxx/include/string +++ b/libcxx/include/string @@ -694,6 +694,7 @@ _LIBCPP_PUSH_MACROS # endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS // basic_string @@ -3966,6 +3967,7 @@ inline constexpr bool __format::__enable_insertable> # endif +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/strstream b/libcxx/include/strstream index b33977ff66e2..cd1eb286b138 100644 --- a/libcxx/include/strstream +++ b/libcxx/include/strstream @@ -151,6 +151,7 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class _LIBCPP_DEPRECATED _LIBCPP_EXPORTED_FROM_ABI strstreambuf : public streambuf { public: @@ -349,6 +350,7 @@ private: strstreambuf __sb_; // exposition only }; +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/valarray b/libcxx/include/valarray index 58287b60dd89..c77656f2d100 100644 --- a/libcxx/include/valarray +++ b/libcxx/include/valarray @@ -381,6 +381,7 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS template class valarray; @@ -3300,6 +3301,7 @@ template return __v.__end_; } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/include/variant b/libcxx/include/variant index 9b2c4ee23ddc..45462ee8a771 100644 --- a/libcxx/include/variant +++ b/libcxx/include/variant @@ -285,12 +285,14 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> _LIBCPP_BEGIN_UNVERSIONED_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class _LIBCPP_EXPORTED_FROM_ABI bad_variant_access : public exception { public: [[__nodiscard__]] const char* what() const _NOEXCEPT override; }; +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_UNVERSIONED_NAMESPACE_STD _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/src/algorithm.cpp b/libcxx/src/algorithm.cpp index 8157be6f7406..bbfbb3885f1c 100644 --- a/libcxx/src/algorithm.cpp +++ b/libcxx/src/algorithm.cpp @@ -10,6 +10,7 @@ #include _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS template void __sort(RandomAccessIterator first, RandomAccessIterator last, Comp comp) { @@ -47,4 +48,5 @@ template void __sort<__less&, double*>(double*, double*, __less& template void __sort<__less&, long double*>(long double*, long double*, __less&); // clang-format on +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/any.cpp b/libcxx/src/any.cpp index fb9dd33b3ad7..1482dcc1dac0 100644 --- a/libcxx/src/any.cpp +++ b/libcxx/src/any.cpp @@ -19,6 +19,7 @@ const char* bad_any_cast::what() const noexcept { return "bad any cast"; } // Preserve std::experimental::any_bad_cast for ABI compatibility // Even though it no longer exists in a header file _LIBCPP_BEGIN_NAMESPACE_LFTS +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class _LIBCPP_EXPORTED_FROM_ABI bad_any_cast : public bad_cast { public: @@ -27,6 +28,7 @@ public: const char* bad_any_cast::what() const noexcept { return "bad any cast"; } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_LFTS #endif diff --git a/libcxx/src/atomic.cpp b/libcxx/src/atomic.cpp index 4d3064a2c9b7..b661714cff6e 100644 --- a/libcxx/src/atomic.cpp +++ b/libcxx/src/atomic.cpp @@ -65,6 +65,7 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS struct NoTimeout {}; @@ -523,6 +524,7 @@ __libcpp_atomic_monitor(__cxx_atomic_contention_t const volatile* __location) no _LIBCPP_DIAGNOSTIC_POP +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/src/barrier.cpp b/libcxx/src/barrier.cpp index 72c29b49ada3..b213ea26dc09 100644 --- a/libcxx/src/barrier.cpp +++ b/libcxx/src/barrier.cpp @@ -10,6 +10,7 @@ #include _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class __barrier_algorithm_base { public: @@ -69,4 +70,5 @@ __destroy_barrier_algorithm_base(_LIBCPP_NOESCAPE __barrier_algorithm_base* __ba delete __barrier; } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/call_once.cpp b/libcxx/src/call_once.cpp index 237969aacbab..015b874cffa4 100644 --- a/libcxx/src/call_once.cpp +++ b/libcxx/src/call_once.cpp @@ -17,6 +17,7 @@ #include "include/atomic_support.h" _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS // If dispatch_once_f ever handles C++ exceptions, and if one can get to it // without illegal macros (unexpected macros not beginning with _UpperCase or @@ -68,4 +69,5 @@ void __call_once(volatile once_flag::_State_type& flag, void* arg, void (*func)( #endif // !_LIBCPP_HAS_THREADS } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/charconv.cpp b/libcxx/src/charconv.cpp index 148068b07e8e..026258bdddc9 100644 --- a/libcxx/src/charconv.cpp +++ b/libcxx/src/charconv.cpp @@ -13,6 +13,7 @@ #include "include/to_chars_floating_point.h" _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #if _LIBCPP_AVAILABILITY_MINIMUM_HEADER_VERSION < 15 @@ -89,4 +90,6 @@ template __from_chars_result __from_chars_floating_point( template __from_chars_result __from_chars_floating_point( _LIBCPP_NOESCAPE const char* __first, _LIBCPP_NOESCAPE const char* __last, chars_format __fmt); + +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/chrono.cpp b/libcxx/src/chrono.cpp index 77010a2bead6..af5fe7c01fb8 100644 --- a/libcxx/src/chrono.cpp +++ b/libcxx/src/chrono.cpp @@ -63,6 +63,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace chrono { @@ -261,4 +262,5 @@ steady_clock::time_point steady_clock::now() noexcept { return __libcpp_steady_c } // namespace chrono +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/condition_variable.cpp b/libcxx/src/condition_variable.cpp index a87399d1b71b..8248719ee859 100644 --- a/libcxx/src/condition_variable.cpp +++ b/libcxx/src/condition_variable.cpp @@ -23,6 +23,7 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS // ~condition_variable is defined elsewhere. @@ -72,6 +73,7 @@ void notify_all_at_thread_exit(condition_variable& cond, unique_lock lk) __thread_local_data()->notify_all_at_thread_exit(&cond, lk.release()); } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/src/condition_variable_destructor.cpp b/libcxx/src/condition_variable_destructor.cpp index fc4b4a601d96..29724e65a4f5 100644 --- a/libcxx/src/condition_variable_destructor.cpp +++ b/libcxx/src/condition_variable_destructor.cpp @@ -19,6 +19,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #ifdef NEEDS_CONDVAR_DESTRUCTOR @@ -37,4 +38,5 @@ public: condition_variable::~condition_variable() { __libcpp_condvar_destroy(&__cv_); } #endif +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/error_category.cpp b/libcxx/src/error_category.cpp index 9c0ca6a04a52..941ca659b9d0 100644 --- a/libcxx/src/error_category.cpp +++ b/libcxx/src/error_category.cpp @@ -17,6 +17,7 @@ #include _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS // class error_category @@ -36,4 +37,5 @@ bool error_category::equivalent(const error_code& code, int condition) const noe return *this == code.category() && code.value() == condition; } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/expected.cpp b/libcxx/src/expected.cpp index f30efb516479..19542b199e85 100644 --- a/libcxx/src/expected.cpp +++ b/libcxx/src/expected.cpp @@ -9,5 +9,9 @@ #include _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS + const char* bad_expected_access::what() const noexcept { return "bad access to std::expected"; } + +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/experimental/chrono_exception.cpp b/libcxx/src/experimental/chrono_exception.cpp index bea2ad110310..0d77f2a7b667 100644 --- a/libcxx/src/experimental/chrono_exception.cpp +++ b/libcxx/src/experimental/chrono_exception.cpp @@ -9,6 +9,7 @@ #include _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace chrono { @@ -19,4 +20,5 @@ _LIBCPP_EXPORTED_FROM_ABI ambiguous_local_time::~ambiguous_local_time() = defaul } // namespace chrono +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/experimental/include/tzdb/tzdb_private.h b/libcxx/src/experimental/include/tzdb/tzdb_private.h index 8ec3f890ef65..c8d39acf3155 100644 --- a/libcxx/src/experimental/include/tzdb/tzdb_private.h +++ b/libcxx/src/experimental/include/tzdb/tzdb_private.h @@ -16,6 +16,7 @@ #include "types_private.h" _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace chrono { @@ -23,6 +24,7 @@ void __init_tzdb(tzdb& __tzdb, __tz::__rules_storage_type& __rules); } // namespace chrono +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_SRC_INCLUDE_TZDB_TZ_PRIVATE_H diff --git a/libcxx/src/experimental/log_hardening_failure.cpp b/libcxx/src/experimental/log_hardening_failure.cpp index f836c1545224..10ae969c39a7 100644 --- a/libcxx/src/experimental/log_hardening_failure.cpp +++ b/libcxx/src/experimental/log_hardening_failure.cpp @@ -15,6 +15,7 @@ #endif // __BIONIC__ _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS void __log_hardening_failure(const char* message) noexcept { // Always log the message to `stderr` in case the platform-specific system calls fail. @@ -28,4 +29,5 @@ void __log_hardening_failure(const char* message) noexcept { #endif } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/experimental/time_zone.cpp b/libcxx/src/experimental/time_zone.cpp index d954932ffa37..fc7a9c26c91b 100644 --- a/libcxx/src/experimental/time_zone.cpp +++ b/libcxx/src/experimental/time_zone.cpp @@ -55,6 +55,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #ifdef PRINT template <> @@ -1055,4 +1056,5 @@ time_zone::__get_info(local_seconds __local_time) const { } // namespace chrono +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/experimental/tzdb.cpp b/libcxx/src/experimental/tzdb.cpp index fd976ba4bd79..ca4aa1cabd76 100644 --- a/libcxx/src/experimental/tzdb.cpp +++ b/libcxx/src/experimental/tzdb.cpp @@ -46,6 +46,7 @@ // TODO TZDB Implement the Windows mapping in tzdb::current_zone _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace chrono { @@ -824,4 +825,5 @@ _LIBCPP_AVAILABILITY_TZDB _LIBCPP_EXPORTED_FROM_ABI string remote_version() { } // namespace chrono +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/experimental/tzdb_list.cpp b/libcxx/src/experimental/tzdb_list.cpp index b99c30a9b9e6..2026808e6538 100644 --- a/libcxx/src/experimental/tzdb_list.cpp +++ b/libcxx/src/experimental/tzdb_list.cpp @@ -13,6 +13,7 @@ #include "include/tzdb/tzdb_list_private.h" _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace chrono { @@ -40,4 +41,5 @@ _LIBCPP_EXPORTED_FROM_ABI tzdb_list::const_iterator tzdb_list::__erase_after(con } // namespace chrono +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/filesystem/directory_entry.cpp b/libcxx/src/filesystem/directory_entry.cpp index 152715243906..0c7f595569a0 100644 --- a/libcxx/src/filesystem/directory_entry.cpp +++ b/libcxx/src/filesystem/directory_entry.cpp @@ -16,6 +16,7 @@ #include "time_utils.h" _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS error_code directory_entry::__do_refresh() noexcept { __data_.__reset(); @@ -70,4 +71,5 @@ error_code directory_entry::__do_refresh() noexcept { return failure_ec; } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_FILESYSTEM diff --git a/libcxx/src/filesystem/directory_iterator.cpp b/libcxx/src/filesystem/directory_iterator.cpp index 7d00c4933fc3..5d682aee2b83 100644 --- a/libcxx/src/filesystem/directory_iterator.cpp +++ b/libcxx/src/filesystem/directory_iterator.cpp @@ -26,6 +26,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS using detail::ErrorHandler; @@ -320,4 +321,5 @@ bool recursive_directory_iterator::__try_recursion(error_code* ec) { return false; } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_FILESYSTEM diff --git a/libcxx/src/filesystem/filesystem_clock.cpp b/libcxx/src/filesystem/filesystem_clock.cpp index 865a1018871f..96a1336d4cbc 100644 --- a/libcxx/src/filesystem/filesystem_clock.cpp +++ b/libcxx/src/filesystem/filesystem_clock.cpp @@ -42,6 +42,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_DIAGNOSTIC_PUSH _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wdeprecated") @@ -76,4 +77,5 @@ _FilesystemClock::time_point _FilesystemClock::now() noexcept { #endif } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_FILESYSTEM diff --git a/libcxx/src/filesystem/filesystem_error.cpp b/libcxx/src/filesystem/filesystem_error.cpp index 0d8185fb5c3a..43752aa7ac3b 100644 --- a/libcxx/src/filesystem/filesystem_error.cpp +++ b/libcxx/src/filesystem/filesystem_error.cpp @@ -15,6 +15,7 @@ #include "format_string.h" _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS filesystem_error::~filesystem_error() {} @@ -37,4 +38,5 @@ void filesystem_error::__create_what(int __num_paths) { }(); } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_FILESYSTEM diff --git a/libcxx/src/filesystem/operations.cpp b/libcxx/src/filesystem/operations.cpp index 745db87ce373..3d358dd55e8b 100644 --- a/libcxx/src/filesystem/operations.cpp +++ b/libcxx/src/filesystem/operations.cpp @@ -69,6 +69,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS using detail::capture_errno; using detail::ErrorHandler; @@ -1077,4 +1078,5 @@ path __weakly_canonical(const path& p, error_code* ec) { return result.lexically_normal(); } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_FILESYSTEM diff --git a/libcxx/src/filesystem/path.cpp b/libcxx/src/filesystem/path.cpp index 400b6e898856..12a698da901a 100644 --- a/libcxx/src/filesystem/path.cpp +++ b/libcxx/src/filesystem/path.cpp @@ -14,6 +14,7 @@ #include "path_parser.h" _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS using detail::ErrorHandler; using parser::createView; @@ -444,4 +445,5 @@ size_t __char_to_wide(const string& str, wchar_t* out, size_t outlen) { } #endif +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_FILESYSTEM diff --git a/libcxx/src/fstream.cpp b/libcxx/src/fstream.cpp index 55a4442b9c78..2975088eb625 100644 --- a/libcxx/src/fstream.cpp +++ b/libcxx/src/fstream.cpp @@ -18,6 +18,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #if defined(_LIBCPP_WIN32API) @@ -34,4 +35,5 @@ _LIBCPP_EXPORTED_FROM_ABI void* __filebuf_windows_native_handle(FILE* __file) no #endif +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/functional.cpp b/libcxx/src/functional.cpp index 59dab16bb03f..737b6e0931ad 100644 --- a/libcxx/src/functional.cpp +++ b/libcxx/src/functional.cpp @@ -9,6 +9,7 @@ #include _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS bad_function_call::~bad_function_call() noexcept {} @@ -18,4 +19,5 @@ size_t __hash_memory(_LIBCPP_NOESCAPE const void* ptr, size_t size) noexcept { return __murmur2_or_cityhash()(ptr, size); } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/future.cpp b/libcxx/src/future.cpp index 7bba635e9006..284b68828c7f 100644 --- a/libcxx/src/future.cpp +++ b/libcxx/src/future.cpp @@ -10,6 +10,7 @@ #include _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class _LIBCPP_HIDDEN __future_error_category : public __do_message { public: @@ -194,4 +195,5 @@ shared_future& shared_future::operator=(const shared_future& __rhs) return *this; } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/hash.cpp b/libcxx/src/hash.cpp index b04cf0a8948c..dd6b603d2d6d 100644 --- a/libcxx/src/hash.cpp +++ b/libcxx/src/hash.cpp @@ -13,6 +13,7 @@ _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wtautological-constant-out-of-range-compare") _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace { @@ -127,4 +128,5 @@ size_t __next_prime(size_t n) { } } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/ios.cpp b/libcxx/src/ios.cpp index 5baff89a8641..3a8147a0f9d1 100644 --- a/libcxx/src/ios.cpp +++ b/libcxx/src/ios.cpp @@ -22,6 +22,7 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class _LIBCPP_HIDDEN __iostream_category : public __do_message { public: @@ -375,6 +376,7 @@ bool ios_base::sync_with_stdio(bool sync) { return r; } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/src/iostream.cpp b/libcxx/src/iostream.cpp index b216c6ad35da..039398236145 100644 --- a/libcxx/src/iostream.cpp +++ b/libcxx/src/iostream.cpp @@ -15,6 +15,7 @@ #define ABI_NAMESPACE_STR _LIBCPP_TOSTRING(_LIBCPP_ABI_NAMESPACE) _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS // This file implements the various stream objects provided inside . We're doing some ODR violations in here, // so this quite fragile. Specifically, the size of the stream objects (i.e. cout, cin etc.) needs to stay the same. @@ -154,4 +155,5 @@ ios_base::Init::Init() { ios_base::Init::~Init() {} +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/locale.cpp b/libcxx/src/locale.cpp index 4d5e681e2556..b12ca290e709 100644 --- a/libcxx/src/locale.cpp +++ b/libcxx/src/locale.cpp @@ -45,6 +45,7 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS struct __libcpp_unique_locale { __libcpp_unique_locale(const char* nm) : __loc_(__locale::__newlocale(_LIBCPP_ALL_MASK, nm, 0)) {} @@ -5655,6 +5656,7 @@ template class _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS codecvt_byname; #endif +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/src/memory.cpp b/libcxx/src/memory.cpp index 764dfc64bf0b..94a90cd3b9f0 100644 --- a/libcxx/src/memory.cpp +++ b/libcxx/src/memory.cpp @@ -26,6 +26,7 @@ #include "include/atomic_support.h" _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS bad_weak_ptr::~bad_weak_ptr() noexcept {} @@ -144,4 +145,5 @@ _LIBCPP_DIAGNOSTIC_POP #endif +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/memory_resource.cpp b/libcxx/src/memory_resource.cpp index 22b5493427f0..00307e107faa 100644 --- a/libcxx/src/memory_resource.cpp +++ b/libcxx/src/memory_resource.cpp @@ -20,6 +20,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace pmr { @@ -497,4 +498,5 @@ void* monotonic_buffer_resource::do_allocate(size_t bytes, size_t align) { } // namespace pmr +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/mutex.cpp b/libcxx/src/mutex.cpp index 5b1e7da121fc..303001a3b962 100644 --- a/libcxx/src/mutex.cpp +++ b/libcxx/src/mutex.cpp @@ -23,6 +23,7 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS // ~mutex is defined elsewhere @@ -141,6 +142,7 @@ void recursive_timed_mutex::unlock() noexcept { } } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/src/mutex_destructor.cpp b/libcxx/src/mutex_destructor.cpp index 4c63ea0da74d..308c6ea05c31 100644 --- a/libcxx/src/mutex_destructor.cpp +++ b/libcxx/src/mutex_destructor.cpp @@ -24,6 +24,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #ifdef NEEDS_MUTEX_DESTRUCTOR class _LIBCPP_EXPORTED_FROM_ABI mutex { @@ -39,4 +40,5 @@ public: mutex::~mutex() noexcept { __libcpp_mutex_destroy(&__m_); } #endif // !NEEDS_MUTEX_DESTRUCTOR +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/optional.cpp b/libcxx/src/optional.cpp index 3b92580565bf..905091cb43aa 100644 --- a/libcxx/src/optional.cpp +++ b/libcxx/src/optional.cpp @@ -24,6 +24,7 @@ const char* bad_optional_access::what() const noexcept { return "bad_optional_ac // Preserve std::experimental::bad_optional_access for ABI compatibility // Even though it no longer exists in a header file _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS class _LIBCPP_EXPORTED_FROM_ABI bad_optional_access : public std::logic_error { public: @@ -35,6 +36,7 @@ public: bad_optional_access::~bad_optional_access() noexcept = default; +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_EXPERIMENTAL #endif // _LIBCPP_AVAILABILITY_MINIMUM_HEADER_VERSION < 7 diff --git a/libcxx/src/ostream.cpp b/libcxx/src/ostream.cpp index e0f14a891792..ae3afff7a9f5 100644 --- a/libcxx/src/ostream.cpp +++ b/libcxx/src/ostream.cpp @@ -15,6 +15,7 @@ #include "std_stream.h" _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_EXPORTED_FROM_ABI FILE* __get_ostream_file(ostream& __os) { // dynamic_cast requires RTTI, this only affects users whose vendor builds @@ -38,4 +39,5 @@ _LIBCPP_EXPORTED_FROM_ABI FILE* __get_ostream_file(ostream& __os) { return nullptr; } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/print.cpp b/libcxx/src/print.cpp index a5edcc463219..21d868e8c6a7 100644 --- a/libcxx/src/print.cpp +++ b/libcxx/src/print.cpp @@ -33,6 +33,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #if defined(_LIBCPP_WIN32API) @@ -72,4 +73,5 @@ _LIBCPP_EXPORTED_FROM_ABI bool __is_posix_terminal(FILE* __stream) { return isat _LIBCPP_DIAGNOSTIC_POP #endif +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/pstl/libdispatch.cpp b/libcxx/src/pstl/libdispatch.cpp index 3dca702341c8..528018358eeb 100644 --- a/libcxx/src/pstl/libdispatch.cpp +++ b/libcxx/src/pstl/libdispatch.cpp @@ -12,6 +12,7 @@ #include _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace __pstl::__libdispatch { void __dispatch_apply(size_t chunk_count, void* context, void (*func)(void* context, size_t chunk)) noexcept { @@ -29,4 +30,5 @@ __chunk_partitions __partition_chunks(ptrdiff_t element_count) noexcept { } } // namespace __pstl::__libdispatch +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/random.cpp b/libcxx/src/random.cpp index 79815aadc732..1e6308cc8c49 100644 --- a/libcxx/src/random.cpp +++ b/libcxx/src/random.cpp @@ -36,6 +36,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #if defined(_LIBCPP_USING_GETENTROPY) @@ -153,4 +154,5 @@ double random_device::entropy() const noexcept { #endif } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/random_shuffle.cpp b/libcxx/src/random_shuffle.cpp index 4f2669a6c7fa..aa0f78fafe06 100644 --- a/libcxx/src/random_shuffle.cpp +++ b/libcxx/src/random_shuffle.cpp @@ -17,6 +17,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #if _LIBCPP_HAS_THREADS static constinit __libcpp_mutex_t __rs_mut = _LIBCPP_MUTEX_INITIALIZER; @@ -48,4 +49,5 @@ __rs_default::result_type __rs_default::operator()() { __rs_default __rs_get() { return __rs_default(); } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/regex.cpp b/libcxx/src/regex.cpp index 6d9f06e21346..9d7d1699ae26 100644 --- a/libcxx/src/regex.cpp +++ b/libcxx/src/regex.cpp @@ -11,6 +11,7 @@ #include _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS static const char* make_error_type_string(regex_constants::error_type ecode) { switch (ecode) { @@ -396,4 +397,5 @@ void __match_any_but_newline::__exec(__state& __s) const { } } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/shared_mutex.cpp b/libcxx/src/shared_mutex.cpp index 618083373695..4c5e45f668d6 100644 --- a/libcxx/src/shared_mutex.cpp +++ b/libcxx/src/shared_mutex.cpp @@ -13,6 +13,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS // Shared Mutex Base __shared_mutex_base::__shared_mutex_base() : __state_(0) {} @@ -96,4 +97,5 @@ void shared_timed_mutex::lock_shared() { return __base_.lock_shared(); } bool shared_timed_mutex::try_lock_shared() { return __base_.try_lock_shared(); } void shared_timed_mutex::unlock_shared() { return __base_.unlock_shared(); } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/std_stream.h b/libcxx/src/std_stream.h index 772e8b91ae34..4b9d3a34b244 100644 --- a/libcxx/src/std_stream.h +++ b/libcxx/src/std_stream.h @@ -24,6 +24,7 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS static const int __limit = 8; @@ -380,6 +381,7 @@ void __stdoutbuf<_CharT>::imbue(const locale& __loc) { __always_noconv_ = __cv_->always_noconv(); } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/src/stdexcept.cpp b/libcxx/src/stdexcept.cpp index 0ee438bef02e..31f60d5a5ac5 100644 --- a/libcxx/src/stdexcept.cpp +++ b/libcxx/src/stdexcept.cpp @@ -18,6 +18,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS void __throw_runtime_error(const char* msg) { #if _LIBCPP_HAS_EXCEPTIONS @@ -27,4 +28,5 @@ void __throw_runtime_error(const char* msg) { #endif } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/string.cpp b/libcxx/src/string.cpp index 178ef710f0bc..b55f9ff5c9a4 100644 --- a/libcxx/src/string.cpp +++ b/libcxx/src/string.cpp @@ -19,6 +19,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #if _LIBCPP_AVAILABILITY_MINIMUM_HEADER_VERSION < 14 @@ -367,4 +368,5 @@ wstring to_wstring(double val) { return as_string(get_swprintf(), initial_string wstring to_wstring(long double val) { return as_string(get_swprintf(), initial_string()(), L"%Lf", val); } #endif +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/strstream.cpp b/libcxx/src/strstream.cpp index 70374191c6ab..667740f5c5dd 100644 --- a/libcxx/src/strstream.cpp +++ b/libcxx/src/strstream.cpp @@ -18,6 +18,7 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS strstreambuf::strstreambuf(streamsize __alsize) : __strmode_(__dynamic), __alsize_(__alsize), __palloc_(nullptr), __pfree_(nullptr) {} @@ -253,6 +254,7 @@ ostrstream::~ostrstream() {} strstream::~strstream() {} +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS diff --git a/libcxx/src/support/win32/locale_win32.cpp b/libcxx/src/support/win32/locale_win32.cpp index 26722e6e47a7..e7c7a114e9ce 100644 --- a/libcxx/src/support/win32/locale_win32.cpp +++ b/libcxx/src/support/win32/locale_win32.cpp @@ -16,6 +16,7 @@ #include // wide char manipulation _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace __locale { // @@ -182,4 +183,5 @@ int __asprintf(char** ret, __locale_t loc, const char* format, ...) { } } // namespace __locale +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/support/win32/thread_win32.cpp b/libcxx/src/support/win32/thread_win32.cpp index 3a67d759f0f5..606104e32b45 100644 --- a/libcxx/src/support/win32/thread_win32.cpp +++ b/libcxx/src/support/win32/thread_win32.cpp @@ -16,6 +16,7 @@ #include _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS static_assert(sizeof(__libcpp_mutex_t) == sizeof(SRWLOCK), ""); static_assert(alignof(__libcpp_mutex_t) == alignof(SRWLOCK), ""); @@ -211,4 +212,5 @@ int __libcpp_tls_set(__libcpp_tls_key __key, void* __p) { return 0; } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/system_error.cpp b/libcxx/src/system_error.cpp index 6397a94932b6..cf3d2c292686 100644 --- a/libcxx/src/system_error.cpp +++ b/libcxx/src/system_error.cpp @@ -27,6 +27,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #if defined(_LIBCPP_WIN32API) @@ -368,4 +369,5 @@ void __throw_system_error(int ev, const char* what_arg) { #endif } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/thread.cpp b/libcxx/src/thread.cpp index e494574ec21d..d2aff1ee0c3f 100644 --- a/libcxx/src/thread.cpp +++ b/libcxx/src/thread.cpp @@ -33,6 +33,7 @@ #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS thread::~thread() { if (!__libcpp_thread_isnull(&__t_)) @@ -170,4 +171,5 @@ void __thread_struct::notify_all_at_thread_exit(condition_variable* cv, mutex* m void __thread_struct::__make_ready_at_thread_exit(__assoc_sub_state* __s) { __p_->__make_ready_at_thread_exit(__s); } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/valarray.cpp b/libcxx/src/valarray.cpp index 3d3a9ac30ebd..431598eec5ca 100644 --- a/libcxx/src/valarray.cpp +++ b/libcxx/src/valarray.cpp @@ -9,6 +9,7 @@ #include _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #if _LIBCPP_AVAILABILITY_MINIMUM_HEADER_VERSION < 9 template _LIBCPP_EXPORTED_FROM_ABI valarray::valarray(size_t); @@ -45,4 +46,5 @@ void gslice::__init(size_t __start) { } } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/vector.cpp b/libcxx/src/vector.cpp index 77a028a48077..ec1da7961f54 100644 --- a/libcxx/src/vector.cpp +++ b/libcxx/src/vector.cpp @@ -9,6 +9,7 @@ #include _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS #if _LIBCPP_AVAILABILITY_MINIMUM_HEADER_VERSION < 15 @@ -27,4 +28,5 @@ void __vector_base_common::__throw_out_of_range() const { std::__throw_out #endif // _LIBCPP_AVAILABILITY_MINIMUM_HEADER_VERSION < 15 +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/src/verbose_abort.cpp b/libcxx/src/verbose_abort.cpp index afe20c3cd0b1..306ebbe10c60 100644 --- a/libcxx/src/verbose_abort.cpp +++ b/libcxx/src/verbose_abort.cpp @@ -22,6 +22,7 @@ extern "C" void android_set_abort_message(const char* msg); #endif _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS [[gnu::weak]] void __libcpp_verbose_abort(char const* format, ...) noexcept { // Write message to stderr. We do this before formatting into a @@ -62,4 +63,5 @@ _LIBCPP_BEGIN_NAMESPACE_STD std::abort(); } +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD diff --git a/libcxx/test/support/test_tzdb.h b/libcxx/test/support/test_tzdb.h index 4a05993dbce5..bb81a46ae420 100644 --- a/libcxx/test/support/test_tzdb.h +++ b/libcxx/test/support/test_tzdb.h @@ -15,6 +15,7 @@ #if defined(_LIBCPP_VERSION) _LIBCPP_BEGIN_NAMESPACE_STD +_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace chrono { @@ -24,6 +25,7 @@ _LIBCPP_AVAILABILITY_TZDB _LIBCPP_OVERRIDABLE_FUNC_VIS string_view __libcpp_tzdb } // namespace chrono +_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD #endif