summaryrefslogtreecommitdiffstats
path: root/contrib/libs/cxxsupp/libcxx/src
diff options
context:
space:
mode:
authormikhnenko <[email protected]>2025-02-01 14:09:02 +0300
committermikhnenko <[email protected]>2025-02-01 14:33:00 +0300
commit5ef4578b282eef07d27f8d0cb56d2c1aac00042c (patch)
tree1fbf9195e0b8c4e47bd7f84aba089ba3c13474f3 /contrib/libs/cxxsupp/libcxx/src
parent6be27609101cab343f3fedd9204990737b6ecddd (diff)
Update libcxx to 2 Apr 2024 239236b8c2154aa49e98bc7ed774a7d2712edf50
``` [libc++] Remove pair dependency (#85621) [libc++] Simplify the implementation of <stddef.h> (#86843) Update the "Current Status" section of the website to be current. (#84507) [libc++] Optimize the two range overload of mismatch (#86853) [libc++] Refactor __tuple_like and __pair_like (#85206) [libc++][test] Improves src include paths. (#86864) [libc++] Document guidelines for applying [[nodiscard]] (#84000) [libc++] Optimize the std::mismatch tail (#83440) [libc++] Remove <queue> and <stack> includes from <format> (#85520) [libc++] Switch FreeBSD to C++26 (#86658) [libc++] Fix one case in saturate_cast.pass.cpp for 64-bit on z/OS (#86724) [libc++][test] Remove tests that testing std::variant<T&> (#84222) [libc++] <experimental/simd> Reduce types for template parameter U in tests (#83781) [libc++] Switch FreeBSD CI job to Clang 17 (#86320) [libc++][CI] Updates the documentation. (#85264) [libc++][format] Adds ABI tags to inline constexpr variables. (#86293) [libc++][test] Fix race condition in condition_variable_any tests (#84788) [libc++] Vectorize mismatch (#73255) [libc++] Don't push and pop extensions diagnostics when using clang modules (#85917) [libc++][ranges] use `static operator()` for C++23 ranges (#86052) [libc++] Implement LWG3528 (`make_from_tuple` can perform (the equivalent of) a C-style cast) (#85263) [libc++] Remove macros for keeping std::allocator members and void specialization after C++20 (#85806) [libc++] Deprecates std::errc constants. (#80542) [libcxx] [cmake] Fix cmake_path(ABSOLUTE_PATH) for empty CMAKE_INSTALL_PREFIX [libc++][CI] Reenables the module tests. (#85799) [libc++][ranges] remove `__workaround_52970` (#85683) [libc++][ranges] LWG3715: `view_interface::empty` is overconstrained (#85004) [libcxx] [modules] Fix relative paths with absolute LIBCXX_INSTALL_MODULES_DIR (#85756) [libc++][format] Fixes nested concept evaluation. (#85548) [libc++][CMake] Removes LIBCXX_ENABLE_CLANG_TIDY. (#85262) [libc++] Remove __unconstrained_reverse_iterator (#85582) [libc++] Simplify the implementation of remove_reference (#85207) [libcxx][test] Create feature host-can-create-symlinks (#82204) [libc++] Use __is_scoped_enum for the implementation of is_scoped_enum if it's available (#85580) [libc++] Add missing hide-from-ABI annotations on virtual functions (#85439) [libc++] Optimize ranges::fill{,_n} for vector<bool>::iterator (#84642) [libc++] Add <locale> include in <chrono> (#85521) [libc++] Remove <locale> includes from <format> (#85478) [libc++] P2602R2 Poison Pills are Too Toxic (#74534) [libc++] Fixes run-buildbot-container. (#84644) [libc++] Add [[nodiscard]] to static numeric limit functions (#83748) Rework Modules CMake to be (more) idiomatic. (#84936) [libc++] Enables TZDB tests. (#82108) [libc++] Remove a few includes from <__functional/hash.h> (#83254) [libc++] Implements filebuf unbuffered. (#76629) [libc++][CI] Updates the version number of the latest release. [libc++] Remove <tuple> include from <__format/concepts.h> (#80214) [runtimes] Prefer -fvisibility-global-new-delete=force-hidden (#84917) [libc++] Fix tests on musl (#85085) [libc++] Remove _LIBCPP_ENABLE_NARROWING_CONVERSIONS_IN_VARIANT (#83928) [libcxx] Fix incorrect type in the has-1024-bit-atomics feature test (#84904) [libc++] Improves UB handling in ios_base destructor. (#76525) [libc++][CI] Installs tzdata package in Docker. (#84643) [libc++][TZDB] Fixes parsing interleaved rules. (#84808) [libc++][hardening] Check bounds on arithmetic in __bounded_iter (#78876) [libc++][hardening] Add iterator validity checks on unordered containers (#80230) [libc++][hardening] Reclassify string_view(ptr, len)'s size assertion (#79297) [libc++] Re-enable the clang_modules_include test for Objective-C++ (#66801) [libc++] Remove XFAIL for SIMD in optimized build (#84767) [libcxx] Update 128-bit-atomics feature test (#83841) [libc++] Only forward-declare ABI-functions in exception_ptr.h if they are meant to be used (#84707) [libc++][test] Don't include `test_format_context.h` in `parse.pass.cpp` (#83734) [libc++] Add missing include in test (#84579) [libc++] Remove <tuple> from <variant> (#83183) [RFC][libc++] Reworks clang-tidy selection. (#81362) [libc++] Remove <array> include from <span> (#83742) [libc++][format] Updates LWG3462 status. (#80550) [libc++][format] Update LWG3701 status. (#80545) [libc++][test] Fix MSVC warning C4127 in `array.cons/initialization.pass.cpp` (#79793) [libc++] Simplify the std::pair constructor overload set (#81448) [libc++] Allow the use of extensions in the implementation (#79532) [libc++] Don't build against libcxxrt by default on FreeBSD (#84484) Actually disable the module generation tests. [libc++] Disable module_std and module_std_compat tests [libc++] Enable availability based on the compiler instead of __has_extension (#84065) [libc++] Fixes time formatter test output for Linux on PowerPC (#75526) [libc++] Remove unused includes from __type_traits/is_convertible.h (#83747) ``` commit_hash:171258d93ab92f516dfb1789300677a164e63219
Diffstat (limited to 'contrib/libs/cxxsupp/libcxx/src')
-rw-r--r--contrib/libs/cxxsupp/libcxx/src/include/tzdb/tzdb_list_private.h11
-rw-r--r--contrib/libs/cxxsupp/libcxx/src/ios.cpp4
-rw-r--r--contrib/libs/cxxsupp/libcxx/src/random.cpp4
-rw-r--r--contrib/libs/cxxsupp/libcxx/src/tzdb.cpp27
-rw-r--r--contrib/libs/cxxsupp/libcxx/src/tzdb_list.cpp24
5 files changed, 45 insertions, 25 deletions
diff --git a/contrib/libs/cxxsupp/libcxx/src/include/tzdb/tzdb_list_private.h b/contrib/libs/cxxsupp/libcxx/src/include/tzdb/tzdb_list_private.h
index f43d7d8ea77..969b2b9f8a9 100644
--- a/contrib/libs/cxxsupp/libcxx/src/include/tzdb/tzdb_list_private.h
+++ b/contrib/libs/cxxsupp/libcxx/src/include/tzdb/tzdb_list_private.h
@@ -54,14 +54,14 @@ public:
using const_iterator = tzdb_list::const_iterator;
- const tzdb& front() const noexcept {
+ const tzdb& __front() const noexcept {
#ifndef _LIBCPP_HAS_NO_THREADS
shared_lock __lock{__mutex_};
#endif
return __tzdb_.front();
}
- const_iterator erase_after(const_iterator __p) {
+ const_iterator __erase_after(const_iterator __p) {
#ifndef _LIBCPP_HAS_NO_THREADS
unique_lock __lock{__mutex_};
#endif
@@ -70,20 +70,17 @@ public:
return __tzdb_.erase_after(__p);
}
- const_iterator begin() const noexcept {
+ const_iterator __begin() const noexcept {
#ifndef _LIBCPP_HAS_NO_THREADS
shared_lock __lock{__mutex_};
#endif
return __tzdb_.begin();
}
- const_iterator end() const noexcept {
+ const_iterator __end() const noexcept {
// forward_list<T>::end does not access the list, so no need to take a lock.
return __tzdb_.end();
}
- const_iterator cbegin() const noexcept { return begin(); }
- const_iterator cend() const noexcept { return end(); }
-
private:
// Loads the tzdbs
// pre: The caller ensures the locking, if needed, is done.
diff --git a/contrib/libs/cxxsupp/libcxx/src/ios.cpp b/contrib/libs/cxxsupp/libcxx/src/ios.cpp
index d58827fa125..a727855c465 100644
--- a/contrib/libs/cxxsupp/libcxx/src/ios.cpp
+++ b/contrib/libs/cxxsupp/libcxx/src/ios.cpp
@@ -195,6 +195,10 @@ void ios_base::register_callback(event_callback fn, int index) {
}
ios_base::~ios_base() {
+ // Avoid UB when not properly initialized. See ios_base::ios_base for
+ // more information.
+ if (!__loc_)
+ return;
__call_callbacks(erase_event);
locale& loc_storage = *reinterpret_cast<locale*>(&__loc_);
loc_storage.~locale();
diff --git a/contrib/libs/cxxsupp/libcxx/src/random.cpp b/contrib/libs/cxxsupp/libcxx/src/random.cpp
index c7073c54da6..93590af310e 100644
--- a/contrib/libs/cxxsupp/libcxx/src/random.cpp
+++ b/contrib/libs/cxxsupp/libcxx/src/random.cpp
@@ -79,8 +79,10 @@ unsigned random_device::operator()() {
char* p = reinterpret_cast<char*>(&r);
while (n > 0) {
ssize_t s = read(__f_, p, n);
+ _LIBCPP_SUPPRESS_DEPRECATED_PUSH
if (s == 0)
- __throw_system_error(ENODATA, "random_device got EOF");
+ __throw_system_error(ENODATA, "random_device got EOF"); // TODO ENODATA -> ENOMSG
+ _LIBCPP_SUPPRESS_DEPRECATED_POP
if (s == -1) {
if (errno != EINTR)
__throw_system_error(errno, "random_device got an unexpected error");
diff --git a/contrib/libs/cxxsupp/libcxx/src/tzdb.cpp b/contrib/libs/cxxsupp/libcxx/src/tzdb.cpp
index 2bb801e4869..0307f754caa 100644
--- a/contrib/libs/cxxsupp/libcxx/src/tzdb.cpp
+++ b/contrib/libs/cxxsupp/libcxx/src/tzdb.cpp
@@ -511,14 +511,33 @@ static string __parse_version(istream& __input) {
return chrono::__parse_string(__input);
}
+[[nodiscard]]
+static __tz::__rule& __create_entry(__tz::__rules_storage_type& __rules, const string& __name) {
+ auto __result = [&]() -> __tz::__rule& {
+ auto& __rule = __rules.emplace_back(__name, vector<__tz::__rule>{});
+ return __rule.second.emplace_back();
+ };
+
+ if (__rules.empty())
+ return __result();
+
+ // Typically rules are in contiguous order in the database.
+ // But there are exceptions, some rules are interleaved.
+ if (__rules.back().first == __name)
+ return __rules.back().second.emplace_back();
+
+ if (auto __it = ranges::find(__rules, __name, [](const auto& __r) { return __r.first; });
+ __it != ranges::end(__rules))
+ return __it->second.emplace_back();
+
+ return __result();
+}
+
static void __parse_rule(tzdb& __tzdb, __tz::__rules_storage_type& __rules, istream& __input) {
chrono::__skip_mandatory_whitespace(__input);
string __name = chrono::__parse_string(__input);
- if (__rules.empty() || __rules.back().first != __name)
- __rules.emplace_back(__name, vector<__tz::__rule>{});
-
- __tz::__rule& __rule = __rules.back().second.emplace_back();
+ __tz::__rule& __rule = __create_entry(__rules, __name);
chrono::__skip_mandatory_whitespace(__input);
__rule.__from = chrono::__parse_year(__input);
diff --git a/contrib/libs/cxxsupp/libcxx/src/tzdb_list.cpp b/contrib/libs/cxxsupp/libcxx/src/tzdb_list.cpp
index d3ee8b58f98..b99c30a9b9e 100644
--- a/contrib/libs/cxxsupp/libcxx/src/tzdb_list.cpp
+++ b/contrib/libs/cxxsupp/libcxx/src/tzdb_list.cpp
@@ -18,26 +18,24 @@ namespace chrono {
_LIBCPP_EXPORTED_FROM_ABI tzdb_list::~tzdb_list() { delete __impl_; }
-_LIBCPP_NODISCARD_EXT _LIBCPP_EXPORTED_FROM_ABI const tzdb& tzdb_list::front() const noexcept {
- return __impl_->front();
-}
+[[nodiscard]] _LIBCPP_EXPORTED_FROM_ABI const tzdb& tzdb_list::__front() const noexcept { return __impl_->__front(); }
-_LIBCPP_EXPORTED_FROM_ABI tzdb_list::const_iterator tzdb_list::erase_after(const_iterator __p) {
- return __impl_->erase_after(__p);
+_LIBCPP_EXPORTED_FROM_ABI tzdb_list::const_iterator tzdb_list::__erase_after(const_iterator __p) {
+ return __impl_->__erase_after(__p);
}
-_LIBCPP_NODISCARD_EXT _LIBCPP_EXPORTED_FROM_ABI tzdb_list::const_iterator tzdb_list::begin() const noexcept {
- return __impl_->begin();
+[[nodiscard]] _LIBCPP_EXPORTED_FROM_ABI tzdb_list::const_iterator tzdb_list::__begin() const noexcept {
+ return __impl_->__begin();
}
-_LIBCPP_NODISCARD_EXT _LIBCPP_EXPORTED_FROM_ABI tzdb_list::const_iterator tzdb_list::end() const noexcept {
- return __impl_->end();
+[[nodiscard]] _LIBCPP_EXPORTED_FROM_ABI tzdb_list::const_iterator tzdb_list::__end() const noexcept {
+ return __impl_->__end();
}
-_LIBCPP_NODISCARD_EXT _LIBCPP_EXPORTED_FROM_ABI tzdb_list::const_iterator tzdb_list::cbegin() const noexcept {
- return __impl_->cbegin();
+[[nodiscard]] _LIBCPP_EXPORTED_FROM_ABI tzdb_list::const_iterator tzdb_list::__cbegin() const noexcept {
+ return __impl_->__begin();
}
-_LIBCPP_NODISCARD_EXT _LIBCPP_EXPORTED_FROM_ABI tzdb_list::const_iterator tzdb_list::cend() const noexcept {
- return __impl_->cend();
+[[nodiscard]] _LIBCPP_EXPORTED_FROM_ABI tzdb_list::const_iterator tzdb_list::__cend() const noexcept {
+ return __impl_->__end();
}
} // namespace chrono