From 092ed9793a1ad0e7e418f32c057bf3159a71cd04 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Fri, 20 Mar 2020 09:47:42 -0700 Subject: Export of internal Abseil changes -- 93dd18f415e54697965c56760612b4ff6c9d15d2 by Derek Mauro : Implement Bazel's --distdir flag avoid a dependency on GitHub being up. Move the Docker container identifiers to a common file. PiperOrigin-RevId: 302045549 -- 7b462d31139e3153462cd20ae63b161ac749e839 by Derek Mauro : Fix an unused variable warning in optional.h PiperOrigin-RevId: 301810782 -- 6b533ba9170eed065aec69e48ebab3279fcb3e09 by Abseil Team : Disable ASan and MSan instrumentation for AArch64 stack unwind functions. They read random locations on the stack and might step on sanitizer's redzones. PiperOrigin-RevId: 301674204 GitOrigin-RevId: 93dd18f415e54697965c56760612b4ff6c9d15d2 Change-Id: I2d84d66b054f90b851fb3a968679f112dfe84636 --- ci/linux_docker_containers.sh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 ci/linux_docker_containers.sh (limited to 'ci/linux_docker_containers.sh') diff --git a/ci/linux_docker_containers.sh b/ci/linux_docker_containers.sh new file mode 100644 index 00000000..2e81a6a7 --- /dev/null +++ b/ci/linux_docker_containers.sh @@ -0,0 +1,21 @@ +# Copyright 2019 The Abseil Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# The file contains Docker container identifiers currently used by test scripts. +# Test scripts should source this file to get the identifiers. + +readonly LINUX_ALPINE_CONTAINER="gcr.io/google.com/absl-177019/alpine:20191016" +readonly LINUX_CLANG_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_clang-latest:20200102" +readonly LINUX_GCC_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-latest:20200102" +readonly LINUX_GCC_49_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-4.9:20191018" -- cgit v1.2.3 From 518f17501e6156f7921fbb9b68a1e420bcb10bc5 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Mon, 23 Mar 2020 13:16:18 -0700 Subject: Export of internal Abseil changes -- 79913a12f0cad4baf948430315aabf53f03b6475 by Abseil Team : Don't inline (Un)LockSlow. PiperOrigin-RevId: 302502344 -- 6b340e80f0690655f24799c8de6707b3a95b8579 by Derek Mauro : Add hardening assertions to absl::optional's dereference operators PiperOrigin-RevId: 302492862 -- a9951bf4852d8c1aec472cb4b539830411270e4c by Derek Mauro : Correctly add hardware AES compiler flags under Linux X86-64 Fixes #643 PiperOrigin-RevId: 302490673 -- 314c3621ee4d57b6bc8d64338a1f1d48a69741d1 by Derek Mauro : Upgrade to hardening assertions in absl::Span::remove_prefix and absl::Span::remove_suffix PiperOrigin-RevId: 302481191 -- a142b8c6c62705c5f0d4fe3113150f0c0b7822b9 by Derek Mauro : Update docker containers to Bazel 2.2.0, GCC 9.3, and new Clang snapshot PiperOrigin-RevId: 302454042 -- afedeb70a2adc87010030c9ba6f06fe35ec26407 by Derek Mauro : Add hardening assertions for the preconditions of absl::FixedArray PiperOrigin-RevId: 302441767 -- 44442bfbc0a9a742df32f07cee86a47712efb8b4 by Derek Mauro : Fix new Clang warning about SpinLock doing operations on enums of different types PiperOrigin-RevId: 302430387 -- 69eaff7f97231779f696321c2ba8b88debf6dd9e by Derek Mauro : Convert precondition assertions to ABSL_HARDENING_ASSERT for absl::InlinedVector PiperOrigin-RevId: 302427894 -- 26b6db906a0942fd18583dc2cdd1bab32919d964 by Gennadiy Rozental : Internal change PiperOrigin-RevId: 302425283 -- e62e81422979e922505d2cd9000e1de58123c088 by Derek Mauro : Add an option to build Abseil in hardened mode In hardened mode, the ABSL_HARDENING_ASSERT() macro is active even when NDEBUG is defined. This allows Abseil to perform runtime checks even in release mode. This should be used to implement things like bounds checks that could otherwise lead to security vulnerabilities. Use the new assertion in absl::string_view and absl::Span to test it. PiperOrigin-RevId: 302119187 GitOrigin-RevId: 79913a12f0cad4baf948430315aabf53f03b6475 Change-Id: I0cc3341fd333a1df313167bab72dc5a759c4a048 --- absl/base/internal/spinlock.cc | 19 ++-- absl/base/internal/spinlock.h | 13 +-- absl/base/macros.h | 35 +++++++ absl/base/options.h | 33 ++++++- absl/container/BUILD.bazel | 2 + absl/container/CMakeLists.txt | 2 + absl/container/fixed_array.h | 24 +++-- absl/container/fixed_array_test.cc | 16 ++++ absl/container/inlined_vector.h | 49 +++++----- absl/container/inlined_vector_test.cc | 11 +++ absl/copts/configure_copts.bzl | 4 +- absl/flags/internal/flag.cc | 131 ++++++++++++++++++++++----- absl/flags/internal/flag.h | 166 +++++++++++----------------------- absl/strings/string_view.h | 12 +-- absl/strings/string_view_test.cc | 5 +- absl/synchronization/mutex.cc | 5 +- absl/types/optional.h | 12 +-- absl/types/optional_test.cc | 6 +- absl/types/span.h | 14 +-- absl/types/span_test.cc | 10 +- ci/absl_alternate_options.h | 7 +- ci/linux_docker_containers.sh | 4 +- 22 files changed, 358 insertions(+), 222 deletions(-) (limited to 'ci/linux_docker_containers.sh') diff --git a/absl/base/internal/spinlock.cc b/absl/base/internal/spinlock.cc index 830d4729..fd0c733e 100644 --- a/absl/base/internal/spinlock.cc +++ b/absl/base/internal/spinlock.cc @@ -190,30 +190,32 @@ void SpinLock::SlowUnlock(uint32_t lock_value) { // We use the upper 29 bits of the lock word to store the time spent waiting to // acquire this lock. This is reported by contentionz profiling. Since the // lower bits of the cycle counter wrap very quickly on high-frequency -// processors we divide to reduce the granularity to 2^PROFILE_TIMESTAMP_SHIFT +// processors we divide to reduce the granularity to 2^kProfileTimestampShift // sized units. On a 4Ghz machine this will lose track of wait times greater // than (2^29/4 Ghz)*128 =~ 17.2 seconds. Such waits should be extremely rare. -enum { PROFILE_TIMESTAMP_SHIFT = 7 }; -enum { LOCKWORD_RESERVED_SHIFT = 3 }; // We currently reserve the lower 3 bits. +static constexpr int kProfileTimestampShift = 7; + +// We currently reserve the lower 3 bits. +static constexpr int kLockwordReservedShift = 3; uint32_t SpinLock::EncodeWaitCycles(int64_t wait_start_time, int64_t wait_end_time) { static const int64_t kMaxWaitTime = - std::numeric_limits::max() >> LOCKWORD_RESERVED_SHIFT; + std::numeric_limits::max() >> kLockwordReservedShift; int64_t scaled_wait_time = - (wait_end_time - wait_start_time) >> PROFILE_TIMESTAMP_SHIFT; + (wait_end_time - wait_start_time) >> kProfileTimestampShift; // Return a representation of the time spent waiting that can be stored in // the lock word's upper bits. uint32_t clamped = static_cast( - std::min(scaled_wait_time, kMaxWaitTime) << LOCKWORD_RESERVED_SHIFT); + std::min(scaled_wait_time, kMaxWaitTime) << kLockwordReservedShift); if (clamped == 0) { return kSpinLockSleeper; // Just wake waiters, but don't record contention. } // Bump up value if necessary to avoid returning kSpinLockSleeper. const uint32_t kMinWaitTime = - kSpinLockSleeper + (1 << LOCKWORD_RESERVED_SHIFT); + kSpinLockSleeper + (1 << kLockwordReservedShift); if (clamped == kSpinLockSleeper) { return kMinWaitTime; } @@ -224,8 +226,7 @@ uint64_t SpinLock::DecodeWaitCycles(uint32_t lock_value) { // Cast to uint32_t first to ensure bits [63:32] are cleared. const uint64_t scaled_wait_time = static_cast(lock_value & kWaitTimeMask); - return scaled_wait_time - << (PROFILE_TIMESTAMP_SHIFT - LOCKWORD_RESERVED_SHIFT); + return scaled_wait_time << (kProfileTimestampShift - kLockwordReservedShift); } } // namespace base_internal diff --git a/absl/base/internal/spinlock.h b/absl/base/internal/spinlock.h index 24e2e9a6..89e93aad 100644 --- a/absl/base/internal/spinlock.h +++ b/absl/base/internal/spinlock.h @@ -148,12 +148,13 @@ class ABSL_LOCKABLE SpinLock { // bit[1] encodes whether a lock uses cooperative scheduling. // bit[2] encodes whether a lock disables scheduling. // bit[3:31] encodes time a lock spent on waiting as a 29-bit unsigned int. - enum { kSpinLockHeld = 1 }; - enum { kSpinLockCooperative = 2 }; - enum { kSpinLockDisabledScheduling = 4 }; - enum { kSpinLockSleeper = 8 }; - enum { kWaitTimeMask = // Includes kSpinLockSleeper. - ~(kSpinLockHeld | kSpinLockCooperative | kSpinLockDisabledScheduling) }; + static constexpr uint32_t kSpinLockHeld = 1; + static constexpr uint32_t kSpinLockCooperative = 2; + static constexpr uint32_t kSpinLockDisabledScheduling = 4; + static constexpr uint32_t kSpinLockSleeper = 8; + // Includes kSpinLockSleeper. + static constexpr uint32_t kWaitTimeMask = + ~(kSpinLockHeld | kSpinLockCooperative | kSpinLockDisabledScheduling); // Returns true if the provided scheduling mode is cooperative. static constexpr bool IsCooperative( diff --git a/absl/base/macros.h b/absl/base/macros.h index 547f93ba..2f6089f4 100644 --- a/absl/base/macros.h +++ b/absl/base/macros.h @@ -32,6 +32,7 @@ #include #include "absl/base/attributes.h" +#include "absl/base/config.h" #include "absl/base/optimization.h" #include "absl/base/port.h" @@ -207,6 +208,40 @@ ABSL_NAMESPACE_END : [] { assert(false && #expr); }()) // NOLINT #endif +// `ABSL_INTERNAL_HARDENING_ABORT()` controls how `ABSL_HARDENING_ASSERT()` +// aborts the program in release mode (when NDEBUG is defined). The +// implementation should abort the program as quickly as possible and ideally it +// should not be possible to ignore the abort request. +#if ABSL_HAVE_BUILTIN(__builtin_trap) || \ + (defined(__GNUC__) && !defined(__clang__)) +#define ABSL_INTERNAL_HARDENING_ABORT() \ + do { \ + __builtin_trap(); \ + __builtin_unreachable(); \ + } while (false) +#else +#define ABSL_INTERNAL_HARDENING_ABORT() abort() +#endif + +// ABSL_HARDENING_ASSERT() +// +// `ABSL_HARDENED_ASSERT()` is like `ABSL_ASSERT()`, but used to implement +// runtime assertions that should be enabled in hardened builds even when +// `NDEBUG` is defined. +// +// When `NDEBUG` is not defined, `ABSL_HARDENED_ASSERT()` is identical to +// `ABSL_ASSERT()`. +// +// See `ABSL_OPTION_HARDENED` in `absl/base/options.h` for more information on +// hardened mode. +#if ABSL_OPTION_HARDENED == 1 && defined(NDEBUG) +#define ABSL_HARDENING_ASSERT(expr) \ + (ABSL_PREDICT_TRUE((expr)) ? static_cast(0) \ + : [] { ABSL_INTERNAL_HARDENING_ABORT(); }()) +#else +#define ABSL_HARDENING_ASSERT(expr) ABSL_ASSERT(expr) +#endif + #ifdef ABSL_HAVE_EXCEPTIONS #define ABSL_INTERNAL_TRY try #define ABSL_INTERNAL_CATCH_ANY catch (...) diff --git a/absl/base/options.h b/absl/base/options.h index 234137c7..230bf1ee 100644 --- a/absl/base/options.h +++ b/absl/base/options.h @@ -1,6 +1,3 @@ -#ifndef ABSL_BASE_OPTIONS_H_ -#define ABSL_BASE_OPTIONS_H_ - // Copyright 2019 The Abseil Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -67,6 +64,9 @@ // proper Abseil implementation at compile-time, which will not be sufficient // to guarantee ABI stability to package managers. +#ifndef ABSL_BASE_OPTIONS_H_ +#define ABSL_BASE_OPTIONS_H_ + // Include a standard library header to allow configuration based on the // standard library in use. #ifdef __cplusplus @@ -208,4 +208,31 @@ #define ABSL_OPTION_USE_INLINE_NAMESPACE 0 #define ABSL_OPTION_INLINE_NAMESPACE_NAME head +// ABSL_OPTION_HARDENED +// +// This option enables a "hardened" build in release mode (in this context, +// release mode is defined as a build where the `NDEBUG` macro is defined). +// +// A value of 0 means that "hardened" mode is not enabled. +// +// A value of 1 means that "hardened" mode is enabled. +// +// Hardened builds have additional security checks enabled when `NDEBUG` is +// defined. Defining `NDEBUG` is normally used to turn `assert()` macro into a +// no-op, as well as disabling other bespoke program consistency checks. By +// defining ABSL_OPTION_HARDENED to 1, a select set of checks remain enabled in +// release mode. These checks guard against programming errors that may lead to +// security vulnerabilities. In release mode, when one of these programming +// errors is encountered, the program will immediately abort, possibly without +// any attempt at logging. +// +// The checks enabled by this option are not free; they do incur runtime cost. +// +// The checks enabled by this option are always active when `NDEBUG` is not +// defined, even in the case when ABSL_OPTION_HARDENED is defined to 0. The +// checks enabled by this option may abort the program in a different way and +// log additional information when `NDEBUG` is not defined. + +#define ABSL_OPTION_HARDENED 0 + #endif // ABSL_BASE_OPTIONS_H_ diff --git a/absl/container/BUILD.bazel b/absl/container/BUILD.bazel index 70985641..c7f7b0d9 100644 --- a/absl/container/BUILD.bazel +++ b/absl/container/BUILD.bazel @@ -74,6 +74,7 @@ cc_test( linkopts = ABSL_DEFAULT_LINKOPTS, deps = [ ":fixed_array", + "//absl/base:config", "//absl/base:exception_testing", "//absl/hash:hash_testing", "//absl/memory", @@ -153,6 +154,7 @@ cc_test( ":counting_allocator", ":inlined_vector", ":test_instance_tracker", + "//absl/base:config", "//absl/base:core_headers", "//absl/base:exception_testing", "//absl/base:raw_logging_internal", diff --git a/absl/container/CMakeLists.txt b/absl/container/CMakeLists.txt index 99a8e9c0..a732fe82 100644 --- a/absl/container/CMakeLists.txt +++ b/absl/container/CMakeLists.txt @@ -147,6 +147,7 @@ absl_cc_test( ${ABSL_TEST_COPTS} DEPS absl::fixed_array + absl::config absl::exception_testing absl::hash_testing absl::memory @@ -221,6 +222,7 @@ absl_cc_test( absl::counting_allocator absl::inlined_vector absl::test_instance_tracker + absl::config absl::core_headers absl::exception_testing absl::hash_testing diff --git a/absl/container/fixed_array.h b/absl/container/fixed_array.h index a9ce99ba..796dd629 100644 --- a/absl/container/fixed_array.h +++ b/absl/container/fixed_array.h @@ -217,7 +217,7 @@ class FixedArray { // Returns a reference the ith element of the fixed array. // REQUIRES: 0 <= i < size() reference operator[](size_type i) { - assert(i < size()); + ABSL_HARDENING_ASSERT(i < size()); return data()[i]; } @@ -225,7 +225,7 @@ class FixedArray { // ith element of the fixed array. // REQUIRES: 0 <= i < size() const_reference operator[](size_type i) const { - assert(i < size()); + ABSL_HARDENING_ASSERT(i < size()); return data()[i]; } @@ -252,20 +252,32 @@ class FixedArray { // FixedArray::front() // // Returns a reference to the first element of the fixed array. - reference front() { return *begin(); } + reference front() { + ABSL_HARDENING_ASSERT(!empty()); + return data()[0]; + } // Overload of FixedArray::front() to return a reference to the first element // of a fixed array of const values. - const_reference front() const { return *begin(); } + const_reference front() const { + ABSL_HARDENING_ASSERT(!empty()); + return data()[0]; + } // FixedArray::back() // // Returns a reference to the last element of the fixed array. - reference back() { return *(end() - 1); } + reference back() { + ABSL_HARDENING_ASSERT(!empty()); + return data()[size() - 1]; + } // Overload of FixedArray::back() to return a reference to the last element // of a fixed array of const values. - const_reference back() const { return *(end() - 1); } + const_reference back() const { + ABSL_HARDENING_ASSERT(!empty()); + return data()[size() - 1]; + } // FixedArray::begin() // diff --git a/absl/container/fixed_array_test.cc b/absl/container/fixed_array_test.cc index c960fe51..9b1c224f 100644 --- a/absl/container/fixed_array_test.cc +++ b/absl/container/fixed_array_test.cc @@ -28,6 +28,7 @@ #include "gmock/gmock.h" #include "gtest/gtest.h" #include "absl/base/internal/exception_testing.h" +#include "absl/base/options.h" #include "absl/hash/hash_testing.h" #include "absl/memory/memory.h" @@ -188,6 +189,21 @@ TEST(FixedArrayTest, AtThrows) { "failed bounds check"); } +TEST(FixedArrayTest, Hardened) { +#if !defined(NDEBUG) || ABSL_OPTION_HARDENED + absl::FixedArray a = {1, 2, 3}; + EXPECT_EQ(a[2], 3); + EXPECT_DEATH_IF_SUPPORTED(a[3], ""); + EXPECT_DEATH_IF_SUPPORTED(a[-1], ""); + + absl::FixedArray empty(0); + EXPECT_DEATH_IF_SUPPORTED(empty[0], ""); + EXPECT_DEATH_IF_SUPPORTED(empty[-1], ""); + EXPECT_DEATH_IF_SUPPORTED(empty.front(), ""); + EXPECT_DEATH_IF_SUPPORTED(empty.back(), ""); +#endif +} + TEST(FixedArrayRelationalsTest, EqualArrays) { for (int i = 0; i < 10; ++i) { absl::FixedArray a1(i); diff --git a/absl/container/inlined_vector.h b/absl/container/inlined_vector.h index 2388d471..5f6f6154 100644 --- a/absl/container/inlined_vector.h +++ b/absl/container/inlined_vector.h @@ -48,6 +48,7 @@ #include "absl/algorithm/algorithm.h" #include "absl/base/internal/throw_delegate.h" +#include "absl/base/macros.h" #include "absl/base/optimization.h" #include "absl/base/port.h" #include "absl/container/internal/inlined_vector.h" @@ -307,16 +308,14 @@ class InlinedVector { // // Returns a `reference` to the `i`th element of the inlined vector. reference operator[](size_type i) { - assert(i < size()); - + ABSL_HARDENING_ASSERT(i < size()); return data()[i]; } // Overload of `InlinedVector::operator[](...)` that returns a // `const_reference` to the `i`th element of the inlined vector. const_reference operator[](size_type i) const { - assert(i < size()); - + ABSL_HARDENING_ASSERT(i < size()); return data()[i]; } @@ -331,7 +330,6 @@ class InlinedVector { base_internal::ThrowStdOutOfRange( "`InlinedVector::at(size_type)` failed bounds check"); } - return data()[i]; } @@ -345,7 +343,6 @@ class InlinedVector { base_internal::ThrowStdOutOfRange( "`InlinedVector::at(size_type) const` failed bounds check"); } - return data()[i]; } @@ -353,16 +350,14 @@ class InlinedVector { // // Returns a `reference` to the first element of the inlined vector. reference front() { - assert(!empty()); - + ABSL_HARDENING_ASSERT(!empty()); return at(0); } // Overload of `InlinedVector::front()` that returns a `const_reference` to // the first element of the inlined vector. const_reference front() const { - assert(!empty()); - + ABSL_HARDENING_ASSERT(!empty()); return at(0); } @@ -370,16 +365,14 @@ class InlinedVector { // // Returns a `reference` to the last element of the inlined vector. reference back() { - assert(!empty()); - + ABSL_HARDENING_ASSERT(!empty()); return at(size() - 1); } // Overload of `InlinedVector::back()` that returns a `const_reference` to the // last element of the inlined vector. const_reference back() const { - assert(!empty()); - + ABSL_HARDENING_ASSERT(!empty()); return at(size() - 1); } @@ -573,8 +566,8 @@ class InlinedVector { // of `v` starting at `pos`, returning an `iterator` pointing to the first of // the newly inserted elements. iterator insert(const_iterator pos, size_type n, const_reference v) { - assert(pos >= begin()); - assert(pos <= end()); + ABSL_HARDENING_ASSERT(pos >= begin()); + ABSL_HARDENING_ASSERT(pos <= end()); if (ABSL_PREDICT_TRUE(n != 0)) { value_type dealias = v; @@ -600,8 +593,8 @@ class InlinedVector { EnableIfAtLeastForwardIterator* = nullptr> iterator insert(const_iterator pos, ForwardIterator first, ForwardIterator last) { - assert(pos >= begin()); - assert(pos <= end()); + ABSL_HARDENING_ASSERT(pos >= begin()); + ABSL_HARDENING_ASSERT(pos <= end()); if (ABSL_PREDICT_TRUE(first != last)) { return storage_.Insert(pos, IteratorValueAdapter(first), @@ -619,8 +612,8 @@ class InlinedVector { template * = nullptr> iterator insert(const_iterator pos, InputIterator first, InputIterator last) { - assert(pos >= begin()); - assert(pos <= end()); + ABSL_HARDENING_ASSERT(pos >= begin()); + ABSL_HARDENING_ASSERT(pos <= end()); size_type index = std::distance(cbegin(), pos); for (size_type i = index; first != last; ++i, static_cast(++first)) { @@ -636,8 +629,8 @@ class InlinedVector { // `pos`, returning an `iterator` pointing to the newly emplaced element. template iterator emplace(const_iterator pos, Args&&... args) { - assert(pos >= begin()); - assert(pos <= end()); + ABSL_HARDENING_ASSERT(pos >= begin()); + ABSL_HARDENING_ASSERT(pos <= end()); value_type dealias(std::forward(args)...); return storage_.Insert(pos, @@ -670,7 +663,7 @@ class InlinedVector { // // Destroys the element at `back()`, reducing the size by `1`. void pop_back() noexcept { - assert(!empty()); + ABSL_HARDENING_ASSERT(!empty()); AllocatorTraits::destroy(*storage_.GetAllocPtr(), data() + (size() - 1)); storage_.SubtractSize(1); @@ -683,8 +676,8 @@ class InlinedVector { // // NOTE: may return `end()`, which is not dereferencable. iterator erase(const_iterator pos) { - assert(pos >= begin()); - assert(pos < end()); + ABSL_HARDENING_ASSERT(pos >= begin()); + ABSL_HARDENING_ASSERT(pos < end()); return storage_.Erase(pos, pos + 1); } @@ -695,9 +688,9 @@ class InlinedVector { // // NOTE: may return `end()`, which is not dereferencable. iterator erase(const_iterator from, const_iterator to) { - assert(from >= begin()); - assert(from <= to); - assert(to <= end()); + ABSL_HARDENING_ASSERT(from >= begin()); + ABSL_HARDENING_ASSERT(from <= to); + ABSL_HARDENING_ASSERT(to <= end()); if (ABSL_PREDICT_TRUE(from != to)) { return storage_.Erase(from, to); diff --git a/absl/container/inlined_vector_test.cc b/absl/container/inlined_vector_test.cc index 5965eac7..415c60d9 100644 --- a/absl/container/inlined_vector_test.cc +++ b/absl/container/inlined_vector_test.cc @@ -30,6 +30,7 @@ #include "absl/base/internal/exception_testing.h" #include "absl/base/internal/raw_logging.h" #include "absl/base/macros.h" +#include "absl/base/options.h" #include "absl/container/internal/counting_allocator.h" #include "absl/container/internal/test_instance_tracker.h" #include "absl/hash/hash_testing.h" @@ -247,6 +248,16 @@ TEST(IntVec, Erase) { } } +TEST(IntVec, Hardened) { + IntVec v; + Fill(&v, 10); + EXPECT_EQ(v[9], 9); +#if !defined(NDEBUG) || ABSL_OPTION_HARDENED + EXPECT_DEATH_IF_SUPPORTED(v[10], ""); + EXPECT_DEATH_IF_SUPPORTED(v[-1], ""); +#endif +} + // At the end of this test loop, the elements between [erase_begin, erase_end) // should have reference counts == 0, and all others elements should have // reference counts == 1. diff --git a/absl/copts/configure_copts.bzl b/absl/copts/configure_copts.bzl index 9dd6bd0a..ff9a5ea9 100644 --- a/absl/copts/configure_copts.bzl +++ b/absl/copts/configure_copts.bzl @@ -48,7 +48,7 @@ ABSL_RANDOM_RANDEN_COPTS = select({ ":cpu_darwin": ABSL_RANDOM_HWAES_X64_FLAGS, ":cpu_x64_windows_msvc": ABSL_RANDOM_HWAES_MSVC_X64_FLAGS, ":cpu_x64_windows": ABSL_RANDOM_HWAES_MSVC_X64_FLAGS, - ":cpu_haswell": ABSL_RANDOM_HWAES_X64_FLAGS, + ":cpu_k8": ABSL_RANDOM_HWAES_X64_FLAGS, ":cpu_ppc": ["-mcrypto"], # Supported by default or unsupported. @@ -65,7 +65,7 @@ def absl_random_randen_copts_init(): # These configs have consistent flags to enable HWAES intsructions. cpu_configs = [ "ppc", - "haswell", + "k8", "darwin_x86_64", "darwin", "x64_windows_msvc", diff --git a/absl/flags/internal/flag.cc b/absl/flags/internal/flag.cc index a45e883e..56a5ed2b 100644 --- a/absl/flags/internal/flag.cc +++ b/absl/flags/internal/flag.cc @@ -74,6 +74,59 @@ class MutexRelock { } // namespace +/////////////////////////////////////////////////////////////////////////////// +// Persistent state of the flag data. + +class FlagImpl; + +class FlagState : public flags_internal::FlagStateInterface { + public: + template + FlagState(FlagImpl* flag_impl, const V& v, bool modified, + bool on_command_line, int64_t counter) + : flag_impl_(flag_impl), + value_(v), + modified_(modified), + on_command_line_(on_command_line), + counter_(counter) {} + + ~FlagState() override { + if (flag_impl_->ValueStorageKind() != FlagValueStorageKind::kHeapAllocated) + return; + flags_internal::Delete(flag_impl_->op_, value_.dynamic); + } + + private: + friend class FlagImpl; + + // Restores the flag to the saved state. + void Restore() const override { + if (!flag_impl_->RestoreState(*this)) return; + + ABSL_INTERNAL_LOG( + INFO, absl::StrCat("Restore saved value of ", flag_impl_->Name(), + " to: ", flag_impl_->CurrentValue())); + } + + // Flag and saved flag data. + FlagImpl* flag_impl_; + union SavedValue { + explicit SavedValue(void* v) : dynamic(v) {} + explicit SavedValue(int64_t v) : one_word(v) {} + explicit SavedValue(flags_internal::AlignedTwoWords v) : two_words(v) {} + + void* dynamic; + int64_t one_word; + flags_internal::AlignedTwoWords two_words; + } value_; + bool modified_; + bool on_command_line_; + int64_t counter_; +}; + +/////////////////////////////////////////////////////////////////////////////// +// Flag implementation, which does not depend on flag value type. + void FlagImpl::Init() { new (&data_guard_) absl::Mutex; @@ -86,13 +139,13 @@ void FlagImpl::Init() { break; case FlagValueStorageKind::kOneWordAtomic: { int64_t atomic_value; - std::memcpy(&atomic_value, init_value.get(), Sizeof(op_)); + std::memcpy(&atomic_value, init_value.get(), flags_internal::Sizeof(op_)); value_.one_word_atomic.store(atomic_value, std::memory_order_release); break; } case FlagValueStorageKind::kTwoWordsAtomic: { AlignedTwoWords atomic_value{0, 0}; - std::memcpy(&atomic_value, init_value.get(), Sizeof(op_)); + std::memcpy(&atomic_value, init_value.get(), flags_internal::Sizeof(op_)); value_.two_words_atomic.store(atomic_value, std::memory_order_release); break; } @@ -145,17 +198,17 @@ std::unique_ptr FlagImpl::MakeInitValue() const { void FlagImpl::StoreValue(const void* src) { switch (ValueStorageKind()) { case FlagValueStorageKind::kHeapAllocated: - Copy(op_, src, value_.dynamic); + flags_internal::Copy(op_, src, value_.dynamic); break; case FlagValueStorageKind::kOneWordAtomic: { int64_t one_word_val; - std::memcpy(&one_word_val, src, Sizeof(op_)); + std::memcpy(&one_word_val, src, flags_internal::Sizeof(op_)); value_.one_word_atomic.store(one_word_val, std::memory_order_release); break; } case FlagValueStorageKind::kTwoWordsAtomic: { AlignedTwoWords two_words_val{0, 0}; - std::memcpy(&two_words_val, src, Sizeof(op_)); + std::memcpy(&two_words_val, src, flags_internal::Sizeof(op_)); value_.two_words_atomic.store(two_words_val, std::memory_order_release); break; } @@ -172,11 +225,17 @@ std::string FlagImpl::Filename() const { return flags_internal::GetUsageConfig().normalize_filename(filename_); } +absl::string_view FlagImpl::Typename() const { return ""; } + std::string FlagImpl::Help() const { return HelpSourceKind() == FlagHelpKind::kLiteral ? help_.literal : help_.gen_func(); } +FlagStaticTypeId FlagImpl::TypeId() const { + return flags_internal::StaticTypeId(op_); +} + bool FlagImpl::IsModified() const { absl::MutexLock l(DataGuard()); return modified_; @@ -195,10 +254,10 @@ std::string FlagImpl::DefaultValue() const { } std::string FlagImpl::CurrentValue() const { - DataGuard(); // Make sure flag initialized + auto* guard = DataGuard(); // Make sure flag initialized switch (ValueStorageKind()) { case FlagValueStorageKind::kHeapAllocated: { - absl::MutexLock l(DataGuard()); + absl::MutexLock l(guard); return flags_internal::Unparse(op_, value_.dynamic); } case FlagValueStorageKind::kOneWordAtomic: { @@ -250,23 +309,53 @@ void FlagImpl::InvokeCallback() const { cb(); } -bool FlagImpl::RestoreState(const void* value, bool modified, - bool on_command_line, int64_t counter) { - { - absl::MutexLock l(DataGuard()); +std::unique_ptr FlagImpl::SaveState() { + absl::MutexLock l(DataGuard()); - if (counter_ == counter) return false; + bool modified = modified_; + bool on_command_line = on_command_line_; + switch (ValueStorageKind()) { + case FlagValueStorageKind::kHeapAllocated: { + return absl::make_unique( + this, flags_internal::Clone(op_, value_.dynamic), modified, + on_command_line, counter_); + } + case FlagValueStorageKind::kOneWordAtomic: { + return absl::make_unique( + this, value_.one_word_atomic.load(std::memory_order_acquire), + modified, on_command_line, counter_); + } + case FlagValueStorageKind::kTwoWordsAtomic: { + return absl::make_unique( + this, value_.two_words_atomic.load(std::memory_order_acquire), + modified, on_command_line, counter_); + } } + return nullptr; +} - Write(value); +bool FlagImpl::RestoreState(const FlagState& flag_state) { + absl::MutexLock l(DataGuard()); - { - absl::MutexLock l(DataGuard()); + if (flag_state.counter_ == counter_) { + return false; + } - modified_ = modified; - on_command_line_ = on_command_line; + switch (ValueStorageKind()) { + case FlagValueStorageKind::kHeapAllocated: + StoreValue(flag_state.value_.dynamic); + break; + case FlagValueStorageKind::kOneWordAtomic: + StoreValue(&flag_state.value_.one_word); + break; + case FlagValueStorageKind::kTwoWordsAtomic: + StoreValue(&flag_state.value_.two_words); + break; } + modified_ = flag_state.modified_; + on_command_line_ = flag_state.on_command_line_; + return true; } @@ -290,10 +379,10 @@ std::unique_ptr FlagImpl::TryParse( } void FlagImpl::Read(void* dst) const { - DataGuard(); // Make sure flag initialized + auto* guard = DataGuard(); // Make sure flag initialized switch (ValueStorageKind()) { case FlagValueStorageKind::kHeapAllocated: { - absl::MutexLock l(DataGuard()); + absl::MutexLock l(guard); flags_internal::CopyConstruct(op_, value_.dynamic, dst); break; @@ -301,13 +390,13 @@ void FlagImpl::Read(void* dst) const { case FlagValueStorageKind::kOneWordAtomic: { const auto one_word_val = value_.one_word_atomic.load(std::memory_order_acquire); - std::memcpy(dst, &one_word_val, Sizeof(op_)); + std::memcpy(dst, &one_word_val, flags_internal::Sizeof(op_)); break; } case FlagValueStorageKind::kTwoWordsAtomic: { const auto two_words_val = value_.two_words_atomic.load(std::memory_order_acquire); - std::memcpy(dst, &two_words_val, Sizeof(op_)); + std::memcpy(dst, &two_words_val, flags_internal::Sizeof(op_)); break; } } diff --git a/absl/flags/internal/flag.h b/absl/flags/internal/flag.h index 2c4aba68..f27e558b 100644 --- a/absl/flags/internal/flag.h +++ b/absl/flags/internal/flag.h @@ -40,9 +40,6 @@ namespace absl { ABSL_NAMESPACE_BEGIN namespace flags_internal { -template -class Flag; - /////////////////////////////////////////////////////////////////////////////// // Flag value type operations, eg., parsing, copying, etc. are provided // by function specific to that type with a signature matching FlagOpFn. @@ -148,36 +145,6 @@ inline FlagStaticTypeId StaticTypeId(FlagOpFn op) { op(FlagOp::kStaticTypeId, nullptr, nullptr, nullptr)); } -/////////////////////////////////////////////////////////////////////////////// -// Persistent state of the flag data. - -template -class FlagState : public flags_internal::FlagStateInterface { - public: - FlagState(Flag* flag, T&& cur, bool modified, bool on_command_line, - int64_t counter) - : flag_(flag), - cur_value_(std::move(cur)), - modified_(modified), - on_command_line_(on_command_line), - counter_(counter) {} - - ~FlagState() override = default; - - private: - friend class Flag; - - // Restores the flag to the saved state. - void Restore() const override; - - // Flag and saved flag data. - Flag* flag_; - T cur_value_; - bool modified_; - bool on_command_line_; - int64_t counter_; -}; - /////////////////////////////////////////////////////////////////////////////// // Flag help auxiliary structs. @@ -341,13 +308,15 @@ struct FlagCallback { struct DynValueDeleter { explicit DynValueDeleter(FlagOpFn op_arg = nullptr) : op(op_arg) {} void operator()(void* ptr) const { - if (op != nullptr) Delete(op, ptr); + if (op != nullptr) flags_internal::Delete(op, ptr); } FlagOpFn op; }; -class FlagImpl { +class FlagState; + +class FlagImpl final : public flags_internal::CommandLineFlag { public: constexpr FlagImpl(const char* name, const char* filename, FlagOpFn op, FlagHelpArg help, FlagValueStorageKind value_kind, @@ -368,15 +337,7 @@ class FlagImpl { data_guard_{} {} // Constant access methods - absl::string_view Name() const; - std::string Filename() const; - std::string Help() const; - bool IsModified() const ABSL_LOCKS_EXCLUDED(*DataGuard()); - bool IsSpecifiedOnCommandLine() const ABSL_LOCKS_EXCLUDED(*DataGuard()); - std::string DefaultValue() const ABSL_LOCKS_EXCLUDED(*DataGuard()); - std::string CurrentValue() const ABSL_LOCKS_EXCLUDED(*DataGuard()); - void Read(void* dst) const ABSL_LOCKS_EXCLUDED(*DataGuard()); - + void Read(void* dst) const override ABSL_LOCKS_EXCLUDED(*DataGuard()); template ::value, int>::type = 0> void Get(T* dst) const { @@ -404,34 +365,12 @@ class FlagImpl { // Mutating access methods void Write(const void* src) ABSL_LOCKS_EXCLUDED(*DataGuard()); - bool ParseFrom(absl::string_view value, FlagSettingMode set_mode, - ValueSource source, std::string* err) - ABSL_LOCKS_EXCLUDED(*DataGuard()); // Interfaces to operate on callbacks. void SetCallback(const FlagCallbackFunc mutation_callback) ABSL_LOCKS_EXCLUDED(*DataGuard()); void InvokeCallback() const ABSL_EXCLUSIVE_LOCKS_REQUIRED(*DataGuard()); - // Interfaces to save/restore mutable flag data - template - std::unique_ptr SaveState(Flag* flag) const - ABSL_LOCKS_EXCLUDED(*DataGuard()) { - T&& cur_value = flag->Get(); - absl::MutexLock l(DataGuard()); - - return absl::make_unique>( - flag, std::move(cur_value), modified_, on_command_line_, counter_); - } - bool RestoreState(const void* value, bool modified, bool on_command_line, - int64_t counter) ABSL_LOCKS_EXCLUDED(*DataGuard()); - - // Value validation interfaces. - void CheckDefaultValueParsingRoundtrip() const - ABSL_LOCKS_EXCLUDED(*DataGuard()); - bool ValidateInputValue(absl::string_view value) const - ABSL_LOCKS_EXCLUDED(*DataGuard()); - // Used in read/write operations to validate source/target has correct type. // For example if flag is declared as absl::Flag FLAGS_foo, a call to // absl::GetFlag(FLAGS_foo) validates that the type of FLAGS_foo is indeed @@ -441,6 +380,10 @@ class FlagImpl { void AssertValidType(FlagStaticTypeId type_id) const; private: + template + friend class Flag; + friend class FlagState; + // Ensures that `data_guard_` is initialized and returns it. absl::Mutex* DataGuard() const ABSL_LOCK_RETURNED((absl::Mutex*)&data_guard_); // Returns heap allocated value of type T initialized with default value. @@ -467,6 +410,37 @@ class FlagImpl { return static_cast(def_kind_); } + // CommandLineFlag interface implementation + absl::string_view Name() const override; + std::string Filename() const override; + absl::string_view Typename() const override; + std::string Help() const override; + FlagStaticTypeId TypeId() const override; + bool IsModified() const override ABSL_LOCKS_EXCLUDED(*DataGuard()); + bool IsSpecifiedOnCommandLine() const override + ABSL_LOCKS_EXCLUDED(*DataGuard()); + std::string DefaultValue() const override ABSL_LOCKS_EXCLUDED(*DataGuard()); + std::string CurrentValue() const override ABSL_LOCKS_EXCLUDED(*DataGuard()); + bool ValidateInputValue(absl::string_view value) const override + ABSL_LOCKS_EXCLUDED(*DataGuard()); + void CheckDefaultValueParsingRoundtrip() const override + ABSL_LOCKS_EXCLUDED(*DataGuard()); + + // Interfaces to save and restore flags to/from persistent state. + // Returns current flag state or nullptr if flag does not support + // saving and restoring a state. + std::unique_ptr SaveState() override + ABSL_LOCKS_EXCLUDED(*DataGuard()); + + // Restores the flag state to the supplied state object. If there is + // nothing to restore returns false. Otherwise returns true. + bool RestoreState(const FlagState& flag_state) + ABSL_LOCKS_EXCLUDED(*DataGuard()); + + bool ParseFrom(absl::string_view value, FlagSettingMode set_mode, + ValueSource source, std::string* error) override + ABSL_LOCKS_EXCLUDED(*DataGuard()); + // Immutable flag's state. // Flags name passed to ABSL_FLAG as second arg. @@ -536,7 +510,7 @@ class FlagImpl { // flag reflection handle interface. template -class Flag final : public flags_internal::CommandLineFlag { +class Flag { public: constexpr Flag(const char* name, const char* filename, const FlagHelpArg help, const FlagDfltGenFunc default_value_gen) @@ -568,60 +542,24 @@ class Flag final : public flags_internal::CommandLineFlag { } // CommandLineFlag interface - absl::string_view Name() const override { return impl_.Name(); } - std::string Filename() const override { return impl_.Filename(); } - absl::string_view Typename() const override { return ""; } - std::string Help() const override { return impl_.Help(); } - bool IsModified() const override { return impl_.IsModified(); } - bool IsSpecifiedOnCommandLine() const override { + absl::string_view Name() const { return impl_.Name(); } + std::string Filename() const { return impl_.Filename(); } + absl::string_view Typename() const { return ""; } + std::string Help() const { return impl_.Help(); } + bool IsModified() const { return impl_.IsModified(); } + bool IsSpecifiedOnCommandLine() const { return impl_.IsSpecifiedOnCommandLine(); } - std::string DefaultValue() const override { return impl_.DefaultValue(); } - std::string CurrentValue() const override { return impl_.CurrentValue(); } - bool ValidateInputValue(absl::string_view value) const override { - return impl_.ValidateInputValue(value); - } - - // Interfaces to save and restore flags to/from persistent state. - // Returns current flag state or nullptr if flag does not support - // saving and restoring a state. - std::unique_ptr SaveState() override { - return impl_.SaveState(this); - } - - // Restores the flag state to the supplied state object. If there is - // nothing to restore returns false. Otherwise returns true. - bool RestoreState(const FlagState& flag_state) { - return impl_.RestoreState(&flag_state.cur_value_, flag_state.modified_, - flag_state.on_command_line_, flag_state.counter_); - } - bool ParseFrom(absl::string_view value, FlagSettingMode set_mode, - ValueSource source, std::string* error) override { - return impl_.ParseFrom(value, set_mode, source, error); - } - void CheckDefaultValueParsingRoundtrip() const override { - impl_.CheckDefaultValueParsingRoundtrip(); - } + std::string DefaultValue() const { return impl_.DefaultValue(); } + std::string CurrentValue() const { return impl_.CurrentValue(); } private: - friend class FlagState; - - void Read(void* dst) const override { impl_.Read(dst); } - FlagStaticTypeId TypeId() const override { return &FlagStaticTypeIdGen; } - + template + friend class FlagRegistrar; // Flag's data FlagImpl impl_; }; -template -void FlagState::Restore() const { - if (flag_->RestoreState(*this)) { - ABSL_INTERNAL_LOG(INFO, - absl::StrCat("Restore saved value of ", flag_->Name(), - " to: ", flag_->CurrentValue())); - } -} - // This class facilitates Flag object registration and tail expression-based // flag definition, for example: // ABSL_FLAG(int, foo, 42, "Foo help").OnUpdate(NotifyFooWatcher); @@ -629,7 +567,7 @@ template class FlagRegistrar { public: explicit FlagRegistrar(Flag* flag) : flag_(flag) { - if (do_register) flags_internal::RegisterCommandLineFlag(flag_); + if (do_register) flags_internal::RegisterCommandLineFlag(&flag_->impl_); } FlagRegistrar& OnUpdate(FlagCallbackFunc cb) && { diff --git a/absl/strings/string_view.h b/absl/strings/string_view.h index b314bc34..8e348fcd 100644 --- a/absl/strings/string_view.h +++ b/absl/strings/string_view.h @@ -283,7 +283,7 @@ class string_view { // Returns the ith element of the `string_view` using the array operator. // Note that this operator does not perform any bounds checking. constexpr const_reference operator[](size_type i) const { - return ABSL_ASSERT(i < size()), ptr_[i]; + return ABSL_HARDENING_ASSERT(i < size()), ptr_[i]; } // string_view::at() @@ -303,14 +303,14 @@ class string_view { // // Returns the first element of a `string_view`. constexpr const_reference front() const { - return ABSL_ASSERT(!empty()), ptr_[0]; + return ABSL_HARDENING_ASSERT(!empty()), ptr_[0]; } // string_view::back() // // Returns the last element of a `string_view`. constexpr const_reference back() const { - return ABSL_ASSERT(!empty()), ptr_[size() - 1]; + return ABSL_HARDENING_ASSERT(!empty()), ptr_[size() - 1]; } // string_view::data() @@ -329,7 +329,7 @@ class string_view { // Removes the first `n` characters from the `string_view`. Note that the // underlying string is not changed, only the view. void remove_prefix(size_type n) { - assert(n <= length_); + ABSL_HARDENING_ASSERT(n <= length_); ptr_ += n; length_ -= n; } @@ -339,7 +339,7 @@ class string_view { // Removes the last `n` characters from the `string_view`. Note that the // underlying string is not changed, only the view. void remove_suffix(size_type n) { - assert(n <= length_); + ABSL_HARDENING_ASSERT(n <= length_); length_ -= n; } @@ -520,7 +520,7 @@ class string_view { (std::numeric_limits::max)(); static constexpr size_type CheckLengthInternal(size_type len) { - return (void)ABSL_ASSERT(len <= kMaxSize), len; + return ABSL_HARDENING_ASSERT(len <= kMaxSize), len; } static constexpr size_type StrlenInternal(const char* str) { diff --git a/absl/strings/string_view_test.cc b/absl/strings/string_view_test.cc index 6ba06144..ff31b51e 100644 --- a/absl/strings/string_view_test.cc +++ b/absl/strings/string_view_test.cc @@ -28,6 +28,7 @@ #include "gtest/gtest.h" #include "absl/base/config.h" #include "absl/base/dynamic_annotations.h" +#include "absl/base/options.h" #if defined(ABSL_HAVE_STD_STRING_VIEW) || defined(__ANDROID__) // We don't control the death messaging when using std::string_view. @@ -820,7 +821,7 @@ TEST(StringViewTest, FrontBackSingleChar) { TEST(StringViewTest, FrontBackEmpty) { #ifndef ABSL_USES_STD_STRING_VIEW -#ifndef NDEBUG +#if !defined(NDEBUG) || ABSL_OPTION_HARDENED // Abseil's string_view implementation has debug assertions that check that // front() and back() are not called on an empty string_view. absl::string_view sv; @@ -1130,7 +1131,7 @@ TEST(StringViewTest, Noexcept) { TEST(StringViewTest, BoundsCheck) { #ifndef ABSL_USES_STD_STRING_VIEW -#ifndef NDEBUG +#if !defined(NDEBUG) || ABSL_OPTION_HARDENED // Abseil's string_view implementation has bounds-checking in debug mode. absl::string_view h = "hello"; ABSL_EXPECT_DEATH_IF_SUPPORTED(h[5], ""); diff --git a/absl/synchronization/mutex.cc b/absl/synchronization/mutex.cc index 426558e6..6ee5f235 100644 --- a/absl/synchronization/mutex.cc +++ b/absl/synchronization/mutex.cc @@ -1751,7 +1751,8 @@ static const intptr_t ignore_waiting_writers[] = { }; // Internal version of LockWhen(). See LockSlowWithDeadline() -void Mutex::LockSlow(MuHow how, const Condition *cond, int flags) { +ABSL_ATTRIBUTE_NOINLINE void Mutex::LockSlow(MuHow how, const Condition *cond, + int flags) { ABSL_RAW_CHECK( this->LockSlowWithDeadline(how, cond, KernelTimeout::Never(), flags), "condition untrue on return from LockSlow"); @@ -2017,7 +2018,7 @@ void Mutex::LockSlowLoop(SynchWaitParams *waitp, int flags) { // which holds the lock but is not runnable because its condition is false // or it is in the process of blocking on a condition variable; it must requeue // itself on the mutex/condvar to wait for its condition to become true. -void Mutex::UnlockSlow(SynchWaitParams *waitp) { +ABSL_ATTRIBUTE_NOINLINE void Mutex::UnlockSlow(SynchWaitParams *waitp) { intptr_t v = mu_.load(std::memory_order_relaxed); this->AssertReaderHeld(); CheckForMutexCorruption(v, "Unlock"); diff --git a/absl/types/optional.h b/absl/types/optional.h index afda69a0..61540cfd 100644 --- a/absl/types/optional.h +++ b/absl/types/optional.h @@ -412,11 +412,11 @@ class optional : private optional_internal::optional_data, // // If you need myOpt->foo in constexpr, use (*myOpt).foo instead. const T* operator->() const { - assert(this->engaged_); + ABSL_HARDENING_ASSERT(this->engaged_); return std::addressof(this->data_); } T* operator->() { - assert(this->engaged_); + ABSL_HARDENING_ASSERT(this->engaged_); return std::addressof(this->data_); } @@ -425,17 +425,17 @@ class optional : private optional_internal::optional_data, // Accesses the underlying `T` value of an `optional`. If the `optional` is // empty, behavior is undefined. constexpr const T& operator*() const& { - return ABSL_ASSERT(this->engaged_), reference(); + return ABSL_HARDENING_ASSERT(this->engaged_), reference(); } T& operator*() & { - assert(this->engaged_); + ABSL_HARDENING_ASSERT(this->engaged_); return reference(); } constexpr const T&& operator*() const && { - return absl::move(reference()); + return ABSL_HARDENING_ASSERT(this->engaged_), absl::move(reference()); } T&& operator*() && { - assert(this->engaged_); + ABSL_HARDENING_ASSERT(this->engaged_); return std::move(reference()); } diff --git a/absl/types/optional_test.cc b/absl/types/optional_test.cc index 47d5c8a2..874334e6 100644 --- a/absl/types/optional_test.cc +++ b/absl/types/optional_test.cc @@ -1057,8 +1057,7 @@ TEST(optionalTest, Value) { // test constexpr value() constexpr absl::optional o1(1); static_assert(1 == o1.value(), ""); // const & -#if !defined(ABSL_SKIP_OVERLOAD_TEST_DUE_TO_MSVC_BUG) && \ - !defined(ABSL_SKIP_OVERLOAD_TEST_DUE_TO_GCC_BUG) +#if !defined(_MSC_VER) && !defined(ABSL_SKIP_OVERLOAD_TEST_DUE_TO_GCC_BUG) using COI = const absl::optional; static_assert(2 == COI(2).value(), ""); // const && #endif @@ -1098,8 +1097,7 @@ TEST(optionalTest, DerefOperator) { constexpr absl::optional opt1(1); static_assert(*opt1 == 1, ""); -#if !defined(ABSL_SKIP_OVERLOAD_TEST_DUE_TO_MSVC_BUG) && \ - !defined(ABSL_SKIP_OVERLOAD_TEST_DUE_TO_GCC_BUG) +#if !defined(_MSC_VER) && !defined(ABSL_SKIP_OVERLOAD_TEST_DUE_TO_GCC_BUG) using COI = const absl::optional; static_assert(*COI(2) == 2, ""); #endif diff --git a/absl/types/span.h b/absl/types/span.h index 21cda34b..734db695 100644 --- a/absl/types/span.h +++ b/absl/types/span.h @@ -276,7 +276,7 @@ class Span { // Returns a reference to the i'th element of this span. constexpr reference operator[](size_type i) const noexcept { // MSVC 2015 accepts this as constexpr, but not ptr_[i] - return ABSL_ASSERT(i < size()), *(data() + i); + return ABSL_HARDENING_ASSERT(i < size()), *(data() + i); } // Span::at() @@ -295,7 +295,7 @@ class Span { // Returns a reference to the first element of this span. The span must not // be empty. constexpr reference front() const noexcept { - return ABSL_ASSERT(size() > 0), *data(); + return ABSL_HARDENING_ASSERT(size() > 0), *data(); } // Span::back() @@ -303,7 +303,7 @@ class Span { // Returns a reference to the last element of this span. The span must not // be empty. constexpr reference back() const noexcept { - return ABSL_ASSERT(size() > 0), *(data() + size() - 1); + return ABSL_HARDENING_ASSERT(size() > 0), *(data() + size() - 1); } // Span::begin() @@ -368,7 +368,7 @@ class Span { // // Removes the first `n` elements from the span. void remove_prefix(size_type n) noexcept { - assert(size() >= n); + ABSL_HARDENING_ASSERT(size() >= n); ptr_ += n; len_ -= n; } @@ -377,7 +377,7 @@ class Span { // // Removes the last `n` elements from the span. void remove_suffix(size_type n) noexcept { - assert(size() >= n); + ABSL_HARDENING_ASSERT(size() >= n); len_ -= n; } @@ -665,7 +665,7 @@ constexpr Span MakeSpan(T* ptr, size_t size) noexcept { template Span MakeSpan(T* begin, T* end) noexcept { - return ABSL_ASSERT(begin <= end), Span(begin, end - begin); + return ABSL_HARDENING_ASSERT(begin <= end), Span(begin, end - begin); } template @@ -710,7 +710,7 @@ constexpr Span MakeConstSpan(T* ptr, size_t size) noexcept { template Span MakeConstSpan(T* begin, T* end) noexcept { - return ABSL_ASSERT(begin <= end), Span(begin, end - begin); + return ABSL_HARDENING_ASSERT(begin <= end), Span(begin, end - begin); } template diff --git a/absl/types/span_test.cc b/absl/types/span_test.cc index 6ac234d3..2584339b 100644 --- a/absl/types/span_test.cc +++ b/absl/types/span_test.cc @@ -27,6 +27,7 @@ #include "absl/base/attributes.h" #include "absl/base/config.h" #include "absl/base/internal/exception_testing.h" +#include "absl/base/options.h" #include "absl/container/fixed_array.h" #include "absl/container/inlined_vector.h" #include "absl/hash/hash_testing.h" @@ -233,7 +234,7 @@ TEST(IntSpan, ElementAccess) { EXPECT_EQ(s.front(), s[0]); EXPECT_EQ(s.back(), s[9]); -#ifndef NDEBUG +#if !defined(NDEBUG) || ABSL_OPTION_HARDENED EXPECT_DEATH_IF_SUPPORTED(s[-1], ""); EXPECT_DEATH_IF_SUPPORTED(s[10], ""); #endif @@ -273,6 +274,13 @@ TEST(IntSpan, RemovePrefixAndSuffix) { EXPECT_EQ(s.size(), 0); EXPECT_EQ(v, MakeRamp(20, 1)); + +#if !defined(NDEBUG) || ABSL_OPTION_HARDENED + absl::Span prefix_death(v); + EXPECT_DEATH_IF_SUPPORTED(prefix_death.remove_prefix(21), ""); + absl::Span suffix_death(v); + EXPECT_DEATH_IF_SUPPORTED(suffix_death.remove_suffix(21), ""); +#endif } TEST(IntSpan, Subspan) { diff --git a/ci/absl_alternate_options.h b/ci/absl_alternate_options.h index f0c21fea..29b020d9 100644 --- a/ci/absl_alternate_options.h +++ b/ci/absl_alternate_options.h @@ -1,6 +1,3 @@ -#ifndef ABSL_BASE_OPTIONS_H_ -#define ABSL_BASE_OPTIONS_H_ - // Copyright 2019 The Abseil Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -18,11 +15,15 @@ // Alternate options.h file, used in continuous integration testing to exercise // option settings not used by default. +#ifndef ABSL_BASE_OPTIONS_H_ +#define ABSL_BASE_OPTIONS_H_ + #define ABSL_OPTION_USE_STD_ANY 0 #define ABSL_OPTION_USE_STD_OPTIONAL 0 #define ABSL_OPTION_USE_STD_STRING_VIEW 0 #define ABSL_OPTION_USE_STD_VARIANT 0 #define ABSL_OPTION_USE_INLINE_NAMESPACE 1 #define ABSL_OPTION_INLINE_NAMESPACE_NAME ns +#define ABSL_OPTION_HARDENED 1 #endif // ABSL_BASE_OPTIONS_H_ diff --git a/ci/linux_docker_containers.sh b/ci/linux_docker_containers.sh index 2e81a6a7..cf056b34 100644 --- a/ci/linux_docker_containers.sh +++ b/ci/linux_docker_containers.sh @@ -16,6 +16,6 @@ # Test scripts should source this file to get the identifiers. readonly LINUX_ALPINE_CONTAINER="gcr.io/google.com/absl-177019/alpine:20191016" -readonly LINUX_CLANG_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_clang-latest:20200102" -readonly LINUX_GCC_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-latest:20200102" +readonly LINUX_CLANG_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_clang-latest:20200319" +readonly LINUX_GCC_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-latest:20200319" readonly LINUX_GCC_49_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-4.9:20191018" -- cgit v1.2.3 From 1112609635037a32435de7aa70a9188dcb591458 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Tue, 7 Apr 2020 10:28:30 -0700 Subject: Export of internal Abseil changes -- c162645dba4de6f5f1c8b6e8a29a8da9f9e0aa52 by Derek Mauro : Update linux_clang-latest container to one based on Ubuntu 18.04, which has libstdc++-8. PiperOrigin-RevId: 305287658 GitOrigin-RevId: c162645dba4de6f5f1c8b6e8a29a8da9f9e0aa52 Change-Id: I3f31daf0d8c445008c78f0e10ae6af753cea756b --- absl/base/internal/endian_test.cc | 20 ++++++++------------ absl/random/BUILD.bazel | 3 +++ ci/linux_clang-latest_libstdcxx_bazel.sh | 2 +- ci/linux_docker_containers.sh | 2 +- 4 files changed, 13 insertions(+), 14 deletions(-) (limited to 'ci/linux_docker_containers.sh') diff --git a/absl/base/internal/endian_test.cc b/absl/base/internal/endian_test.cc index 678a0bf7..a1691b1f 100644 --- a/absl/base/internal/endian_test.cc +++ b/absl/base/internal/endian_test.cc @@ -54,18 +54,14 @@ const uint32_t k32ValueBE{0x67452301}; const uint16_t k16ValueBE{0x2301}; #endif -template -std::vector GenerateAllValuesForType() { - std::vector result; - result.reserve(size_t{1} << (sizeof(T) * 8)); - T next = std::numeric_limits::min(); - while (true) { - result.push_back(next); - if (next == std::numeric_limits::max()) { - return result; - } - ++next; +std::vector GenerateAllUint16Values() { + std::vector result; + result.reserve(size_t{1} << (sizeof(uint16_t) * 8)); + for (uint32_t i = std::numeric_limits::min(); + i <= std::numeric_limits::max(); ++i) { + result.push_back(static_cast(i)); } + return result; } template @@ -150,7 +146,7 @@ void Swap64(char* bytes) { } TEST(EndianessTest, Uint16) { - GBSwapHelper(GenerateAllValuesForType(), &Swap16); + GBSwapHelper(GenerateAllUint16Values(), &Swap16); } TEST(EndianessTest, Uint32) { diff --git a/absl/random/BUILD.bazel b/absl/random/BUILD.bazel index 4d94e1ba..e61d31b5 100644 --- a/absl/random/BUILD.bazel +++ b/absl/random/BUILD.bazel @@ -412,6 +412,7 @@ cc_test( name = "mocking_bit_gen_test", size = "small", srcs = ["mocking_bit_gen_test.cc"], + copts = ABSL_TEST_COPTS, linkopts = ABSL_DEFAULT_LINKOPTS, deps = [ ":bit_gen_ref", @@ -426,6 +427,8 @@ cc_test( name = "mock_distributions_test", size = "small", srcs = ["mock_distributions_test.cc"], + copts = ABSL_TEST_COPTS, + linkopts = ABSL_DEFAULT_LINKOPTS, deps = [ ":mock_distributions", ":mocking_bit_gen", diff --git a/ci/linux_clang-latest_libstdcxx_bazel.sh b/ci/linux_clang-latest_libstdcxx_bazel.sh index 62696293..d3920741 100755 --- a/ci/linux_clang-latest_libstdcxx_bazel.sh +++ b/ci/linux_clang-latest_libstdcxx_bazel.sh @@ -71,7 +71,7 @@ for std in ${STD}; do -e CC="/opt/llvm/clang/bin/clang" \ -e BAZEL_COMPILER="llvm" \ -e BAZEL_CXXOPTS="-std=${std}" \ - -e CPLUS_INCLUDE_PATH="/usr/include/c++/6" \ + -e CPLUS_INCLUDE_PATH="/usr/include/c++/8" \ ${DOCKER_EXTRA_ARGS:-} \ ${DOCKER_CONTAINER} \ /usr/local/bin/bazel test ... \ diff --git a/ci/linux_docker_containers.sh b/ci/linux_docker_containers.sh index cf056b34..82a10ac6 100644 --- a/ci/linux_docker_containers.sh +++ b/ci/linux_docker_containers.sh @@ -16,6 +16,6 @@ # Test scripts should source this file to get the identifiers. readonly LINUX_ALPINE_CONTAINER="gcr.io/google.com/absl-177019/alpine:20191016" -readonly LINUX_CLANG_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_clang-latest:20200319" +readonly LINUX_CLANG_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_clang-latest:20200401" readonly LINUX_GCC_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-latest:20200319" readonly LINUX_GCC_49_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-4.9:20191018" -- cgit v1.2.3 From bf655de09b67fd8b924814cbb369cb65ddd0bd24 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Tue, 7 Jul 2020 08:27:11 -0700 Subject: Export of internal Abseil changes -- 13b7cb0eff8fda5127193e11dbe0b8655415b512 by Gennadiy Rozental : Change the preprocessor guards to properly exclude tests which does not build on older version on libstdc++. Fixes #731 PiperOrigin-RevId: 319987618 -- ab2155855b4dd1259a3dd9f48fbb5e6e8c2ccd3f by Derek Mauro : Update clang-latest container to LLVM 052e1e0cfd9, Bazel 3.3.1, and CMake 3.17.3 PiperOrigin-RevId: 319835484 -- 7554283733c309649a05b7f1891b2593e50f07b7 by Abseil Team : Implement support for LOAD segments that don't start at p_vaddr==0. PiperOrigin-RevId: 319694669 GitOrigin-RevId: 13b7cb0eff8fda5127193e11dbe0b8655415b512 Change-Id: I220c2af4169cf8e4dad20cb372589ec7def0e018 --- absl/container/btree_test.cc | 9 +++-- absl/debugging/symbolize_elf.inc | 85 +++++++++++++++++++++++++++++++++++----- ci/linux_docker_containers.sh | 2 +- 3 files changed, 82 insertions(+), 14 deletions(-) (limited to 'ci/linux_docker_containers.sh') diff --git a/absl/container/btree_test.cc b/absl/container/btree_test.cc index 1738d291..c5808074 100644 --- a/absl/container/btree_test.cc +++ b/absl/container/btree_test.cc @@ -2463,9 +2463,12 @@ TEST(Btree, EXPECT_THAT(s2, ElementsAre(IsEmpty(), ElementsAre(IsNull()))); } -// GCC 4.9 has a bug in the std::pair constructors that prevents explicit -// conversions between pair types. -#if defined(__clang__) || !defined(__GNUC__) || __GNUC__ >= 5 +// libstdc++ included with GCC 4.9 has a bug in the std::pair constructors that +// prevents explicit conversions between pair types. +// We only run this test for the libstdc++ from GCC 7 or newer because we can't +// reliably check the libstdc++ version prior to that release. +#if !defined(__GLIBCXX__) || \ + (defined(_GLIBCXX_RELEASE) && _GLIBCXX_RELEASE >= 7) TEST(Btree, MapRangeConstructorAndInsertSupportExplicitConversionComparable) { const std::pair names[] = {{"n1", 1}, {"n2", 2}}; diff --git a/absl/debugging/symbolize_elf.inc b/absl/debugging/symbolize_elf.inc index b7f8663c..2f97cc7e 100644 --- a/absl/debugging/symbolize_elf.inc +++ b/absl/debugging/symbolize_elf.inc @@ -57,6 +57,7 @@ #include #include +#include #include #include #include @@ -184,6 +185,7 @@ struct ObjFile { fd(-1), elf_type(-1) { SafeMemZero(&elf_header, sizeof(elf_header)); + SafeMemZero(&phdr[0], sizeof(phdr)); } char *filename; @@ -196,6 +198,10 @@ struct ObjFile { int fd; int elf_type; ElfW(Ehdr) elf_header; + + // PT_LOAD program header describing executable code. + // Normally we expect just one, but SWIFT binaries have two. + std::array phdr; }; // Build 4-way associative cache for symbols. Within each cache line, symbols @@ -1272,6 +1278,36 @@ static bool MaybeInitializeObjFile(ObjFile *obj) { ABSL_RAW_LOG(WARNING, "%s: failed to read elf header", obj->filename); return false; } + const int phnum = obj->elf_header.e_phnum; + const int phentsize = obj->elf_header.e_phentsize; + size_t phoff = obj->elf_header.e_phoff; + int num_executable_load_segments = 0; + for (int j = 0; j < phnum; j++) { + ElfW(Phdr) phdr; + if (!ReadFromOffsetExact(obj->fd, &phdr, sizeof(phdr), phoff)) { + ABSL_RAW_LOG(WARNING, "%s: failed to read program header %d", + obj->filename, j); + return false; + } + phoff += phentsize; + constexpr int rx = PF_X | PF_R; + if (phdr.p_type != PT_LOAD || (phdr.p_flags & rx) != rx) { + // Not a LOAD segment, or not executable code. + continue; + } + if (num_executable_load_segments < obj->phdr.size()) { + memcpy(&obj->phdr[num_executable_load_segments++], &phdr, sizeof(phdr)); + } else { + ABSL_RAW_LOG(WARNING, "%s: too many executable LOAD segments", + obj->filename); + break; + } + } + if (num_executable_load_segments == 0) { + // This object has no "r-x" LOAD segments. That's unexpected. + ABSL_RAW_LOG(WARNING, "%s: no executable LOAD segments", obj->filename); + return false; + } } return true; } @@ -1295,23 +1331,52 @@ const char *Symbolizer::GetSymbol(const void *const pc) { int fd = -1; if (obj != nullptr) { if (MaybeInitializeObjFile(obj)) { - if (obj->elf_type == ET_DYN && - reinterpret_cast(obj->start_addr) >= obj->offset) { + const size_t start_addr = reinterpret_cast(obj->start_addr); + if (obj->elf_type == ET_DYN && start_addr >= obj->offset) { // This object was relocated. // // For obj->offset > 0, adjust the relocation since a mapping at offset // X in the file will have a start address of [true relocation]+X. - relocation = reinterpret_cast(obj->start_addr) - obj->offset; + relocation = start_addr - obj->offset; + + // Note: some binaries have multiple "rx" LOAD segments. We must + // find the right one. + ElfW(Phdr) *phdr = nullptr; + for (int j = 0; j < obj->phdr.size(); j++) { + ElfW(Phdr) &p = obj->phdr[j]; + if (p.p_type != PT_LOAD) { + // We only expect PT_LOADs. This must be PT_NULL that we didn't + // write over (i.e. we exhausted all interesting PT_LOADs). + ABSL_RAW_CHECK(p.p_type == PT_NULL, "unexpected p_type"); + break; + } + if (pc < reinterpret_cast(start_addr + p.p_memsz)) { + phdr = &p; + break; + } + } + if (phdr == nullptr) { + // That's unexpected. Hope for the best. + ABSL_RAW_LOG( + WARNING, + "%s: unable to find LOAD segment for pc: %p, start_addr: %zx", + obj->filename, pc, start_addr); + } else { + // Adjust relocation in case phdr.p_vaddr != 0. + // This happens for binaries linked with `lld --rosegment`, and for + // binaries linked with BFD `ld -z separate-code`. + relocation -= phdr->p_vaddr - phdr->p_offset; + } } fd = obj->fd; - } - if (GetSymbolFromObjectFile(*obj, pc, relocation, symbol_buf_, - sizeof(symbol_buf_), tmp_buf_, - sizeof(tmp_buf_)) == SYMBOL_FOUND) { - // Only try to demangle the symbol name if it fit into symbol_buf_. - DemangleInplace(symbol_buf_, sizeof(symbol_buf_), tmp_buf_, - sizeof(tmp_buf_)); + if (GetSymbolFromObjectFile(*obj, pc, relocation, symbol_buf_, + sizeof(symbol_buf_), tmp_buf_, + sizeof(tmp_buf_)) == SYMBOL_FOUND) { + // Only try to demangle the symbol name if it fit into symbol_buf_. + DemangleInplace(symbol_buf_, sizeof(symbol_buf_), tmp_buf_, + sizeof(tmp_buf_)); + } } } else { #if ABSL_HAVE_VDSO_SUPPORT diff --git a/ci/linux_docker_containers.sh b/ci/linux_docker_containers.sh index 82a10ac6..b652071f 100644 --- a/ci/linux_docker_containers.sh +++ b/ci/linux_docker_containers.sh @@ -16,6 +16,6 @@ # Test scripts should source this file to get the identifiers. readonly LINUX_ALPINE_CONTAINER="gcr.io/google.com/absl-177019/alpine:20191016" -readonly LINUX_CLANG_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_clang-latest:20200401" +readonly LINUX_CLANG_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_clang-latest:20200706" readonly LINUX_GCC_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-latest:20200319" readonly LINUX_GCC_49_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-4.9:20191018" -- cgit v1.2.3 From 55c04eb9203a93db1c0816adddf3182b45da5384 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Mon, 13 Jul 2020 12:10:09 -0700 Subject: Export of internal Abseil changes -- 69b3ab092ee0fef3d27f589e709280c341f006c6 by Greg Falcon : Import of CCTZ from GitHub. PiperOrigin-RevId: 321005878 -- 3a4038cd0cea6455453a7ae82f2de7e91d7e2bc1 by Abseil Team : Google-internal changes only. PiperOrigin-RevId: 320994821 -- f9d9a93782924df6ffc351a271c239ca4bdff3c8 by Derek Mauro : Update Linux latest toolchains, most notably to GCC 10.1 This create a new "hybrid" docker image that includes the latest versions of both GCC and LLVM. Since the LLVM build targets Debian 10, but Debian 10 uses an older version of libstdc++ that doesn't have full C++20 support, the easiest solution is to use the GCC/Debian 10 base image from DockerHub and copy LLVM into it. This also includes fixes to get the build working with the new toolchains. PiperOrigin-RevId: 320991795 -- 43129cd66dc4439b36d85030800a3929f20d9f86 by Abseil Team : Rollback import of CCTZ from GitHub (breaks MSAN tests) - e87b391f0d10ae9c3d2e70e4a3633337d2c5e643 handle "slim" TZif files in TimeZoneInfo::ExtendTransitio... by Bradley White <14679271+devbww@users.noreply.github.com> PiperOrigin-RevId: 320978767 -- 2a343a55f297d433c1521920f0bd20ddd2dc71e8 by Derek Mauro : Use ABSL_HAVE_ATTRIBUTE in thread_annotations.h PiperOrigin-RevId: 320956378 -- f6f3e8333c9ef6e6441586be6587bbfb1c8c8127 by Gennadiy Rozental : Import of CCTZ from GitHub. PiperOrigin-RevId: 320952592 -- 3cc2bcce3533ac1233c0536232b07eea45fe8ed0 by Derek Mauro : Internal change PiperOrigin-RevId: 320862698 -- 4e22066476744609e42c475b55e3cbd874f04c39 by Gennadiy Rozental : Internal change PiperOrigin-RevId: 320461277 GitOrigin-RevId: 69b3ab092ee0fef3d27f589e709280c341f006c6 Change-Id: I36f547711e7078d52f2e0a1ff3f4c903056a2b9e --- WORKSPACE | 6 +- absl/BUILD.bazel | 5 +- absl/base/internal/low_level_scheduling.h | 28 +++ absl/base/thread_annotations.h | 128 ++++++---- .../container/fixed_array_exception_safety_test.cc | 3 +- absl/strings/internal/str_format/convert_test.cc | 3 +- absl/synchronization/mutex.cc | 33 ++- absl/time/internal/cctz/src/time_zone_info.cc | 257 +++++++++++---------- absl/time/internal/cctz/src/time_zone_info.h | 9 +- ci/linux_clang-latest_libstdcxx_bazel.sh | 3 +- ci/linux_docker_containers.sh | 4 +- 11 files changed, 291 insertions(+), 188 deletions(-) (limited to 'ci/linux_docker_containers.sh') diff --git a/WORKSPACE b/WORKSPACE index 1a1da6c5..96338199 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -20,9 +20,9 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # GoogleTest/GoogleMock framework. Used by most unit-tests. http_archive( name = "com_google_googletest", - urls = ["https://github.com/google/googletest/archive/011959aafddcd30611003de96cfd8d7a7685c700.zip"], # 2020-05-14T00:36:05Z - strip_prefix = "googletest-011959aafddcd30611003de96cfd8d7a7685c700", - sha256 = "6a5d7d63cd6e0ad2a7130471105a3b83799a7a2b14ef7ec8d742b54f01a4833c", + urls = ["https://github.com/google/googletest/archive/8567b09290fe402cf01923e2131c5635b8ed851b.zip"], # 2020-06-12T22:24:28Z + strip_prefix = "googletest-8567b09290fe402cf01923e2131c5635b8ed851b", + sha256 = "9a8a166eb6a56c7b3d7b19dc2c946fe4778fd6f21c7a12368ad3b836d8f1be48", ) # Google benchmark. diff --git a/absl/BUILD.bazel b/absl/BUILD.bazel index e45d15a5..1019ab5e 100644 --- a/absl/BUILD.bazel +++ b/absl/BUILD.bazel @@ -61,5 +61,8 @@ config_setting( config_setting( name = "wasm", - values = {"cpu": "wasm32"}, + values = { + "cpu": "wasm32", + }, + visibility = [":__subpackages__"], ) diff --git a/absl/base/internal/low_level_scheduling.h b/absl/base/internal/low_level_scheduling.h index ed0b4bfa..6ef79fbf 100644 --- a/absl/base/internal/low_level_scheduling.h +++ b/absl/base/internal/low_level_scheduling.h @@ -18,6 +18,7 @@ #ifndef ABSL_BASE_INTERNAL_LOW_LEVEL_SCHEDULING_H_ #define ABSL_BASE_INTERNAL_LOW_LEVEL_SCHEDULING_H_ +#include "absl/base/internal/raw_logging.h" #include "absl/base/internal/scheduling_mode.h" #include "absl/base/macros.h" @@ -29,6 +30,13 @@ extern "C" void __google_enable_rescheduling(bool disable_result); namespace absl { ABSL_NAMESPACE_BEGIN +class CondVar; +class Mutex; + +namespace synchronization_internal { +int MutexDelay(int32_t c, int mode); +} // namespace synchronization_internal + namespace base_internal { class SchedulingHelper; // To allow use of SchedulingGuard. @@ -76,9 +84,23 @@ class SchedulingGuard { bool disabled; }; + // A scoped helper to enable rescheduling temporarily. + // REQUIRES: destructor must run in same thread as constructor. + class ScopedEnable { + public: + ScopedEnable(); + ~ScopedEnable(); + + private: + int scheduling_disabled_depth_; + }; + // Access to SchedulingGuard is explicitly permitted. + friend class absl::CondVar; + friend class absl::Mutex; friend class SchedulingHelper; friend class SpinLock; + friend int absl::synchronization_internal::MutexDelay(int32_t c, int mode); SchedulingGuard(const SchedulingGuard&) = delete; SchedulingGuard& operator=(const SchedulingGuard&) = delete; @@ -100,6 +122,12 @@ inline void SchedulingGuard::EnableRescheduling(bool /* disable_result */) { return; } +inline SchedulingGuard::ScopedEnable::ScopedEnable() + : scheduling_disabled_depth_(0) {} +inline SchedulingGuard::ScopedEnable::~ScopedEnable() { + ABSL_RAW_CHECK(scheduling_disabled_depth_ == 0, "disable unused warning"); +} + } // namespace base_internal ABSL_NAMESPACE_END } // namespace absl diff --git a/absl/base/thread_annotations.h b/absl/base/thread_annotations.h index 6a7112df..e23fff1d 100644 --- a/absl/base/thread_annotations.h +++ b/absl/base/thread_annotations.h @@ -39,12 +39,6 @@ // TODO(mbonadei): Remove after the backward compatibility period. #include "absl/base/internal/thread_annotations.h" // IWYU pragma: export -#if defined(__clang__) -#define ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE(x) __attribute__((x)) -#else -#define ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE(x) // no-op -#endif - // ABSL_GUARDED_BY() // // Documents if a shared field or global variable needs to be protected by a @@ -62,8 +56,11 @@ // int p1_ ABSL_GUARDED_BY(mu_); // ... // }; -#define ABSL_GUARDED_BY(x) \ - ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE(guarded_by(x)) +#if ABSL_HAVE_ATTRIBUTE(guarded_by) +#define ABSL_GUARDED_BY(x) __attribute__((guarded_by(x))) +#else +#define ABSL_GUARDED_BY(x) +#endif // ABSL_PT_GUARDED_BY() // @@ -85,8 +82,11 @@ // // `q_`, guarded by `mu1_`, points to a shared memory location that is // // guarded by `mu2_`: // int *q_ ABSL_GUARDED_BY(mu1_) ABSL_PT_GUARDED_BY(mu2_); -#define ABSL_PT_GUARDED_BY(x) \ - ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE(pt_guarded_by(x)) +#if ABSL_HAVE_ATTRIBUTE(pt_guarded_by) +#define ABSL_PT_GUARDED_BY(x) __attribute__((pt_guarded_by(x))) +#else +#define ABSL_PT_GUARDED_BY(x) +#endif // ABSL_ACQUIRED_AFTER() / ABSL_ACQUIRED_BEFORE() // @@ -103,11 +103,17 @@ // // Mutex m1_; // Mutex m2_ ABSL_ACQUIRED_AFTER(m1_); -#define ABSL_ACQUIRED_AFTER(...) \ - ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE(acquired_after(__VA_ARGS__)) +#if ABSL_HAVE_ATTRIBUTE(acquired_after) +#define ABSL_ACQUIRED_AFTER(...) __attribute__((acquired_after(__VA_ARGS__))) +#else +#define ABSL_ACQUIRED_AFTER(...) +#endif -#define ABSL_ACQUIRED_BEFORE(...) \ - ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE(acquired_before(__VA_ARGS__)) +#if ABSL_HAVE_ATTRIBUTE(acquired_before) +#define ABSL_ACQUIRED_BEFORE(...) __attribute__((acquired_before(__VA_ARGS__))) +#else +#define ABSL_ACQUIRED_BEFORE(...) +#endif // ABSL_EXCLUSIVE_LOCKS_REQUIRED() / ABSL_SHARED_LOCKS_REQUIRED() // @@ -132,20 +138,30 @@ // // void foo() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu1, mu2) { ... } // void bar() const ABSL_SHARED_LOCKS_REQUIRED(mu1, mu2) { ... } -#define ABSL_EXCLUSIVE_LOCKS_REQUIRED(...) \ - ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE( \ - exclusive_locks_required(__VA_ARGS__)) +#if ABSL_HAVE_ATTRIBUTE(exclusive_locks_required) +#define ABSL_EXCLUSIVE_LOCKS_REQUIRED(...) \ + __attribute__((exclusive_locks_required(__VA_ARGS__))) +#else +#define ABSL_EXCLUSIVE_LOCKS_REQUIRED(...) +#endif +#if ABSL_HAVE_ATTRIBUTE(shared_locks_required) #define ABSL_SHARED_LOCKS_REQUIRED(...) \ - ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE(shared_locks_required(__VA_ARGS__)) + __attribute__((shared_locks_required(__VA_ARGS__))) +#else +#define ABSL_SHARED_LOCKS_REQUIRED(...) +#endif // ABSL_LOCKS_EXCLUDED() // // Documents the locks acquired in the body of the function. These locks // cannot be held when calling this function (as Abseil's `Mutex` locks are // non-reentrant). -#define ABSL_LOCKS_EXCLUDED(...) \ - ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE(locks_excluded(__VA_ARGS__)) +#if ABSL_HAVE_ATTRIBUTE(locks_excluded) +#define ABSL_LOCKS_EXCLUDED(...) __attribute__((locks_excluded(__VA_ARGS__))) +#else +#define ABSL_LOCKS_EXCLUDED(...) +#endif // ABSL_LOCK_RETURNED() // @@ -153,8 +169,7 @@ // a public getter method that returns a pointer to a private mutex should // be annotated with ABSL_LOCK_RETURNED. #if ABSL_HAVE_ATTRIBUTE(lock_returned) -#define ABSL_LOCK_RETURNED(x) \ - ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE(lock_returned(x)) +#define ABSL_LOCK_RETURNED(x) __attribute__((lock_returned(x))) #else #define ABSL_LOCK_RETURNED(x) #endif @@ -162,7 +177,11 @@ // ABSL_LOCKABLE // // Documents if a class/type is a lockable type (such as the `Mutex` class). -#define ABSL_LOCKABLE ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE(lockable) +#if ABSL_HAVE_ATTRIBUTE(lockable) +#define ABSL_LOCKABLE __attribute__((lockable)) +#else +#define ABSL_LOCKABLE +#endif // ABSL_SCOPED_LOCKABLE // @@ -171,30 +190,43 @@ // acquired, and the destructor should use `UNLOCK_FUNCTION()` with no // arguments; the analysis will assume that the destructor unlocks whatever the // constructor locked. -#define ABSL_SCOPED_LOCKABLE \ - ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE(scoped_lockable) +#if ABSL_HAVE_ATTRIBUTE(scoped_lockable) +#define ABSL_SCOPED_LOCKABLE __attribute__((scoped_lockable)) +#else +#define ABSL_SCOPED_LOCKABLE +#endif // ABSL_EXCLUSIVE_LOCK_FUNCTION() // // Documents functions that acquire a lock in the body of a function, and do // not release it. -#define ABSL_EXCLUSIVE_LOCK_FUNCTION(...) \ - ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE( \ - exclusive_lock_function(__VA_ARGS__)) +#if ABSL_HAVE_ATTRIBUTE(exclusive_lock_function) +#define ABSL_EXCLUSIVE_LOCK_FUNCTION(...) \ + __attribute__((exclusive_lock_function(__VA_ARGS__))) +#else +#define ABSL_EXCLUSIVE_LOCK_FUNCTION(...) +#endif // ABSL_SHARED_LOCK_FUNCTION() // // Documents functions that acquire a shared (reader) lock in the body of a // function, and do not release it. +#if ABSL_HAVE_ATTRIBUTE(shared_lock_function) #define ABSL_SHARED_LOCK_FUNCTION(...) \ - ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE(shared_lock_function(__VA_ARGS__)) + __attribute__((shared_lock_function(__VA_ARGS__))) +#else +#define ABSL_SHARED_LOCK_FUNCTION(...) +#endif // ABSL_UNLOCK_FUNCTION() // // Documents functions that expect a lock to be held on entry to the function, // and release it in the body of the function. -#define ABSL_UNLOCK_FUNCTION(...) \ - ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE(unlock_function(__VA_ARGS__)) +#if ABSL_HAVE_ATTRIBUTE(unlock_function) +#define ABSL_UNLOCK_FUNCTION(...) __attribute__((unlock_function(__VA_ARGS__))) +#else +#define ABSL_UNLOCK_FUNCTION(...) +#endif // ABSL_EXCLUSIVE_TRYLOCK_FUNCTION() / ABSL_SHARED_TRYLOCK_FUNCTION() // @@ -204,31 +236,49 @@ // success, or `false` for functions that return `false` on success. The second // argument specifies the mutex that is locked on success. If unspecified, this // mutex is assumed to be `this`. +#if ABSL_HAVE_ATTRIBUTE(exclusive_trylock_function) #define ABSL_EXCLUSIVE_TRYLOCK_FUNCTION(...) \ - ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE( \ - exclusive_trylock_function(__VA_ARGS__)) + __attribute__((exclusive_trylock_function(__VA_ARGS__))) +#else +#define ABSL_EXCLUSIVE_TRYLOCK_FUNCTION(...) +#endif -#define ABSL_SHARED_TRYLOCK_FUNCTION(...) \ - ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE( \ - shared_trylock_function(__VA_ARGS__)) +#if ABSL_HAVE_ATTRIBUTE(shared_trylock_function) +#define ABSL_SHARED_TRYLOCK_FUNCTION(...) \ + __attribute__((shared_trylock_function(__VA_ARGS__))) +#else +#define ABSL_SHARED_TRYLOCK_FUNCTION(...) +#endif // ABSL_ASSERT_EXCLUSIVE_LOCK() / ABSL_ASSERT_SHARED_LOCK() // // Documents functions that dynamically check to see if a lock is held, and fail // if it is not held. +#if ABSL_HAVE_ATTRIBUTE(assert_exclusive_lock) #define ABSL_ASSERT_EXCLUSIVE_LOCK(...) \ - ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE(assert_exclusive_lock(__VA_ARGS__)) + __attribute__((assert_exclusive_lock(__VA_ARGS__))) +#else +#define ABSL_ASSERT_EXCLUSIVE_LOCK(...) +#endif +#if ABSL_HAVE_ATTRIBUTE(assert_shared_lock) #define ABSL_ASSERT_SHARED_LOCK(...) \ - ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE(assert_shared_lock(__VA_ARGS__)) + __attribute__((assert_shared_lock(__VA_ARGS__))) +#else +#define ABSL_ASSERT_SHARED_LOCK(...) +#endif // ABSL_NO_THREAD_SAFETY_ANALYSIS // // Turns off thread safety checking within the body of a particular function. // This annotation is used to mark functions that are known to be correct, but // the locking behavior is more complicated than the analyzer can handle. +#if ABSL_HAVE_ATTRIBUTE(no_thread_safety_analysis) #define ABSL_NO_THREAD_SAFETY_ANALYSIS \ - ABSL_INTERNAL_THREAD_ANNOTATION_ATTRIBUTE(no_thread_safety_analysis) + __attribute__((no_thread_safety_analysis)) +#else +#define ABSL_NO_THREAD_SAFETY_ANALYSIS +#endif //------------------------------------------------------------------------------ // Tool-Supplied Annotations diff --git a/absl/container/fixed_array_exception_safety_test.cc b/absl/container/fixed_array_exception_safety_test.cc index a5bb009d..e5f59299 100644 --- a/absl/container/fixed_array_exception_safety_test.cc +++ b/absl/container/fixed_array_exception_safety_test.cc @@ -150,8 +150,7 @@ TEST(FixedArrayExceptionSafety, InitListConstructorWithAlloc) { template testing::AssertionResult ReadMemory(FixedArrT* fixed_arr) { - // Marked volatile to prevent optimization. Used for running asan tests. - volatile int sum = 0; + int sum = 0; for (const auto& thrower : *fixed_arr) { sum += thrower.Get(); } diff --git a/absl/strings/internal/str_format/convert_test.cc b/absl/strings/internal/str_format/convert_test.cc index 5ee5fbc9..634ee78b 100644 --- a/absl/strings/internal/str_format/convert_test.cc +++ b/absl/strings/internal/str_format/convert_test.cc @@ -1155,7 +1155,8 @@ TEST_F(FormatConvertTest, IntAsDouble) { {__LINE__, StrPrint("%.12a", dx), "%.12a"}, }; if (native_traits.hex_float_uses_minimal_precision_when_not_specified) { - expect.push_back({__LINE__, StrPrint("%12a", dx), "%12a"}); + Expectation ex = {__LINE__, StrPrint("%12a", dx), "%12a"}; + expect.push_back(ex); } for (const Expectation &e : expect) { SCOPED_TRACE(e.line); diff --git a/absl/synchronization/mutex.cc b/absl/synchronization/mutex.cc index c7968f06..aafeb674 100644 --- a/absl/synchronization/mutex.cc +++ b/absl/synchronization/mutex.cc @@ -59,6 +59,7 @@ using absl::base_internal::CurrentThreadIdentityIfPresent; using absl::base_internal::PerThreadSynch; +using absl::base_internal::SchedulingGuard; using absl::base_internal::ThreadIdentity; using absl::synchronization_internal::GetOrCreateCurrentThreadIdentity; using absl::synchronization_internal::GraphCycles; @@ -141,7 +142,9 @@ static const MutexGlobals& GetMutexGlobals() { namespace { enum DelayMode { AGGRESSIVE, GENTLE }; }; -static int Delay(int32_t c, DelayMode mode) { + +namespace synchronization_internal { +int MutexDelay(int32_t c, int mode) { // If this a uniprocessor, only yield/sleep. Otherwise, if the mode is // aggressive then spin many times before yielding. If the mode is // gentle then spin only a few times before yielding. Aggressive spinning is @@ -153,6 +156,7 @@ static int Delay(int32_t c, DelayMode mode) { // Spin. c++; } else { + SchedulingGuard::ScopedEnable enable_rescheduling; ABSL_TSAN_MUTEX_PRE_DIVERT(nullptr, 0); if (c == limit) { // Yield once. @@ -167,6 +171,7 @@ static int Delay(int32_t c, DelayMode mode) { } return c; } +} // namespace synchronization_internal // --------------------------Generic atomic ops // Ensure that "(*pv & bits) == bits" by doing an atomic update of "*pv" to @@ -1051,6 +1056,7 @@ static PerThreadSynch *DequeueAllWakeable(PerThreadSynch *head, // Try to remove thread s from the list of waiters on this mutex. // Does nothing if s is not on the waiter list. void Mutex::TryRemove(PerThreadSynch *s) { + SchedulingGuard::ScopedDisable disable_rescheduling; intptr_t v = mu_.load(std::memory_order_relaxed); // acquire spinlock & lock if ((v & (kMuWait | kMuSpin | kMuWriter | kMuReader)) == kMuWait && @@ -1115,7 +1121,7 @@ ABSL_XRAY_LOG_ARGS(1) void Mutex::Block(PerThreadSynch *s) { this->TryRemove(s); int c = 0; while (s->next != nullptr) { - c = Delay(c, GENTLE); + c = synchronization_internal::MutexDelay(c, GENTLE); this->TryRemove(s); } if (kDebugMode) { @@ -1894,6 +1900,7 @@ static void CheckForMutexCorruption(intptr_t v, const char* label) { } void Mutex::LockSlowLoop(SynchWaitParams *waitp, int flags) { + SchedulingGuard::ScopedDisable disable_rescheduling; int c = 0; intptr_t v = mu_.load(std::memory_order_relaxed); if ((v & kMuEvent) != 0) { @@ -1995,7 +2002,8 @@ void Mutex::LockSlowLoop(SynchWaitParams *waitp, int flags) { ABSL_RAW_CHECK( waitp->thread->waitp == nullptr || waitp->thread->suppress_fatal_errors, "detected illegal recursion into Mutex code"); - c = Delay(c, GENTLE); // delay, then try again + // delay, then try again + c = synchronization_internal::MutexDelay(c, GENTLE); } ABSL_RAW_CHECK( waitp->thread->waitp == nullptr || waitp->thread->suppress_fatal_errors, @@ -2013,6 +2021,7 @@ void Mutex::LockSlowLoop(SynchWaitParams *waitp, int flags) { // or it is in the process of blocking on a condition variable; it must requeue // itself on the mutex/condvar to wait for its condition to become true. ABSL_ATTRIBUTE_NOINLINE void Mutex::UnlockSlow(SynchWaitParams *waitp) { + SchedulingGuard::ScopedDisable disable_rescheduling; intptr_t v = mu_.load(std::memory_order_relaxed); this->AssertReaderHeld(); CheckForMutexCorruption(v, "Unlock"); @@ -2289,7 +2298,8 @@ ABSL_ATTRIBUTE_NOINLINE void Mutex::UnlockSlow(SynchWaitParams *waitp) { mu_.store(nv, std::memory_order_release); break; // out of for(;;)-loop } - c = Delay(c, AGGRESSIVE); // aggressive here; no one can proceed till we do + // aggressive here; no one can proceed till we do + c = synchronization_internal::MutexDelay(c, AGGRESSIVE); } // end of for(;;)-loop if (wake_list != kPerThreadSynchNull) { @@ -2328,6 +2338,7 @@ void Mutex::Trans(MuHow how) { // It will later acquire the mutex with high probability. Otherwise, we // enqueue thread w on this mutex. void Mutex::Fer(PerThreadSynch *w) { + SchedulingGuard::ScopedDisable disable_rescheduling; int c = 0; ABSL_RAW_CHECK(w->waitp->cond == nullptr, "Mutex::Fer while waiting on Condition"); @@ -2377,7 +2388,7 @@ void Mutex::Fer(PerThreadSynch *w) { return; } } - c = Delay(c, GENTLE); + c = synchronization_internal::MutexDelay(c, GENTLE); } } @@ -2426,6 +2437,7 @@ CondVar::~CondVar() { // Remove thread s from the list of waiters on this condition variable. void CondVar::Remove(PerThreadSynch *s) { + SchedulingGuard::ScopedDisable disable_rescheduling; intptr_t v; int c = 0; for (v = cv_.load(std::memory_order_relaxed);; @@ -2454,7 +2466,8 @@ void CondVar::Remove(PerThreadSynch *s) { std::memory_order_release); return; } else { - c = Delay(c, GENTLE); // try again after a delay + // try again after a delay + c = synchronization_internal::MutexDelay(c, GENTLE); } } } @@ -2487,7 +2500,7 @@ static void CondVarEnqueue(SynchWaitParams *waitp) { !cv_word->compare_exchange_weak(v, v | kCvSpin, std::memory_order_acquire, std::memory_order_relaxed)) { - c = Delay(c, GENTLE); + c = synchronization_internal::MutexDelay(c, GENTLE); v = cv_word->load(std::memory_order_relaxed); } ABSL_RAW_CHECK(waitp->thread->waitp == nullptr, "waiting when shouldn't be"); @@ -2586,6 +2599,7 @@ void CondVar::Wakeup(PerThreadSynch *w) { } void CondVar::Signal() { + SchedulingGuard::ScopedDisable disable_rescheduling; ABSL_TSAN_MUTEX_PRE_SIGNAL(nullptr, 0); intptr_t v; int c = 0; @@ -2618,7 +2632,7 @@ void CondVar::Signal() { ABSL_TSAN_MUTEX_POST_SIGNAL(nullptr, 0); return; } else { - c = Delay(c, GENTLE); + c = synchronization_internal::MutexDelay(c, GENTLE); } } ABSL_TSAN_MUTEX_POST_SIGNAL(nullptr, 0); @@ -2655,7 +2669,8 @@ void CondVar::SignalAll () { ABSL_TSAN_MUTEX_POST_SIGNAL(nullptr, 0); return; } else { - c = Delay(c, GENTLE); // try again after a delay + // try again after a delay + c = synchronization_internal::MutexDelay(c, GENTLE); } } ABSL_TSAN_MUTEX_POST_SIGNAL(nullptr, 0); diff --git a/absl/time/internal/cctz/src/time_zone_info.cc b/absl/time/internal/cctz/src/time_zone_info.cc index 665fb424..7ccda113 100644 --- a/absl/time/internal/cctz/src/time_zone_info.cc +++ b/absl/time/internal/cctz/src/time_zone_info.cc @@ -40,7 +40,6 @@ #include #include #include -#include #include #include #include @@ -83,6 +82,27 @@ const std::int_least32_t kSecsPerYear[2] = { 366 * kSecsPerDay, }; +// Convert a cctz::weekday to a POSIX TZ weekday number (0==Sun, ..., 6=Sat). +inline int ToPosixWeekday(weekday wd) { + switch (wd) { + case weekday::sunday: + return 0; + case weekday::monday: + return 1; + case weekday::tuesday: + return 2; + case weekday::wednesday: + return 3; + case weekday::thursday: + return 4; + case weekday::friday: + return 5; + case weekday::saturday: + return 6; + } + return 0; /*NOTREACHED*/ +} + // Single-byte, unsigned numeric values are encoded directly. inline std::uint_fast8_t Decode8(const char* cp) { return static_cast(*cp) & 0xff; @@ -188,15 +208,13 @@ bool TimeZoneInfo::ResetToBuiltinUTC(const seconds& offset) { tt.is_dst = false; tt.abbr_index = 0; - // We temporarily add some redundant, contemporary (2013 through 2023) + // We temporarily add some redundant, contemporary (2015 through 2025) // transitions for performance reasons. See TimeZoneInfo::LocalTime(). // TODO: Fix the performance issue and remove the extra transitions. transitions_.clear(); transitions_.reserve(12); for (const std::int_fast64_t unix_time : { - -(1LL << 59), // BIG_BANG - 1356998400LL, // 2013-01-01T00:00:00+00:00 - 1388534400LL, // 2014-01-01T00:00:00+00:00 + -(1LL << 59), // a "first half" transition 1420070400LL, // 2015-01-01T00:00:00+00:00 1451606400LL, // 2016-01-01T00:00:00+00:00 1483228800LL, // 2017-01-01T00:00:00+00:00 @@ -206,7 +224,8 @@ bool TimeZoneInfo::ResetToBuiltinUTC(const seconds& offset) { 1609459200LL, // 2021-01-01T00:00:00+00:00 1640995200LL, // 2022-01-01T00:00:00+00:00 1672531200LL, // 2023-01-01T00:00:00+00:00 - 2147483647LL, // 2^31 - 1 + 1704067200LL, // 2024-01-01T00:00:00+00:00 + 1735689600LL, // 2025-01-01T00:00:00+00:00 }) { Transition& tr(*transitions_.emplace(transitions_.end())); tr.unix_time = unix_time; @@ -217,8 +236,8 @@ bool TimeZoneInfo::ResetToBuiltinUTC(const seconds& offset) { default_transition_type_ = 0; abbreviations_ = FixedOffsetToAbbr(offset); - abbreviations_.append(1, '\0'); // add NUL - future_spec_.clear(); // never needed for a fixed-offset zone + abbreviations_.append(1, '\0'); + future_spec_.clear(); // never needed for a fixed-offset zone extended_ = false; tt.civil_max = LocalTime(seconds::max().count(), tt).cs; @@ -259,21 +278,6 @@ std::size_t TimeZoneInfo::Header::DataLength(std::size_t time_len) const { return len; } -// Check that the TransitionType has the expected offset/is_dst/abbreviation. -void TimeZoneInfo::CheckTransition(const std::string& name, - const TransitionType& tt, - std::int_fast32_t offset, bool is_dst, - const std::string& abbr) const { - if (tt.utc_offset != offset || tt.is_dst != is_dst || - &abbreviations_[tt.abbr_index] != abbr) { - std::clog << name << ": Transition" - << " offset=" << tt.utc_offset << "/" - << (tt.is_dst ? "DST" : "STD") - << "/abbr=" << &abbreviations_[tt.abbr_index] - << " does not match POSIX spec '" << future_spec_ << "'\n"; - } -} - // zic(8) can generate no-op transitions when a zone changes rules at an // instant when there is actually no discontinuity. So we check whether // two transitions have equivalent types (same offset/is_dst/abbr). @@ -282,117 +286,108 @@ bool TimeZoneInfo::EquivTransitions(std::uint_fast8_t tt1_index, if (tt1_index == tt2_index) return true; const TransitionType& tt1(transition_types_[tt1_index]); const TransitionType& tt2(transition_types_[tt2_index]); - if (tt1.is_dst != tt2.is_dst) return false; if (tt1.utc_offset != tt2.utc_offset) return false; + if (tt1.is_dst != tt2.is_dst) return false; if (tt1.abbr_index != tt2.abbr_index) return false; return true; } +// Find/make a transition type with these attributes. +bool TimeZoneInfo::GetTransitionType(std::int_fast32_t utc_offset, bool is_dst, + const std::string& abbr, + std::uint_fast8_t* index) { + std::size_t type_index = 0; + std::size_t abbr_index = abbreviations_.size(); + for (; type_index != transition_types_.size(); ++type_index) { + const TransitionType& tt(transition_types_[type_index]); + const char* tt_abbr = &abbreviations_[tt.abbr_index]; + if (tt_abbr == abbr) abbr_index = tt.abbr_index; + if (tt.utc_offset == utc_offset && tt.is_dst == is_dst) { + if (abbr_index == tt.abbr_index) break; // reuse + } + } + if (type_index > 255 || abbr_index > 255) { + // No index space (8 bits) available for a new type or abbreviation. + return false; + } + if (type_index == transition_types_.size()) { + TransitionType& tt(*transition_types_.emplace(transition_types_.end())); + tt.utc_offset = static_cast(utc_offset); + tt.is_dst = is_dst; + if (abbr_index == abbreviations_.size()) { + abbreviations_.append(abbr); + abbreviations_.append(1, '\0'); + } + tt.abbr_index = static_cast(abbr_index); + } + *index = static_cast(type_index); + return true; +} + // Use the POSIX-TZ-environment-variable-style string to handle times // in years after the last transition stored in the zoneinfo data. -void TimeZoneInfo::ExtendTransitions(const std::string& name, - const Header& hdr) { +bool TimeZoneInfo::ExtendTransitions() { extended_ = false; - bool extending = !future_spec_.empty(); + if (future_spec_.empty()) return true; // last transition prevails PosixTimeZone posix; - if (extending && !ParsePosixSpec(future_spec_, &posix)) { - std::clog << name << ": Failed to parse '" << future_spec_ << "'\n"; - extending = false; - } - - if (extending && posix.dst_abbr.empty()) { // std only - // The future specification should match the last/default transition, - // and that means that handling the future will fall out naturally. - std::uint_fast8_t index = default_transition_type_; - if (hdr.timecnt != 0) index = transitions_[hdr.timecnt - 1].type_index; - const TransitionType& tt(transition_types_[index]); - CheckTransition(name, tt, posix.std_offset, false, posix.std_abbr); - extending = false; - } - - if (extending && hdr.timecnt < 2) { - std::clog << name << ": Too few transitions for POSIX spec\n"; - extending = false; - } - - if (!extending) { - // Ensure that there is always a transition in the second half of the - // time line (the BIG_BANG transition is in the first half) so that the - // signed difference between a civil_second and the civil_second of its - // previous transition is always representable, without overflow. - const Transition& last(transitions_.back()); - if (last.unix_time < 0) { - const std::uint_fast8_t type_index = last.type_index; - Transition& tr(*transitions_.emplace(transitions_.end())); - tr.unix_time = 2147483647; // 2038-01-19T03:14:07+00:00 - tr.type_index = type_index; - } - return; // last transition wins + if (!ParsePosixSpec(future_spec_, &posix)) return false; + + // Find transition type for the future std specification. + std::uint_fast8_t std_ti; + if (!GetTransitionType(posix.std_offset, false, posix.std_abbr, &std_ti)) + return false; + + if (posix.dst_abbr.empty()) { // std only + // The future specification should match the last transition, and + // that means that handling the future will fall out naturally. + return EquivTransitions(transitions_.back().type_index, std_ti); } + // Find transition type for the future dst specification. + std::uint_fast8_t dst_ti; + if (!GetTransitionType(posix.dst_offset, true, posix.dst_abbr, &dst_ti)) + return false; + // Extend the transitions for an additional 400 years using the // future specification. Years beyond those can be handled by // mapping back to a cycle-equivalent year within that range. - // zic(8) should probably do this so that we don't have to. - // TODO: Reduce the extension by the number of compatible - // transitions already in place. - transitions_.reserve(hdr.timecnt + 400 * 2 + 1); - transitions_.resize(hdr.timecnt + 400 * 2); + // We may need two additional transitions for the current year. + transitions_.reserve(transitions_.size() + 400 * 2 + 2); extended_ = true; - // The future specification should match the last two transitions, - // and those transitions should have different is_dst flags. Note - // that nothing says the UTC offset used by the is_dst transition - // must be greater than that used by the !is_dst transition. (See - // Europe/Dublin, for example.) - const Transition* tr0 = &transitions_[hdr.timecnt - 1]; - const Transition* tr1 = &transitions_[hdr.timecnt - 2]; - const TransitionType* tt0 = &transition_types_[tr0->type_index]; - const TransitionType* tt1 = &transition_types_[tr1->type_index]; - const TransitionType& dst(tt0->is_dst ? *tt0 : *tt1); - const TransitionType& std(tt0->is_dst ? *tt1 : *tt0); - CheckTransition(name, dst, posix.dst_offset, true, posix.dst_abbr); - CheckTransition(name, std, posix.std_offset, false, posix.std_abbr); - - // Add the transitions to tr1 and back to tr0 for each extra year. - last_year_ = LocalTime(tr0->unix_time, *tt0).cs.year(); + const Transition& last(transitions_.back()); + const std::int_fast64_t last_time = last.unix_time; + const TransitionType& last_tt(transition_types_[last.type_index]); + last_year_ = LocalTime(last_time, last_tt).cs.year(); bool leap_year = IsLeap(last_year_); - const civil_day jan1(last_year_, 1, 1); - std::int_fast64_t jan1_time = civil_second(jan1) - civil_second(); - int jan1_weekday = (static_cast(get_weekday(jan1)) + 1) % 7; - Transition* tr = &transitions_[hdr.timecnt]; // next trans to fill - if (LocalTime(tr1->unix_time, *tt1).cs.year() != last_year_) { - // Add a single extra transition to align to a calendar year. - transitions_.resize(transitions_.size() + 1); - assert(tr == &transitions_[hdr.timecnt]); // no reallocation - const PosixTransition& pt1(tt0->is_dst ? posix.dst_end : posix.dst_start); - std::int_fast64_t tr1_offset = TransOffset(leap_year, jan1_weekday, pt1); - tr->unix_time = jan1_time + tr1_offset - tt0->utc_offset; - tr++->type_index = tr1->type_index; - tr0 = &transitions_[hdr.timecnt]; - tr1 = &transitions_[hdr.timecnt - 1]; - tt0 = &transition_types_[tr0->type_index]; - tt1 = &transition_types_[tr1->type_index]; - } - const PosixTransition& pt1(tt0->is_dst ? posix.dst_end : posix.dst_start); - const PosixTransition& pt0(tt0->is_dst ? posix.dst_start : posix.dst_end); - for (const year_t limit = last_year_ + 400; last_year_ < limit;) { - last_year_ += 1; // an additional year of generated transitions + const civil_second jan1(last_year_); + std::int_fast64_t jan1_time = jan1 - civil_second(); + int jan1_weekday = ToPosixWeekday(get_weekday(jan1)); + + Transition dst = {0, dst_ti, civil_second(), civil_second()}; + Transition std = {0, std_ti, civil_second(), civil_second()}; + for (const year_t limit = last_year_ + 400;; ++last_year_) { + auto dst_trans_off = TransOffset(leap_year, jan1_weekday, posix.dst_start); + auto std_trans_off = TransOffset(leap_year, jan1_weekday, posix.dst_end); + dst.unix_time = jan1_time + dst_trans_off - posix.std_offset; + std.unix_time = jan1_time + std_trans_off - posix.dst_offset; + const auto* ta = dst.unix_time < std.unix_time ? &dst : &std; + const auto* tb = dst.unix_time < std.unix_time ? &std : &dst; + if (last_time < tb->unix_time) { + if (last_time < ta->unix_time) transitions_.push_back(*ta); + transitions_.push_back(*tb); + } + if (last_year_ == limit) break; jan1_time += kSecsPerYear[leap_year]; jan1_weekday = (jan1_weekday + kDaysPerYear[leap_year]) % 7; - leap_year = !leap_year && IsLeap(last_year_); - std::int_fast64_t tr1_offset = TransOffset(leap_year, jan1_weekday, pt1); - tr->unix_time = jan1_time + tr1_offset - tt0->utc_offset; - tr++->type_index = tr1->type_index; - std::int_fast64_t tr0_offset = TransOffset(leap_year, jan1_weekday, pt0); - tr->unix_time = jan1_time + tr0_offset - tt1->utc_offset; - tr++->type_index = tr0->type_index; - } - assert(tr == &transitions_[0] + transitions_.size()); + leap_year = !leap_year && IsLeap(last_year_ + 1); + } + + return true; } -bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) { +bool TimeZoneInfo::Load(ZoneInfoSource* zip) { // Read and validate the header. tzhead tzh; if (zip->Read(&tzh, sizeof(tzh)) != sizeof(tzh)) return false; @@ -430,7 +425,7 @@ bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) { const char* bp = tbuf.data(); // Decode and validate the transitions. - transitions_.reserve(hdr.timecnt + 2); // We might add a couple. + transitions_.reserve(hdr.timecnt + 2); transitions_.resize(hdr.timecnt); for (std::size_t i = 0; i != hdr.timecnt; ++i) { transitions_[i].unix_time = (time_len == 4) ? Decode32(bp) : Decode64(bp); @@ -449,6 +444,7 @@ bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) { } // Decode and validate the transition types. + transition_types_.reserve(hdr.typecnt + 2); transition_types_.resize(hdr.typecnt); for (std::size_t i = 0; i != hdr.typecnt; ++i) { transition_types_[i].utc_offset = @@ -475,6 +471,7 @@ bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) { } // Copy all the abbreviations. + abbreviations_.reserve(hdr.charcnt + 10); abbreviations_.assign(bp, hdr.charcnt); bp += hdr.charcnt; @@ -525,19 +522,29 @@ bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) { transitions_.resize(hdr.timecnt); // Ensure that there is always a transition in the first half of the - // time line (the second half is handled in ExtendTransitions()) so that - // the signed difference between a civil_second and the civil_second of - // its previous transition is always representable, without overflow. - // A contemporary zic will usually have already done this for us. + // time line (the second half is handled below) so that the signed + // difference between a civil_second and the civil_second of its + // previous transition is always representable, without overflow. if (transitions_.empty() || transitions_.front().unix_time >= 0) { Transition& tr(*transitions_.emplace(transitions_.begin())); - tr.unix_time = -(1LL << 59); // see tz/zic.c "BIG_BANG" + tr.unix_time = -(1LL << 59); // -18267312070-10-26T17:01:52+00:00 tr.type_index = default_transition_type_; - hdr.timecnt += 1; } // Extend the transitions using the future specification. - ExtendTransitions(name, hdr); + if (!ExtendTransitions()) return false; + + // Ensure that there is always a transition in the second half of the + // time line (the first half is handled above) so that the signed + // difference between a civil_second and the civil_second of its + // previous transition is always representable, without overflow. + const Transition& last(transitions_.back()); + if (last.unix_time < 0) { + const std::uint_fast8_t type_index = last.type_index; + Transition& tr(*transitions_.emplace(transitions_.end())); + tr.unix_time = 2147483647; // 2038-01-19T03:14:07+00:00 + tr.type_index = type_index; + } // Compute the local civil time for each transition and the preceding // second. These will be used for reverse conversions in MakeTime(). @@ -723,7 +730,7 @@ bool TimeZoneInfo::Load(const std::string& name) { if (auto zip = AndroidZoneInfoSource::Open(name)) return zip; return nullptr; }); - return zip != nullptr && Load(name, zip.get()); + return zip != nullptr && Load(zip.get()); } // BreakTime() translation for a particular transition type. @@ -897,8 +904,8 @@ bool TimeZoneInfo::NextTransition(const time_point& tp, const Transition* begin = &transitions_[0]; const Transition* end = begin + transitions_.size(); if (begin->unix_time <= -(1LL << 59)) { - // Do not report the BIG_BANG found in recent zoneinfo data as it is - // really a sentinel, not a transition. See tz/zic.c. + // Do not report the BIG_BANG found in some zoneinfo data as it is + // really a sentinel, not a transition. See pre-2018f tz/zic.c. ++begin; } std::int_fast64_t unix_time = ToUnixSeconds(tp); @@ -923,8 +930,8 @@ bool TimeZoneInfo::PrevTransition(const time_point& tp, const Transition* begin = &transitions_[0]; const Transition* end = begin + transitions_.size(); if (begin->unix_time <= -(1LL << 59)) { - // Do not report the BIG_BANG found in recent zoneinfo data as it is - // really a sentinel, not a transition. See tz/zic.c. + // Do not report the BIG_BANG found in some zoneinfo data as it is + // really a sentinel, not a transition. See pre-2018f tz/zic.c. ++begin; } std::int_fast64_t unix_time = ToUnixSeconds(tp); diff --git a/absl/time/internal/cctz/src/time_zone_info.h b/absl/time/internal/cctz/src/time_zone_info.h index 2a10c06c..068e34be 100644 --- a/absl/time/internal/cctz/src/time_zone_info.h +++ b/absl/time/internal/cctz/src/time_zone_info.h @@ -95,15 +95,14 @@ class TimeZoneInfo : public TimeZoneIf { std::size_t DataLength(std::size_t time_len) const; }; - void CheckTransition(const std::string& name, const TransitionType& tt, - std::int_fast32_t offset, bool is_dst, - const std::string& abbr) const; + bool GetTransitionType(std::int_fast32_t utc_offset, bool is_dst, + const std::string& abbr, std::uint_fast8_t* index); bool EquivTransitions(std::uint_fast8_t tt1_index, std::uint_fast8_t tt2_index) const; - void ExtendTransitions(const std::string& name, const Header& hdr); + bool ExtendTransitions(); bool ResetToBuiltinUTC(const seconds& offset); - bool Load(const std::string& name, ZoneInfoSource* zip); + bool Load(ZoneInfoSource* zip); // Helpers for BreakTime() and MakeTime(). time_zone::absolute_lookup LocalTime(std::int_fast64_t unix_time, diff --git a/ci/linux_clang-latest_libstdcxx_bazel.sh b/ci/linux_clang-latest_libstdcxx_bazel.sh index 0192ee49..4e490676 100755 --- a/ci/linux_clang-latest_libstdcxx_bazel.sh +++ b/ci/linux_clang-latest_libstdcxx_bazel.sh @@ -71,15 +71,16 @@ for std in ${STD}; do -e CC="/opt/llvm/clang/bin/clang" \ -e BAZEL_COMPILER="llvm" \ -e BAZEL_CXXOPTS="-std=${std}" \ - -e CPLUS_INCLUDE_PATH="/usr/include/c++/8" \ ${DOCKER_EXTRA_ARGS:-} \ ${DOCKER_CONTAINER} \ /usr/local/bin/bazel test ... \ --compilation_mode="${compilation_mode}" \ + --copt="--gcc-toolchain=/usr/local" \ --copt="${exceptions_mode}" \ --copt=-Werror \ --define="absl=1" \ --keep_going \ + --linkopt="--gcc-toolchain=/usr/local" \ --show_timestamps \ --test_env="GTEST_INSTALL_FAILURE_SIGNAL_HANDLER=1" \ --test_env="TZDIR=/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo" \ diff --git a/ci/linux_docker_containers.sh b/ci/linux_docker_containers.sh index b652071f..483ce2a2 100644 --- a/ci/linux_docker_containers.sh +++ b/ci/linux_docker_containers.sh @@ -16,6 +16,6 @@ # Test scripts should source this file to get the identifiers. readonly LINUX_ALPINE_CONTAINER="gcr.io/google.com/absl-177019/alpine:20191016" -readonly LINUX_CLANG_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_clang-latest:20200706" -readonly LINUX_GCC_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-latest:20200319" +readonly LINUX_CLANG_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20200710" +readonly LINUX_GCC_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20200710" readonly LINUX_GCC_49_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-4.9:20191018" -- cgit v1.2.3 From f2c9c663db28a8a898c1fc8c8e06ab9b93eb5610 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Wed, 9 Sep 2020 19:13:17 -0700 Subject: Export of internal Abseil changes -- cfb567ed02096320663d882d2c0c2fb7db7af1e4 by Derek Mauro : Upgrade to GCC 10.2.0, Bazel 3.5.0, and CMake 3.18.2 PiperOrigin-RevId: 330847323 -- 5dcb9ce14d92315163079366a91c43cbd5184ea4 by Evan Brown : Optimize equal_range() by avoiding the call to upper_bound() when possible. We need to support heterogeneous comparators that have different behavior when comparing key_type to non-key_type. See the new test. Also update the comment for `key_compare_to_adapter`. PiperOrigin-RevId: 330794444 -- 744405dbda5513527d74094a5c3b9db1e0927693 by Gennadiy Rozental : Introduce trampoline for friend access to avoid friending routines and classes from different namespace. PiperOrigin-RevId: 330773156 -- a195d1226576f8a7bb5671f3e42d1021b827fad9 by Abseil Team : Fix an incorrect version number test for std::variant availability in tvOs. PiperOrigin-RevId: 330759480 -- 58b02eb9159a577953676d9928cb26b30068b847 by Derek Mauro : Use c++20 instead of c++2a now that it is supported by GCC PiperOrigin-RevId: 330559797 GitOrigin-RevId: cfb567ed02096320663d882d2c0c2fb7db7af1e4 Change-Id: I0e0d68409c95da42f5609920155ba5694ade8df0 --- absl/base/config.h | 4 +-- absl/container/btree_test.cc | 34 +++++++++++++++++++ absl/container/internal/btree.h | 54 +++++++++++++++++++++++++------ absl/container/internal/btree_container.h | 2 ++ absl/flags/flag.h | 20 ++++++++---- absl/flags/internal/flag.h | 38 ++++++++++++---------- ci/linux_docker_containers.sh | 4 +-- ci/linux_gcc-latest_libstdcxx_bazel.sh | 2 +- ci/linux_gcc-latest_libstdcxx_cmake.sh | 2 +- 9 files changed, 121 insertions(+), 39 deletions(-) (limited to 'ci/linux_docker_containers.sh') diff --git a/absl/base/config.h b/absl/base/config.h index b1e095d3..c1d0494e 100644 --- a/absl/base/config.h +++ b/absl/base/config.h @@ -474,9 +474,9 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' || (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && \ __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 120000) || \ (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && \ - __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 120000) || \ + __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 50000) || \ (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && \ - __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 50000)) + __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 120000)) #define ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE 1 #else #define ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE 0 diff --git a/absl/container/btree_test.cc b/absl/container/btree_test.cc index 43704206..1bfa0c20 100644 --- a/absl/container/btree_test.cc +++ b/absl/container/btree_test.cc @@ -2580,6 +2580,40 @@ TEST(Btree, NodeHandleMutableKeyAccess) { } #endif +struct MultiKey { + int i1; + int i2; +}; + +struct MultiKeyComp { + using is_transparent = void; + bool operator()(const MultiKey a, const MultiKey b) const { + if (a.i1 != b.i1) return a.i1 < b.i1; + return a.i2 < b.i2; + } + bool operator()(const int a, const MultiKey b) const { return a < b.i1; } + bool operator()(const MultiKey a, const int b) const { return a.i1 < b; } +}; + +// Test that when there's a heterogeneous comparator that behaves differently +// for some heterogeneous operators, we get equal_range() right. +TEST(Btree, MultiKeyEqualRange) { + absl::btree_set set; + + for (int i = 0; i < 100; ++i) { + for (int j = 0; j < 100; ++j) { + set.insert({i, j}); + } + } + + for (int i = 0; i < 100; ++i) { + auto equal_range = set.equal_range(i); + EXPECT_EQ(equal_range.first->i1, i); + EXPECT_EQ(equal_range.first->i2, 0); + EXPECT_EQ(std::distance(equal_range.first, equal_range.second), 100) << i; + } +} + } // namespace } // namespace container_internal ABSL_NAMESPACE_END diff --git a/absl/container/internal/btree.h b/absl/container/internal/btree.h index 5986bb21..002ccc1e 100644 --- a/absl/container/internal/btree.h +++ b/absl/container/internal/btree.h @@ -137,15 +137,14 @@ struct StringBtreeDefaultGreater { }; // A helper class to convert a boolean comparison into a three-way "compare-to" -// comparison that returns a negative value to indicate less-than, zero to -// indicate equality and a positive value to indicate greater-than. This helper +// comparison that returns an `absl::weak_ordering`. This helper // class is specialized for less, greater, // less, greater, less, and // greater. // // key_compare_to_adapter is provided so that btree users // automatically get the more efficient compare-to code when using common -// google string types with common comparison functors. +// Abseil string types with common comparison functors. // These string-like specializations also turn on heterogeneous lookup by // default. template @@ -189,6 +188,9 @@ struct common_params { // If Compare is a common comparator for a string-like type, then we adapt it // to use heterogeneous lookup and to be a key-compare-to comparator. using key_compare = typename key_compare_to_adapter::type; + // True when key_compare has been adapted to StringBtreeDefault{Less,Greater}. + using is_key_compare_adapted = + absl::negation>; // A type which indicates if we have a key-compare-to functor or a plain old // key-compare functor. using is_key_compare_to = btree_is_key_compare_to; @@ -1015,6 +1017,8 @@ class btree { using is_key_compare_to = typename Params::is_key_compare_to; using init_type = typename Params::init_type; using field_type = typename node_type::field_type; + using is_multi_container = typename Params::is_multi_container; + using is_key_compare_adapted = typename Params::is_key_compare_adapted; // We use a static empty node for the root/leftmost/rightmost of empty btrees // in order to avoid branching in begin()/end(). @@ -1164,15 +1168,13 @@ class btree { } // Finds the range of values which compare equal to key. The first member of - // the returned pair is equal to lower_bound(key). The second member pair of - // the pair is equal to upper_bound(key). + // the returned pair is equal to lower_bound(key). The second member of the + // pair is equal to upper_bound(key). template - std::pair equal_range(const K &key) { - return {lower_bound(key), upper_bound(key)}; - } + std::pair equal_range(const K &key); template std::pair equal_range(const K &key) const { - return {lower_bound(key), upper_bound(key)}; + return const_cast(this)->equal_range(key); } // Inserts a value into the btree only if it does not already exist. The @@ -1890,6 +1892,40 @@ btree

::btree(const btree &other) copy_or_move_values_in_order(&other); } +template +template +auto btree

::equal_range(const K &key) -> std::pair { + const iterator lower = lower_bound(key); + // TODO(ezb): we should be able to avoid this comparison when there's a + // three-way comparator. + if (lower == end() || compare_keys(key, lower.key())) return {lower, lower}; + + const iterator next = std::next(lower); + // When the comparator is heterogeneous, we can't assume that comparison with + // non-`key_type` will be equivalent to `key_type` comparisons so there + // could be multiple equivalent keys even in a unique-container. But for + // heterogeneous comparisons from the default string adapted comparators, we + // don't need to worry about this. + if (!is_multi_container::value && + (std::is_same::value || is_key_compare_adapted::value)) { + // The next iterator after lower must point to a key greater than `key`. + // Note: if this assert fails, then it may indicate that the comparator does + // not meet the equivalence requirements for Compare + // (see https://en.cppreference.com/w/cpp/named_req/Compare). + assert(next == end() || compare_keys(key, next.key())); + return {lower, next}; + } + // Try once more to avoid the call to upper_bound() if there's only one + // equivalent key. This should prevent all calls to upper_bound() in cases of + // unique-containers with heterogeneous comparators in which all comparison + // operators are equivalent. + if (next == end() || compare_keys(key, next.key())) return {lower, next}; + + // In this case, we need to call upper_bound() to avoid worst case O(N) + // behavior if we were to iterate over equal keys. + return {lower, upper_bound(key)}; +} + template template auto btree

::insert_unique(const K &key, Args &&... args) diff --git a/absl/container/internal/btree_container.h b/absl/container/internal/btree_container.h index 3b2e8a9e..137614f8 100644 --- a/absl/container/internal/btree_container.h +++ b/absl/container/internal/btree_container.h @@ -314,6 +314,8 @@ class btree_set_container : public btree_container { } // Deletion routines. + // TODO(ezb): we should support heterogeneous comparators that have different + // behavior for K!=key_type. template size_type erase(const key_arg &key) { return this->tree_.erase_unique(key); diff --git a/absl/flags/flag.h b/absl/flags/flag.h index cdac545b..a9cb2b79 100644 --- a/absl/flags/flag.h +++ b/absl/flags/flag.h @@ -144,11 +144,17 @@ class Flag { inline bool IsOfType() const { return GetImpl().template IsOfType(); } - T Get() const { return GetImpl().Get(); } - void Set(const T& v) { GetImpl().Set(v); } + T Get() const { + return flags_internal::FlagImplPeer::InvokeGet(GetImpl()); + } + void Set(const T& v) { + flags_internal::FlagImplPeer::InvokeSet(GetImpl(), v); + } void InvokeCallback() { GetImpl().InvokeCallback(); } - const CommandLineFlag& Reflect() const { return GetImpl().Reflect(); } + const CommandLineFlag& Reflect() const { + return flags_internal::FlagImplPeer::InvokeReflect(GetImpl()); + } // The data members are logically private, but they need to be public for // this to be an aggregate type. @@ -180,7 +186,7 @@ class Flag { // std::string first_name = absl::GetFlag(FLAGS_firstname); template ABSL_MUST_USE_RESULT T GetFlag(const absl::Flag& flag) { - return flag.Get(); + return flags_internal::FlagImplPeer::InvokeGet(flag); } // SetFlag() @@ -192,7 +198,7 @@ ABSL_MUST_USE_RESULT T GetFlag(const absl::Flag& flag) { // but especially within performance-critical code. template void SetFlag(absl::Flag* flag, const T& v) { - flag->Set(v); + flags_internal::FlagImplPeer::InvokeSet(*flag, v); } // Overload of `SetFlag()` to allow callers to pass in a value that is @@ -201,7 +207,7 @@ void SetFlag(absl::Flag* flag, const T& v) { template void SetFlag(absl::Flag* flag, const V& v) { T value(v); - flag->Set(value); + flags_internal::FlagImplPeer::InvokeSet(*flag, value); } // GetFlagReflectionHandle() @@ -216,7 +222,7 @@ void SetFlag(absl::Flag* flag, const V& v) { template const CommandLineFlag& GetFlagReflectionHandle(const absl::Flag& f) { - return f.Reflect(); + return flags_internal::FlagImplPeer::InvokeReflect(f); } ABSL_NAMESPACE_END diff --git a/absl/flags/internal/flag.h b/absl/flags/internal/flag.h index 89e43ad7..370d8a02 100644 --- a/absl/flags/internal/flag.h +++ b/absl/flags/internal/flag.h @@ -632,20 +632,9 @@ class Flag { std::string CurrentValue() const { return impl_.CurrentValue(); } private: - template + template friend class FlagRegistrar; - -#if !defined(_MSC_VER) || defined(__clang__) - template - friend U absl::GetFlag(const flags_internal::Flag& flag); - template - friend void absl::SetFlag(flags_internal::Flag* flag, const U& v); - template - friend void absl::SetFlag(flags_internal::Flag* flag, const V& v); -#else - template - friend class absl::Flag; -#endif + friend class FlagImplPeer; T Get() const { // See implementation notes in CommandLineFlag::Get(). @@ -668,10 +657,6 @@ class Flag { impl_.Write(&v); } - template - friend const CommandLineFlag& absl::GetFlagReflectionHandle( - const absl::Flag& f); - // Access to the reflection. const CommandLineFlag& Reflect() const { return impl_; } @@ -683,6 +668,25 @@ class Flag { FlagValue value_; }; +/////////////////////////////////////////////////////////////////////////////// +// Trampoline for friend access + +class FlagImplPeer { + public: + template + static T InvokeGet(const FlagType& flag) { + return flag.Get(); + } + template + static void InvokeSet(FlagType& flag, const T& v) { + flag.Set(v); + } + template + static const CommandLineFlag& InvokeReflect(const FlagType& f) { + return f.Reflect(); + } +}; + /////////////////////////////////////////////////////////////////////////////// // Implementation of Flag value specific operations routine. template diff --git a/ci/linux_docker_containers.sh b/ci/linux_docker_containers.sh index 483ce2a2..e42fa58b 100644 --- a/ci/linux_docker_containers.sh +++ b/ci/linux_docker_containers.sh @@ -16,6 +16,6 @@ # Test scripts should source this file to get the identifiers. readonly LINUX_ALPINE_CONTAINER="gcr.io/google.com/absl-177019/alpine:20191016" -readonly LINUX_CLANG_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20200710" -readonly LINUX_GCC_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20200710" +readonly LINUX_CLANG_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20200909" +readonly LINUX_GCC_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20200909" readonly LINUX_GCC_49_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-4.9:20191018" diff --git a/ci/linux_gcc-latest_libstdcxx_bazel.sh b/ci/linux_gcc-latest_libstdcxx_bazel.sh index 3ec02262..cd15f710 100755 --- a/ci/linux_gcc-latest_libstdcxx_bazel.sh +++ b/ci/linux_gcc-latest_libstdcxx_bazel.sh @@ -25,7 +25,7 @@ if [[ -z ${ABSEIL_ROOT:-} ]]; then fi if [[ -z ${STD:-} ]]; then - STD="c++11 c++14 c++17 c++2a" + STD="c++11 c++14 c++17 c++20" fi if [[ -z ${COMPILATION_MODE:-} ]]; then diff --git a/ci/linux_gcc-latest_libstdcxx_cmake.sh b/ci/linux_gcc-latest_libstdcxx_cmake.sh index db5f6918..1ba02b26 100755 --- a/ci/linux_gcc-latest_libstdcxx_cmake.sh +++ b/ci/linux_gcc-latest_libstdcxx_cmake.sh @@ -27,7 +27,7 @@ if [[ -z ${ABSEIL_ROOT:-} ]]; then fi if [[ -z ${ABSL_CMAKE_CXX_STANDARDS:-} ]]; then - ABSL_CMAKE_CXX_STANDARDS="11 14 17" + ABSL_CMAKE_CXX_STANDARDS="11 14 17 20" fi if [[ -z ${ABSL_CMAKE_BUILD_TYPES:-} ]]; then -- cgit v1.2.3 From e63a5a61045e516b7b3dbca090e2b9ff1d057e46 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Thu, 8 Oct 2020 08:27:41 -0700 Subject: Export of internal Abseil changes -- 430bda42820b619b346201bc42769d014228e825 by Gennadiy Rozental : Update version for CMake and Bazel PiperOrigin-RevId: 336089889 -- 0a36f989acb0e6f7d2f04039c600b0934c44ffed by Abseil Team : changes how non-equality is evaluated absl::c_mismatch is based on std::mismatch, which requires that its iterators' reference types meet the requirements of Cpp17EqualityComparable[1]. The previous CL mistakenly wrote absl::c_mismatch using `*first1 != *first2` which assumes that the reference types model std::equality_comparable[2] (which was only added in C++20). This CL reverts that behaviour. [0]: http://wg21.link/mismatch [1]: http://wg21.link/utility.arg.requirements#tab:cpp17.equalitycomparable [2]: http://wg21.link/concept.equalitycomparable PiperOrigin-RevId: 335897465 -- 7cb902f079838081a15f8b72e0cef46beab653f2 by Derek Mauro : Disable a raw_hash_map_allocator.cc test that doesn't build due to a noexcept bug in gcc 5.4 and 5.5 PiperOrigin-RevId: 335876843 GitOrigin-RevId: 430bda42820b619b346201bc42769d014228e825 Change-Id: I94d5b8e03e0a91d81923aa831f6f63c625e0b836 --- absl/algorithm/container.h | 4 +++- absl/algorithm/container_test.cc | 11 +++++++++++ absl/container/internal/raw_hash_set_allocator_test.cc | 4 ++++ ci/linux_docker_containers.sh | 4 ++-- 4 files changed, 20 insertions(+), 3 deletions(-) (limited to 'ci/linux_docker_containers.sh') diff --git a/absl/algorithm/container.h b/absl/algorithm/container.h index 3c4fd733..bb3d1c7c 100644 --- a/absl/algorithm/container.h +++ b/absl/algorithm/container.h @@ -351,7 +351,9 @@ c_mismatch(C1& c1, C2& c2) { auto last2 = container_algorithm_internal::c_end(c2); for (; first1 != last1 && first2 != last2; ++first1, (void)++first2) { - if (*first1 != *first2) { + // Negates equality because Cpp17EqualityComparable doesn't require clients + // to overload both `operator==` and `operator!=`. + if (!(*first1 == *first2)) { break; } } diff --git a/absl/algorithm/container_test.cc b/absl/algorithm/container_test.cc index fb940560..605afc80 100644 --- a/absl/algorithm/container_test.cc +++ b/absl/algorithm/container_test.cc @@ -183,6 +183,17 @@ TEST_F(NonMutatingTest, Mismatch) { EXPECT_EQ(result.first, sequence_.end()); EXPECT_EQ(result.second, std::prev(vector_.end())); } + { + struct NoNotEquals { + constexpr bool operator==(NoNotEquals) const { return true; } + constexpr bool operator!=(NoNotEquals) const = delete; + }; + std::vector first; + std::list second; + + // Check this still compiles. + absl::c_mismatch(first, second); + } } TEST_F(NonMutatingTest, MismatchWithPredicate) { diff --git a/absl/container/internal/raw_hash_set_allocator_test.cc b/absl/container/internal/raw_hash_set_allocator_test.cc index 1a036085..e73f53fd 100644 --- a/absl/container/internal/raw_hash_set_allocator_test.cc +++ b/absl/container/internal/raw_hash_set_allocator_test.cc @@ -466,6 +466,9 @@ class PAlloc { size_t id_ = std::numeric_limits::max(); }; +// This doesn't compile with GCC 5.4 and 5.5 due to a bug in noexcept handing. +#if !defined(__GNUC__) || __GNUC__ != 5 || (__GNUC_MINOR__ != 4 && \ + __GNUC_MINOR__ != 5) TEST(NoPropagateOn, Swap) { using PA = PAlloc; using Table = raw_hash_set, PA>; @@ -475,6 +478,7 @@ TEST(NoPropagateOn, Swap) { EXPECT_EQ(t1.get_allocator(), PA(1)); EXPECT_EQ(t2.get_allocator(), PA(2)); } +#endif TEST(NoPropagateOn, CopyConstruct) { using PA = PAlloc; diff --git a/ci/linux_docker_containers.sh b/ci/linux_docker_containers.sh index e42fa58b..752b5729 100644 --- a/ci/linux_docker_containers.sh +++ b/ci/linux_docker_containers.sh @@ -16,6 +16,6 @@ # Test scripts should source this file to get the identifiers. readonly LINUX_ALPINE_CONTAINER="gcr.io/google.com/absl-177019/alpine:20191016" -readonly LINUX_CLANG_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20200909" -readonly LINUX_GCC_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20200909" +readonly LINUX_CLANG_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20201008" +readonly LINUX_GCC_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20201008" readonly LINUX_GCC_49_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-4.9:20191018" -- cgit v1.2.3 From 1e3d25b2657228bd691ee938cfd37d487f48054b Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Fri, 23 Oct 2020 12:31:49 -0700 Subject: Export of internal Abseil changes -- 017c3924d21132085bc20c9be0ae469bfbf2c56c by Gennadiy Rozental : Import of CCTZ from GitHub. PiperOrigin-RevId: 338723934 -- 8b08c23d7b05232e283b1388cee3eb5bebc2d9c4 by Derek Mauro : Add script to test GCC floor (the minimum version of GCC we support, currently the GCC 5 series) PiperOrigin-RevId: 338708581 -- afa440ac7c843126b4f99b89ebc071dda1d85a4d by Abseil Team : Fix typo in documentation of StatusOr::value_or() ('of' -> 'if'). PiperOrigin-RevId: 338690089 -- 97d5008865327fc36b942b96de0d0cacfb909df5 by Derek Mauro : Import of CCTZ from GitHub. PiperOrigin-RevId: 338568224 -- da5e09a7fedb3217329465d9206b7cbc6677176b by Abseil Team : Add `absl_btree_prefer_linear_node_search` Allow keys of `btree_set`, `btree_map`, `btree_multiset`, and `btree_multimap` to opt-in to linear search (instead of binary search). Linear search was used previously for arithmetic types with `key_compare` of `std::greater` or `std::less`. For example, this would be useful for key types that wrap an integer and define their own cheap `operator<()`. ``` class K { public: using absl_btree_prefer_linear_node_search = std::true_type; ... private: friend bool operator<(K a, K b) { return a.k_ < b.k_; } int k_; }; absl::btree_map m; // Uses linear search assert((absl::btree_map::testonly_uses_linear_node_search())); ``` PiperOrigin-RevId: 338476553 -- c56ead7ce6b0a5ad32e3a42904c686448a69451e by Gennadiy Rozental : Import of CCTZ from GitHub. PiperOrigin-RevId: 338419417 GitOrigin-RevId: 017c3924d21132085bc20c9be0ae469bfbf2c56c Change-Id: I1199f3ae917280a3ef20ccc6038abbe34d96ec0b --- absl/container/btree_test.cc | 64 +++++++++++++++ absl/container/internal/btree.h | 45 ++++++++++- absl/status/statusor.h | 2 +- .../internal/cctz/include/cctz/civil_time_detail.h | 18 ++--- absl/time/internal/cctz/testdata/version | 2 +- .../internal/cctz/testdata/zoneinfo/Africa/Abidjan | Bin 148 -> 130 bytes .../internal/cctz/testdata/zoneinfo/Africa/Accra | Bin 816 -> 556 bytes .../cctz/testdata/zoneinfo/Africa/Addis_Ababa | Bin 251 -> 182 bytes .../internal/cctz/testdata/zoneinfo/Africa/Algiers | Bin 735 -> 470 bytes .../internal/cctz/testdata/zoneinfo/Africa/Asmara | Bin 251 -> 182 bytes .../internal/cctz/testdata/zoneinfo/Africa/Asmera | Bin 251 -> 182 bytes .../internal/cctz/testdata/zoneinfo/Africa/Bamako | Bin 148 -> 130 bytes .../internal/cctz/testdata/zoneinfo/Africa/Bangui | Bin 149 -> 131 bytes .../internal/cctz/testdata/zoneinfo/Africa/Banjul | Bin 148 -> 130 bytes .../internal/cctz/testdata/zoneinfo/Africa/Bissau | Bin 194 -> 149 bytes .../cctz/testdata/zoneinfo/Africa/Blantyre | Bin 149 -> 131 bytes .../cctz/testdata/zoneinfo/Africa/Brazzaville | Bin 149 -> 131 bytes .../cctz/testdata/zoneinfo/Africa/Bujumbura | Bin 149 -> 131 bytes .../internal/cctz/testdata/zoneinfo/Africa/Cairo | Bin 1955 -> 1276 bytes .../cctz/testdata/zoneinfo/Africa/Casablanca | Bin 2429 -> 1919 bytes .../internal/cctz/testdata/zoneinfo/Africa/Ceuta | Bin 2036 -> 562 bytes .../internal/cctz/testdata/zoneinfo/Africa/Conakry | Bin 148 -> 130 bytes .../internal/cctz/testdata/zoneinfo/Africa/Dakar | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/Africa/Dar_es_Salaam | Bin 251 -> 182 bytes .../cctz/testdata/zoneinfo/Africa/Djibouti | Bin 251 -> 182 bytes .../internal/cctz/testdata/zoneinfo/Africa/Douala | Bin 149 -> 131 bytes .../cctz/testdata/zoneinfo/Africa/El_Aaiun | Bin 2295 -> 1830 bytes .../cctz/testdata/zoneinfo/Africa/Freetown | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/Africa/Gaborone | Bin 149 -> 131 bytes .../internal/cctz/testdata/zoneinfo/Africa/Harare | Bin 149 -> 131 bytes .../cctz/testdata/zoneinfo/Africa/Johannesburg | Bin 246 -> 190 bytes .../internal/cctz/testdata/zoneinfo/Africa/Juba | Bin 653 -> 449 bytes .../internal/cctz/testdata/zoneinfo/Africa/Kampala | Bin 251 -> 182 bytes .../cctz/testdata/zoneinfo/Africa/Khartoum | Bin 679 -> 458 bytes .../internal/cctz/testdata/zoneinfo/Africa/Kigali | Bin 149 -> 131 bytes .../cctz/testdata/zoneinfo/Africa/Kinshasa | Bin 149 -> 131 bytes .../internal/cctz/testdata/zoneinfo/Africa/Lagos | Bin 149 -> 131 bytes .../cctz/testdata/zoneinfo/Africa/Libreville | Bin 149 -> 131 bytes .../internal/cctz/testdata/zoneinfo/Africa/Lome | Bin 148 -> 130 bytes .../internal/cctz/testdata/zoneinfo/Africa/Luanda | Bin 149 -> 131 bytes .../cctz/testdata/zoneinfo/Africa/Lubumbashi | Bin 149 -> 131 bytes .../internal/cctz/testdata/zoneinfo/Africa/Lusaka | Bin 149 -> 131 bytes .../internal/cctz/testdata/zoneinfo/Africa/Malabo | Bin 149 -> 131 bytes .../internal/cctz/testdata/zoneinfo/Africa/Maputo | Bin 149 -> 131 bytes .../internal/cctz/testdata/zoneinfo/Africa/Maseru | Bin 246 -> 190 bytes .../internal/cctz/testdata/zoneinfo/Africa/Mbabane | Bin 246 -> 190 bytes .../cctz/testdata/zoneinfo/Africa/Mogadishu | Bin 251 -> 182 bytes .../cctz/testdata/zoneinfo/Africa/Monrovia | Bin 208 -> 164 bytes .../internal/cctz/testdata/zoneinfo/Africa/Nairobi | Bin 251 -> 182 bytes .../cctz/testdata/zoneinfo/Africa/Ndjamena | Bin 199 -> 160 bytes .../internal/cctz/testdata/zoneinfo/Africa/Niamey | Bin 149 -> 131 bytes .../cctz/testdata/zoneinfo/Africa/Nouakchott | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/Africa/Ouagadougou | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/Africa/Porto-Novo | Bin 149 -> 131 bytes .../cctz/testdata/zoneinfo/Africa/Sao_Tome | Bin 254 -> 173 bytes .../cctz/testdata/zoneinfo/Africa/Timbuktu | Bin 148 -> 130 bytes .../internal/cctz/testdata/zoneinfo/Africa/Tripoli | Bin 625 -> 431 bytes .../internal/cctz/testdata/zoneinfo/Africa/Tunis | Bin 689 -> 449 bytes .../cctz/testdata/zoneinfo/Africa/Windhoek | Bin 955 -> 638 bytes .../internal/cctz/testdata/zoneinfo/America/Adak | Bin 2356 -> 969 bytes .../cctz/testdata/zoneinfo/America/Anchorage | Bin 2371 -> 977 bytes .../cctz/testdata/zoneinfo/America/Anguilla | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/America/Antigua | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/America/Araguaina | Bin 884 -> 592 bytes .../zoneinfo/America/Argentina/Buenos_Aires | Bin 1076 -> 708 bytes .../testdata/zoneinfo/America/Argentina/Catamarca | Bin 1076 -> 708 bytes .../zoneinfo/America/Argentina/ComodRivadavia | Bin 1076 -> 708 bytes .../testdata/zoneinfo/America/Argentina/Cordoba | Bin 1076 -> 708 bytes .../cctz/testdata/zoneinfo/America/Argentina/Jujuy | Bin 1048 -> 690 bytes .../testdata/zoneinfo/America/Argentina/La_Rioja | Bin 1090 -> 717 bytes .../testdata/zoneinfo/America/Argentina/Mendoza | Bin 1076 -> 708 bytes .../zoneinfo/America/Argentina/Rio_Gallegos | Bin 1076 -> 708 bytes .../cctz/testdata/zoneinfo/America/Argentina/Salta | Bin 1048 -> 690 bytes .../testdata/zoneinfo/America/Argentina/San_Juan | Bin 1090 -> 717 bytes .../testdata/zoneinfo/America/Argentina/San_Luis | Bin 1102 -> 717 bytes .../testdata/zoneinfo/America/Argentina/Tucuman | Bin 1104 -> 726 bytes .../testdata/zoneinfo/America/Argentina/Ushuaia | Bin 1076 -> 708 bytes .../internal/cctz/testdata/zoneinfo/America/Aruba | Bin 186 -> 151 bytes .../cctz/testdata/zoneinfo/America/Asuncion | Bin 2044 -> 884 bytes .../cctz/testdata/zoneinfo/America/Atikokan | Bin 336 -> 224 bytes .../internal/cctz/testdata/zoneinfo/America/Atka | Bin 2356 -> 969 bytes .../internal/cctz/testdata/zoneinfo/America/Bahia | Bin 1024 -> 682 bytes .../cctz/testdata/zoneinfo/America/Bahia_Banderas | Bin 1546 -> 530 bytes .../cctz/testdata/zoneinfo/America/Barbados | Bin 314 -> 231 bytes .../internal/cctz/testdata/zoneinfo/America/Belem | Bin 576 -> 394 bytes .../internal/cctz/testdata/zoneinfo/America/Belize | Bin 948 -> 638 bytes .../cctz/testdata/zoneinfo/America/Blanc-Sablon | Bin 298 -> 205 bytes .../cctz/testdata/zoneinfo/America/Boa_Vista | Bin 632 -> 430 bytes .../internal/cctz/testdata/zoneinfo/America/Bogota | Bin 246 -> 179 bytes .../internal/cctz/testdata/zoneinfo/America/Boise | Bin 2394 -> 999 bytes .../cctz/testdata/zoneinfo/America/Buenos_Aires | Bin 1076 -> 708 bytes .../cctz/testdata/zoneinfo/America/Cambridge_Bay | Bin 2084 -> 768 bytes .../cctz/testdata/zoneinfo/America/Campo_Grande | Bin 1444 -> 952 bytes .../internal/cctz/testdata/zoneinfo/America/Cancun | Bin 782 -> 529 bytes .../cctz/testdata/zoneinfo/America/Caracas | Bin 264 -> 190 bytes .../cctz/testdata/zoneinfo/America/Catamarca | Bin 1076 -> 708 bytes .../cctz/testdata/zoneinfo/America/Cayenne | Bin 198 -> 151 bytes .../internal/cctz/testdata/zoneinfo/America/Cayman | Bin 182 -> 149 bytes .../cctz/testdata/zoneinfo/America/Chicago | Bin 3576 -> 1754 bytes .../cctz/testdata/zoneinfo/America/Chihuahua | Bin 1484 -> 340 bytes .../cctz/testdata/zoneinfo/America/Coral_Harbour | Bin 336 -> 224 bytes .../cctz/testdata/zoneinfo/America/Cordoba | Bin 1076 -> 708 bytes .../cctz/testdata/zoneinfo/America/Costa_Rica | Bin 316 -> 232 bytes .../cctz/testdata/zoneinfo/America/Creston | Bin 208 -> 158 bytes .../internal/cctz/testdata/zoneinfo/America/Cuiaba | Bin 1416 -> 934 bytes .../cctz/testdata/zoneinfo/America/Curacao | Bin 186 -> 151 bytes .../cctz/testdata/zoneinfo/America/Danmarkshavn | Bin 698 -> 447 bytes .../internal/cctz/testdata/zoneinfo/America/Dawson | Bin 1600 -> 1029 bytes .../cctz/testdata/zoneinfo/America/Dawson_Creek | Bin 1050 -> 683 bytes .../internal/cctz/testdata/zoneinfo/America/Denver | Bin 2444 -> 1042 bytes .../cctz/testdata/zoneinfo/America/Detroit | Bin 2230 -> 899 bytes .../cctz/testdata/zoneinfo/America/Dominica | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/America/Edmonton | Bin 2332 -> 970 bytes .../cctz/testdata/zoneinfo/America/Eirunepe | Bin 656 -> 436 bytes .../cctz/testdata/zoneinfo/America/El_Salvador | Bin 224 -> 176 bytes .../cctz/testdata/zoneinfo/America/Ensenada | Bin 2342 -> 1025 bytes .../cctz/testdata/zoneinfo/America/Fort_Nelson | Bin 2240 -> 1448 bytes .../cctz/testdata/zoneinfo/America/Fort_Wayne | Bin 1666 -> 531 bytes .../cctz/testdata/zoneinfo/America/Fortaleza | Bin 716 -> 484 bytes .../cctz/testdata/zoneinfo/America/Glace_Bay | Bin 2192 -> 880 bytes .../cctz/testdata/zoneinfo/America/Godthab | Bin 1878 -> 465 bytes .../cctz/testdata/zoneinfo/America/Goose_Bay | Bin 3210 -> 1580 bytes .../cctz/testdata/zoneinfo/America/Grand_Turk | Bin 1848 -> 862 bytes .../cctz/testdata/zoneinfo/America/Grenada | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/America/Guadeloupe | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/America/Guatemala | Bin 280 -> 212 bytes .../cctz/testdata/zoneinfo/America/Guayaquil | Bin 246 -> 179 bytes .../internal/cctz/testdata/zoneinfo/America/Guyana | Bin 236 -> 172 bytes .../cctz/testdata/zoneinfo/America/Halifax | Bin 3424 -> 1672 bytes .../internal/cctz/testdata/zoneinfo/America/Havana | Bin 2416 -> 1117 bytes .../cctz/testdata/zoneinfo/America/Hermosillo | Bin 416 -> 286 bytes .../testdata/zoneinfo/America/Indiana/Indianapolis | Bin 1666 -> 531 bytes .../cctz/testdata/zoneinfo/America/Indiana/Knox | Bin 2428 -> 1016 bytes .../cctz/testdata/zoneinfo/America/Indiana/Marengo | Bin 1722 -> 567 bytes .../testdata/zoneinfo/America/Indiana/Petersburg | Bin 1904 -> 683 bytes .../testdata/zoneinfo/America/Indiana/Tell_City | Bin 1684 -> 522 bytes .../cctz/testdata/zoneinfo/America/Indiana/Vevay | Bin 1414 -> 369 bytes .../testdata/zoneinfo/America/Indiana/Vincennes | Bin 1694 -> 558 bytes .../cctz/testdata/zoneinfo/America/Indiana/Winamac | Bin 1778 -> 612 bytes .../cctz/testdata/zoneinfo/America/Indianapolis | Bin 1666 -> 531 bytes .../internal/cctz/testdata/zoneinfo/America/Inuvik | Bin 1894 -> 701 bytes .../cctz/testdata/zoneinfo/America/Iqaluit | Bin 2032 -> 740 bytes .../cctz/testdata/zoneinfo/America/Jamaica | Bin 482 -> 339 bytes .../internal/cctz/testdata/zoneinfo/America/Jujuy | Bin 1048 -> 690 bytes .../internal/cctz/testdata/zoneinfo/America/Juneau | Bin 2353 -> 966 bytes .../testdata/zoneinfo/America/Kentucky/Louisville | Bin 2772 -> 1242 bytes .../testdata/zoneinfo/America/Kentucky/Monticello | Bin 2352 -> 972 bytes .../cctz/testdata/zoneinfo/America/Knox_IN | Bin 2428 -> 1016 bytes .../cctz/testdata/zoneinfo/America/Kralendijk | Bin 186 -> 151 bytes .../internal/cctz/testdata/zoneinfo/America/La_Paz | Bin 232 -> 170 bytes .../internal/cctz/testdata/zoneinfo/America/Lima | Bin 406 -> 283 bytes .../cctz/testdata/zoneinfo/America/Los_Angeles | Bin 2836 -> 1294 bytes .../cctz/testdata/zoneinfo/America/Louisville | Bin 2772 -> 1242 bytes .../cctz/testdata/zoneinfo/America/Lower_Princes | Bin 186 -> 151 bytes .../internal/cctz/testdata/zoneinfo/America/Maceio | Bin 744 -> 502 bytes .../cctz/testdata/zoneinfo/America/Managua | Bin 430 -> 295 bytes .../internal/cctz/testdata/zoneinfo/America/Manaus | Bin 604 -> 412 bytes .../cctz/testdata/zoneinfo/America/Marigot | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/America/Martinique | Bin 232 -> 178 bytes .../cctz/testdata/zoneinfo/America/Matamoros | Bin 1390 -> 437 bytes .../cctz/testdata/zoneinfo/America/Mazatlan | Bin 1526 -> 367 bytes .../cctz/testdata/zoneinfo/America/Mendoza | Bin 1076 -> 708 bytes .../cctz/testdata/zoneinfo/America/Menominee | Bin 2274 -> 917 bytes .../internal/cctz/testdata/zoneinfo/America/Merida | Bin 1422 -> 303 bytes .../cctz/testdata/zoneinfo/America/Metlakatla | Bin 1423 -> 595 bytes .../cctz/testdata/zoneinfo/America/Mexico_City | Bin 1584 -> 412 bytes .../cctz/testdata/zoneinfo/America/Miquelon | Bin 1666 -> 550 bytes .../cctz/testdata/zoneinfo/America/Moncton | Bin 3154 -> 1493 bytes .../cctz/testdata/zoneinfo/America/Monterrey | Bin 1390 -> 293 bytes .../cctz/testdata/zoneinfo/America/Montevideo | Bin 1510 -> 969 bytes .../cctz/testdata/zoneinfo/America/Montreal | Bin 3494 -> 1717 bytes .../cctz/testdata/zoneinfo/America/Montserrat | Bin 148 -> 130 bytes .../internal/cctz/testdata/zoneinfo/America/Nassau | Bin 2258 -> 941 bytes .../cctz/testdata/zoneinfo/America/New_York | Bin 3536 -> 1744 bytes .../cctz/testdata/zoneinfo/America/Nipigon | Bin 2122 -> 835 bytes .../internal/cctz/testdata/zoneinfo/America/Nome | Bin 2367 -> 975 bytes .../cctz/testdata/zoneinfo/America/Noronha | Bin 716 -> 484 bytes .../testdata/zoneinfo/America/North_Dakota/Beulah | Bin 2380 -> 1043 bytes .../testdata/zoneinfo/America/North_Dakota/Center | Bin 2380 -> 990 bytes .../zoneinfo/America/North_Dakota/New_Salem | Bin 2380 -> 990 bytes .../internal/cctz/testdata/zoneinfo/America/Nuuk | Bin 1878 -> 465 bytes .../cctz/testdata/zoneinfo/America/Ojinaga | Bin 1484 -> 484 bytes .../internal/cctz/testdata/zoneinfo/America/Panama | Bin 182 -> 149 bytes .../cctz/testdata/zoneinfo/America/Pangnirtung | Bin 2094 -> 769 bytes .../cctz/testdata/zoneinfo/America/Paramaribo | Bin 262 -> 187 bytes .../cctz/testdata/zoneinfo/America/Phoenix | Bin 328 -> 240 bytes .../cctz/testdata/zoneinfo/America/Port-au-Prince | Bin 1434 -> 565 bytes .../cctz/testdata/zoneinfo/America/Port_of_Spain | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/America/Porto_Acre | Bin 628 -> 418 bytes .../cctz/testdata/zoneinfo/America/Porto_Velho | Bin 576 -> 394 bytes .../cctz/testdata/zoneinfo/America/Puerto_Rico | Bin 246 -> 177 bytes .../cctz/testdata/zoneinfo/America/Punta_Arenas | Bin 1902 -> 1209 bytes .../cctz/testdata/zoneinfo/America/Rainy_River | Bin 2122 -> 835 bytes .../cctz/testdata/zoneinfo/America/Rankin_Inlet | Bin 1892 -> 692 bytes .../internal/cctz/testdata/zoneinfo/America/Recife | Bin 716 -> 484 bytes .../internal/cctz/testdata/zoneinfo/America/Regina | Bin 980 -> 638 bytes .../cctz/testdata/zoneinfo/America/Resolute | Bin 1892 -> 692 bytes .../cctz/testdata/zoneinfo/America/Rio_Branco | Bin 628 -> 418 bytes .../cctz/testdata/zoneinfo/America/Rosario | Bin 1076 -> 708 bytes .../cctz/testdata/zoneinfo/America/Santa_Isabel | Bin 2342 -> 1025 bytes .../cctz/testdata/zoneinfo/America/Santarem | Bin 602 -> 409 bytes .../cctz/testdata/zoneinfo/America/Santiago | Bin 2529 -> 1282 bytes .../cctz/testdata/zoneinfo/America/Santo_Domingo | Bin 458 -> 317 bytes .../cctz/testdata/zoneinfo/America/Sao_Paulo | Bin 1444 -> 952 bytes .../cctz/testdata/zoneinfo/America/Scoresbysund | Bin 1916 -> 479 bytes .../cctz/testdata/zoneinfo/America/Shiprock | Bin 2444 -> 1042 bytes .../internal/cctz/testdata/zoneinfo/America/Sitka | Bin 2329 -> 956 bytes .../cctz/testdata/zoneinfo/America/St_Barthelemy | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/America/St_Johns | Bin 3655 -> 1878 bytes .../cctz/testdata/zoneinfo/America/St_Kitts | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/America/St_Lucia | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/America/St_Thomas | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/America/St_Vincent | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/America/Swift_Current | Bin 560 -> 368 bytes .../cctz/testdata/zoneinfo/America/Tegucigalpa | Bin 252 -> 194 bytes .../internal/cctz/testdata/zoneinfo/America/Thule | Bin 1502 -> 455 bytes .../cctz/testdata/zoneinfo/America/Thunder_Bay | Bin 2202 -> 881 bytes .../cctz/testdata/zoneinfo/America/Tijuana | Bin 2342 -> 1025 bytes .../cctz/testdata/zoneinfo/America/Toronto | Bin 3494 -> 1717 bytes .../cctz/testdata/zoneinfo/America/Tortola | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/America/Vancouver | Bin 2892 -> 1330 bytes .../internal/cctz/testdata/zoneinfo/America/Virgin | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/America/Whitehorse | Bin 1600 -> 1029 bytes .../cctz/testdata/zoneinfo/America/Winnipeg | Bin 2868 -> 1294 bytes .../cctz/testdata/zoneinfo/America/Yakutat | Bin 2305 -> 946 bytes .../cctz/testdata/zoneinfo/America/Yellowknife | Bin 1966 -> 729 bytes .../cctz/testdata/zoneinfo/Antarctica/Casey | Bin 297 -> 243 bytes .../cctz/testdata/zoneinfo/Antarctica/Davis | Bin 297 -> 197 bytes .../testdata/zoneinfo/Antarctica/DumontDUrville | Bin 194 -> 152 bytes .../cctz/testdata/zoneinfo/Antarctica/Macquarie | Bin 1520 -> 976 bytes .../cctz/testdata/zoneinfo/Antarctica/Mawson | Bin 199 -> 152 bytes .../cctz/testdata/zoneinfo/Antarctica/McMurdo | Bin 2437 -> 1043 bytes .../cctz/testdata/zoneinfo/Antarctica/Palmer | Bin 1418 -> 887 bytes .../cctz/testdata/zoneinfo/Antarctica/Rothera | Bin 164 -> 132 bytes .../cctz/testdata/zoneinfo/Antarctica/South_Pole | Bin 2437 -> 1043 bytes .../cctz/testdata/zoneinfo/Antarctica/Syowa | Bin 165 -> 133 bytes .../cctz/testdata/zoneinfo/Antarctica/Troll | Bin 1162 -> 177 bytes .../cctz/testdata/zoneinfo/Antarctica/Vostok | Bin 165 -> 133 bytes .../cctz/testdata/zoneinfo/Arctic/Longyearbyen | Bin 2228 -> 676 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Aden | Bin 165 -> 133 bytes .../internal/cctz/testdata/zoneinfo/Asia/Almaty | Bin 997 -> 609 bytes .../internal/cctz/testdata/zoneinfo/Asia/Amman | Bin 1853 -> 787 bytes .../internal/cctz/testdata/zoneinfo/Asia/Anadyr | Bin 1188 -> 743 bytes .../internal/cctz/testdata/zoneinfo/Asia/Aqtau | Bin 983 -> 606 bytes .../internal/cctz/testdata/zoneinfo/Asia/Aqtobe | Bin 1011 -> 615 bytes .../internal/cctz/testdata/zoneinfo/Asia/Ashgabat | Bin 619 -> 375 bytes .../internal/cctz/testdata/zoneinfo/Asia/Ashkhabad | Bin 619 -> 375 bytes .../internal/cctz/testdata/zoneinfo/Asia/Atyrau | Bin 991 -> 616 bytes .../internal/cctz/testdata/zoneinfo/Asia/Baghdad | Bin 983 -> 630 bytes .../internal/cctz/testdata/zoneinfo/Asia/Bahrain | Bin 199 -> 152 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Baku | Bin 1227 -> 744 bytes .../internal/cctz/testdata/zoneinfo/Asia/Bangkok | Bin 199 -> 152 bytes .../internal/cctz/testdata/zoneinfo/Asia/Barnaul | Bin 1221 -> 753 bytes .../internal/cctz/testdata/zoneinfo/Asia/Beirut | Bin 2154 -> 732 bytes .../internal/cctz/testdata/zoneinfo/Asia/Bishkek | Bin 983 -> 618 bytes .../internal/cctz/testdata/zoneinfo/Asia/Brunei | Bin 203 -> 154 bytes .../internal/cctz/testdata/zoneinfo/Asia/Calcutta | Bin 285 -> 220 bytes .../internal/cctz/testdata/zoneinfo/Asia/Chita | Bin 1221 -> 750 bytes .../cctz/testdata/zoneinfo/Asia/Choibalsan | Bin 949 -> 619 bytes .../internal/cctz/testdata/zoneinfo/Asia/Chongqing | Bin 561 -> 393 bytes .../internal/cctz/testdata/zoneinfo/Asia/Chungking | Bin 561 -> 393 bytes .../internal/cctz/testdata/zoneinfo/Asia/Colombo | Bin 372 -> 247 bytes .../internal/cctz/testdata/zoneinfo/Asia/Dacca | Bin 337 -> 231 bytes .../internal/cctz/testdata/zoneinfo/Asia/Damascus | Bin 2294 -> 1047 bytes .../internal/cctz/testdata/zoneinfo/Asia/Dhaka | Bin 337 -> 231 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Dili | Bin 227 -> 170 bytes .../internal/cctz/testdata/zoneinfo/Asia/Dubai | Bin 165 -> 133 bytes .../internal/cctz/testdata/zoneinfo/Asia/Dushanbe | Bin 591 -> 366 bytes .../internal/cctz/testdata/zoneinfo/Asia/Famagusta | Bin 2028 -> 940 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Gaza | Bin 2316 -> 1195 bytes .../internal/cctz/testdata/zoneinfo/Asia/Harbin | Bin 561 -> 393 bytes .../internal/cctz/testdata/zoneinfo/Asia/Hebron | Bin 2344 -> 1213 bytes .../cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh | Bin 351 -> 236 bytes .../internal/cctz/testdata/zoneinfo/Asia/Hong_Kong | Bin 1203 -> 775 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Hovd | Bin 891 -> 594 bytes .../internal/cctz/testdata/zoneinfo/Asia/Irkutsk | Bin 1243 -> 760 bytes .../internal/cctz/testdata/zoneinfo/Asia/Istanbul | Bin 1947 -> 1200 bytes .../internal/cctz/testdata/zoneinfo/Asia/Jakarta | Bin 355 -> 248 bytes .../internal/cctz/testdata/zoneinfo/Asia/Jayapura | Bin 221 -> 171 bytes .../internal/cctz/testdata/zoneinfo/Asia/Jerusalem | Bin 2288 -> 1056 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kabul | Bin 208 -> 159 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kamchatka | Bin 1166 -> 727 bytes .../internal/cctz/testdata/zoneinfo/Asia/Karachi | Bin 379 -> 266 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kashgar | Bin 165 -> 133 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kathmandu | Bin 212 -> 161 bytes .../internal/cctz/testdata/zoneinfo/Asia/Katmandu | Bin 212 -> 161 bytes .../internal/cctz/testdata/zoneinfo/Asia/Khandyga | Bin 1271 -> 775 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kolkata | Bin 285 -> 220 bytes .../cctz/testdata/zoneinfo/Asia/Krasnoyarsk | Bin 1207 -> 741 bytes .../cctz/testdata/zoneinfo/Asia/Kuala_Lumpur | Bin 383 -> 256 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kuching | Bin 483 -> 320 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kuwait | Bin 165 -> 133 bytes .../internal/cctz/testdata/zoneinfo/Asia/Macao | Bin 1227 -> 791 bytes .../internal/cctz/testdata/zoneinfo/Asia/Macau | Bin 1227 -> 791 bytes .../internal/cctz/testdata/zoneinfo/Asia/Magadan | Bin 1222 -> 751 bytes .../internal/cctz/testdata/zoneinfo/Asia/Makassar | Bin 254 -> 190 bytes .../internal/cctz/testdata/zoneinfo/Asia/Manila | Bin 328 -> 238 bytes .../internal/cctz/testdata/zoneinfo/Asia/Muscat | Bin 165 -> 133 bytes .../internal/cctz/testdata/zoneinfo/Asia/Nicosia | Bin 2002 -> 597 bytes .../cctz/testdata/zoneinfo/Asia/Novokuznetsk | Bin 1165 -> 726 bytes .../cctz/testdata/zoneinfo/Asia/Novosibirsk | Bin 1221 -> 753 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Omsk | Bin 1207 -> 741 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Oral | Bin 1005 -> 625 bytes .../cctz/testdata/zoneinfo/Asia/Phnom_Penh | Bin 199 -> 152 bytes .../internal/cctz/testdata/zoneinfo/Asia/Pontianak | Bin 353 -> 247 bytes .../internal/cctz/testdata/zoneinfo/Asia/Pyongyang | Bin 237 -> 183 bytes .../internal/cctz/testdata/zoneinfo/Asia/Qatar | Bin 199 -> 152 bytes .../internal/cctz/testdata/zoneinfo/Asia/Qostanay | Bin 1011 -> 615 bytes .../internal/cctz/testdata/zoneinfo/Asia/Qyzylorda | Bin 1025 -> 624 bytes .../internal/cctz/testdata/zoneinfo/Asia/Rangoon | Bin 268 -> 187 bytes .../internal/cctz/testdata/zoneinfo/Asia/Riyadh | Bin 165 -> 133 bytes .../internal/cctz/testdata/zoneinfo/Asia/Saigon | Bin 351 -> 236 bytes .../internal/cctz/testdata/zoneinfo/Asia/Sakhalin | Bin 1202 -> 755 bytes .../internal/cctz/testdata/zoneinfo/Asia/Samarkand | Bin 577 -> 366 bytes .../internal/cctz/testdata/zoneinfo/Asia/Seoul | Bin 617 -> 415 bytes .../internal/cctz/testdata/zoneinfo/Asia/Shanghai | Bin 561 -> 393 bytes .../internal/cctz/testdata/zoneinfo/Asia/Singapore | Bin 383 -> 256 bytes .../cctz/testdata/zoneinfo/Asia/Srednekolymsk | Bin 1208 -> 742 bytes .../internal/cctz/testdata/zoneinfo/Asia/Taipei | Bin 761 -> 511 bytes .../internal/cctz/testdata/zoneinfo/Asia/Tashkent | Bin 591 -> 366 bytes .../internal/cctz/testdata/zoneinfo/Asia/Tbilisi | Bin 1035 -> 629 bytes .../internal/cctz/testdata/zoneinfo/Asia/Tehran | Bin 2582 -> 2004 bytes .../internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv | Bin 2288 -> 1056 bytes .../internal/cctz/testdata/zoneinfo/Asia/Thimbu | Bin 203 -> 154 bytes .../internal/cctz/testdata/zoneinfo/Asia/Thimphu | Bin 203 -> 154 bytes .../internal/cctz/testdata/zoneinfo/Asia/Tokyo | Bin 309 -> 213 bytes .../internal/cctz/testdata/zoneinfo/Asia/Tomsk | Bin 1221 -> 753 bytes .../cctz/testdata/zoneinfo/Asia/Ujung_Pandang | Bin 254 -> 190 bytes .../cctz/testdata/zoneinfo/Asia/Ulaanbaatar | Bin 891 -> 594 bytes .../cctz/testdata/zoneinfo/Asia/Ulan_Bator | Bin 891 -> 594 bytes .../internal/cctz/testdata/zoneinfo/Asia/Urumqi | Bin 165 -> 133 bytes .../internal/cctz/testdata/zoneinfo/Asia/Ust-Nera | Bin 1252 -> 771 bytes .../internal/cctz/testdata/zoneinfo/Asia/Vientiane | Bin 199 -> 152 bytes .../cctz/testdata/zoneinfo/Asia/Vladivostok | Bin 1208 -> 742 bytes .../internal/cctz/testdata/zoneinfo/Asia/Yakutsk | Bin 1207 -> 741 bytes .../internal/cctz/testdata/zoneinfo/Asia/Yangon | Bin 268 -> 187 bytes .../cctz/testdata/zoneinfo/Asia/Yekaterinburg | Bin 1243 -> 760 bytes .../internal/cctz/testdata/zoneinfo/Asia/Yerevan | Bin 1151 -> 708 bytes .../cctz/testdata/zoneinfo/Atlantic/Azores | Bin 3484 -> 1435 bytes .../cctz/testdata/zoneinfo/Atlantic/Bermuda | Bin 1978 -> 761 bytes .../cctz/testdata/zoneinfo/Atlantic/Canary | Bin 1897 -> 478 bytes .../cctz/testdata/zoneinfo/Atlantic/Cape_Verde | Bin 270 -> 175 bytes .../cctz/testdata/zoneinfo/Atlantic/Faeroe | Bin 1815 -> 441 bytes .../internal/cctz/testdata/zoneinfo/Atlantic/Faroe | Bin 1815 -> 441 bytes .../cctz/testdata/zoneinfo/Atlantic/Jan_Mayen | Bin 2228 -> 676 bytes .../cctz/testdata/zoneinfo/Atlantic/Madeira | Bin 3475 -> 1435 bytes .../cctz/testdata/zoneinfo/Atlantic/Reykjavik | Bin 1162 -> 753 bytes .../cctz/testdata/zoneinfo/Atlantic/South_Georgia | Bin 164 -> 132 bytes .../cctz/testdata/zoneinfo/Atlantic/St_Helena | Bin 148 -> 130 bytes .../cctz/testdata/zoneinfo/Atlantic/Stanley | Bin 1214 -> 789 bytes .../internal/cctz/testdata/zoneinfo/Australia/ACT | Bin 2204 -> 904 bytes .../cctz/testdata/zoneinfo/Australia/Adelaide | Bin 2222 -> 921 bytes .../cctz/testdata/zoneinfo/Australia/Brisbane | Bin 433 -> 289 bytes .../cctz/testdata/zoneinfo/Australia/Broken_Hill | Bin 2243 -> 941 bytes .../cctz/testdata/zoneinfo/Australia/Canberra | Bin 2204 -> 904 bytes .../cctz/testdata/zoneinfo/Australia/Currie | Bin 2204 -> 895 bytes .../cctz/testdata/zoneinfo/Australia/Darwin | Bin 304 -> 234 bytes .../cctz/testdata/zoneinfo/Australia/Eucla | Bin 484 -> 314 bytes .../cctz/testdata/zoneinfo/Australia/Hobart | Bin 2316 -> 967 bytes .../internal/cctz/testdata/zoneinfo/Australia/LHI | Bin 1860 -> 692 bytes .../cctz/testdata/zoneinfo/Australia/Lindeman | Bin 489 -> 325 bytes .../cctz/testdata/zoneinfo/Australia/Lord_Howe | Bin 1860 -> 692 bytes .../cctz/testdata/zoneinfo/Australia/Melbourne | Bin 2204 -> 904 bytes .../internal/cctz/testdata/zoneinfo/Australia/NSW | Bin 2204 -> 904 bytes .../cctz/testdata/zoneinfo/Australia/North | Bin 304 -> 234 bytes .../cctz/testdata/zoneinfo/Australia/Perth | Bin 460 -> 306 bytes .../cctz/testdata/zoneinfo/Australia/Queensland | Bin 433 -> 289 bytes .../cctz/testdata/zoneinfo/Australia/South | Bin 2222 -> 921 bytes .../cctz/testdata/zoneinfo/Australia/Sydney | Bin 2204 -> 904 bytes .../cctz/testdata/zoneinfo/Australia/Tasmania | Bin 2316 -> 967 bytes .../cctz/testdata/zoneinfo/Australia/Victoria | Bin 2204 -> 904 bytes .../internal/cctz/testdata/zoneinfo/Australia/West | Bin 460 -> 306 bytes .../cctz/testdata/zoneinfo/Australia/Yancowinna | Bin 2243 -> 941 bytes .../internal/cctz/testdata/zoneinfo/Brazil/Acre | Bin 628 -> 418 bytes .../cctz/testdata/zoneinfo/Brazil/DeNoronha | Bin 716 -> 484 bytes .../internal/cctz/testdata/zoneinfo/Brazil/East | Bin 1444 -> 952 bytes .../internal/cctz/testdata/zoneinfo/Brazil/West | Bin 604 -> 412 bytes absl/time/internal/cctz/testdata/zoneinfo/CET | Bin 2094 -> 621 bytes absl/time/internal/cctz/testdata/zoneinfo/CST6CDT | Bin 2310 -> 951 bytes .../cctz/testdata/zoneinfo/Canada/Atlantic | Bin 3424 -> 1672 bytes .../internal/cctz/testdata/zoneinfo/Canada/Central | Bin 2868 -> 1294 bytes .../internal/cctz/testdata/zoneinfo/Canada/Eastern | Bin 3494 -> 1717 bytes .../cctz/testdata/zoneinfo/Canada/Mountain | Bin 2332 -> 970 bytes .../cctz/testdata/zoneinfo/Canada/Newfoundland | Bin 3655 -> 1878 bytes .../internal/cctz/testdata/zoneinfo/Canada/Pacific | Bin 2892 -> 1330 bytes .../cctz/testdata/zoneinfo/Canada/Saskatchewan | Bin 980 -> 638 bytes .../internal/cctz/testdata/zoneinfo/Canada/Yukon | Bin 1600 -> 1029 bytes .../cctz/testdata/zoneinfo/Chile/Continental | Bin 2529 -> 1282 bytes .../cctz/testdata/zoneinfo/Chile/EasterIsland | Bin 2233 -> 1102 bytes absl/time/internal/cctz/testdata/zoneinfo/Cuba | Bin 2416 -> 1117 bytes absl/time/internal/cctz/testdata/zoneinfo/EET | Bin 1908 -> 497 bytes absl/time/internal/cctz/testdata/zoneinfo/EST | Bin 114 -> 111 bytes absl/time/internal/cctz/testdata/zoneinfo/EST5EDT | Bin 2310 -> 951 bytes absl/time/internal/cctz/testdata/zoneinfo/Egypt | Bin 1955 -> 1276 bytes absl/time/internal/cctz/testdata/zoneinfo/Eire | Bin 3492 -> 1496 bytes absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT | Bin 114 -> 111 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+0 | Bin 114 -> 111 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+1 | Bin 116 -> 113 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+10 | Bin 117 -> 114 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+11 | Bin 117 -> 114 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+12 | Bin 117 -> 114 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+2 | Bin 116 -> 113 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+3 | Bin 116 -> 113 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+4 | Bin 116 -> 113 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+5 | Bin 116 -> 113 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+6 | Bin 116 -> 113 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+7 | Bin 116 -> 113 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+8 | Bin 116 -> 113 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+9 | Bin 116 -> 113 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-0 | Bin 114 -> 111 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-1 | Bin 117 -> 114 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-10 | Bin 118 -> 115 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-11 | Bin 118 -> 115 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-12 | Bin 118 -> 115 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-13 | Bin 118 -> 115 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-14 | Bin 118 -> 115 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-2 | Bin 117 -> 114 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-3 | Bin 117 -> 114 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-4 | Bin 117 -> 114 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-5 | Bin 117 -> 114 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-6 | Bin 117 -> 114 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-7 | Bin 117 -> 114 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-8 | Bin 117 -> 114 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-9 | Bin 117 -> 114 bytes absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT0 | Bin 114 -> 111 bytes .../internal/cctz/testdata/zoneinfo/Etc/Greenwich | Bin 114 -> 111 bytes absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT | Bin 114 -> 111 bytes absl/time/internal/cctz/testdata/zoneinfo/Etc/UTC | Bin 114 -> 111 bytes .../internal/cctz/testdata/zoneinfo/Etc/Universal | Bin 114 -> 111 bytes absl/time/internal/cctz/testdata/zoneinfo/Etc/Zulu | Bin 114 -> 111 bytes .../cctz/testdata/zoneinfo/Europe/Amsterdam | Bin 2910 -> 1071 bytes .../internal/cctz/testdata/zoneinfo/Europe/Andorra | Bin 1742 -> 389 bytes .../cctz/testdata/zoneinfo/Europe/Astrakhan | Bin 1165 -> 726 bytes .../internal/cctz/testdata/zoneinfo/Europe/Athens | Bin 2262 -> 682 bytes .../internal/cctz/testdata/zoneinfo/Europe/Belfast | Bin 3648 -> 1599 bytes .../cctz/testdata/zoneinfo/Europe/Belgrade | Bin 1920 -> 478 bytes .../internal/cctz/testdata/zoneinfo/Europe/Berlin | Bin 2298 -> 705 bytes .../cctz/testdata/zoneinfo/Europe/Bratislava | Bin 2301 -> 723 bytes .../cctz/testdata/zoneinfo/Europe/Brussels | Bin 2933 -> 1103 bytes .../cctz/testdata/zoneinfo/Europe/Bucharest | Bin 2184 -> 661 bytes .../cctz/testdata/zoneinfo/Europe/Budapest | Bin 2368 -> 766 bytes .../cctz/testdata/zoneinfo/Europe/Busingen | Bin 1909 -> 497 bytes .../cctz/testdata/zoneinfo/Europe/Chisinau | Bin 2390 -> 755 bytes .../cctz/testdata/zoneinfo/Europe/Copenhagen | Bin 2137 -> 623 bytes .../internal/cctz/testdata/zoneinfo/Europe/Dublin | Bin 3492 -> 1496 bytes .../cctz/testdata/zoneinfo/Europe/Gibraltar | Bin 3052 -> 1220 bytes .../cctz/testdata/zoneinfo/Europe/Guernsey | Bin 3648 -> 1599 bytes .../cctz/testdata/zoneinfo/Europe/Helsinki | Bin 1900 -> 481 bytes .../cctz/testdata/zoneinfo/Europe/Isle_of_Man | Bin 3648 -> 1599 bytes .../cctz/testdata/zoneinfo/Europe/Istanbul | Bin 1947 -> 1200 bytes .../internal/cctz/testdata/zoneinfo/Europe/Jersey | Bin 3648 -> 1599 bytes .../cctz/testdata/zoneinfo/Europe/Kaliningrad | Bin 1493 -> 904 bytes .../internal/cctz/testdata/zoneinfo/Europe/Kiev | Bin 2088 -> 549 bytes .../internal/cctz/testdata/zoneinfo/Europe/Kirov | Bin 1153 -> 717 bytes .../internal/cctz/testdata/zoneinfo/Europe/Lisbon | Bin 3469 -> 1436 bytes .../cctz/testdata/zoneinfo/Europe/Ljubljana | Bin 1920 -> 478 bytes .../internal/cctz/testdata/zoneinfo/Europe/London | Bin 3648 -> 1599 bytes .../cctz/testdata/zoneinfo/Europe/Luxembourg | Bin 2946 -> 1087 bytes .../internal/cctz/testdata/zoneinfo/Europe/Madrid | Bin 2614 -> 897 bytes .../internal/cctz/testdata/zoneinfo/Europe/Malta | Bin 2620 -> 928 bytes .../cctz/testdata/zoneinfo/Europe/Mariehamn | Bin 1900 -> 481 bytes .../internal/cctz/testdata/zoneinfo/Europe/Minsk | Bin 1321 -> 808 bytes .../internal/cctz/testdata/zoneinfo/Europe/Monaco | Bin 2944 -> 1114 bytes .../internal/cctz/testdata/zoneinfo/Europe/Moscow | Bin 1535 -> 908 bytes .../internal/cctz/testdata/zoneinfo/Europe/Nicosia | Bin 2002 -> 597 bytes .../internal/cctz/testdata/zoneinfo/Europe/Oslo | Bin 2228 -> 676 bytes .../internal/cctz/testdata/zoneinfo/Europe/Paris | Bin 2962 -> 1105 bytes .../cctz/testdata/zoneinfo/Europe/Podgorica | Bin 1920 -> 478 bytes .../internal/cctz/testdata/zoneinfo/Europe/Prague | Bin 2301 -> 723 bytes .../internal/cctz/testdata/zoneinfo/Europe/Riga | Bin 2198 -> 694 bytes .../internal/cctz/testdata/zoneinfo/Europe/Rome | Bin 2641 -> 947 bytes .../internal/cctz/testdata/zoneinfo/Europe/Samara | Bin 1215 -> 732 bytes .../cctz/testdata/zoneinfo/Europe/San_Marino | Bin 2641 -> 947 bytes .../cctz/testdata/zoneinfo/Europe/Sarajevo | Bin 1920 -> 478 bytes .../internal/cctz/testdata/zoneinfo/Europe/Saratov | Bin 1183 -> 726 bytes .../cctz/testdata/zoneinfo/Europe/Simferopol | Bin 1453 -> 865 bytes .../internal/cctz/testdata/zoneinfo/Europe/Skopje | Bin 1920 -> 478 bytes .../internal/cctz/testdata/zoneinfo/Europe/Sofia | Bin 2077 -> 592 bytes .../cctz/testdata/zoneinfo/Europe/Stockholm | Bin 1909 -> 497 bytes .../internal/cctz/testdata/zoneinfo/Europe/Tallinn | Bin 2148 -> 675 bytes .../internal/cctz/testdata/zoneinfo/Europe/Tirane | Bin 2084 -> 604 bytes .../cctz/testdata/zoneinfo/Europe/Tiraspol | Bin 2390 -> 755 bytes .../cctz/testdata/zoneinfo/Europe/Ulyanovsk | Bin 1267 -> 760 bytes .../cctz/testdata/zoneinfo/Europe/Uzhgorod | Bin 2050 -> 530 bytes .../internal/cctz/testdata/zoneinfo/Europe/Vaduz | Bin 1909 -> 497 bytes .../internal/cctz/testdata/zoneinfo/Europe/Vatican | Bin 2641 -> 947 bytes .../internal/cctz/testdata/zoneinfo/Europe/Vienna | Bin 2200 -> 658 bytes .../internal/cctz/testdata/zoneinfo/Europe/Vilnius | Bin 2162 -> 676 bytes .../cctz/testdata/zoneinfo/Europe/Volgograd | Bin 1165 -> 726 bytes .../internal/cctz/testdata/zoneinfo/Europe/Warsaw | Bin 2654 -> 923 bytes .../internal/cctz/testdata/zoneinfo/Europe/Zagreb | Bin 1920 -> 478 bytes .../cctz/testdata/zoneinfo/Europe/Zaporozhye | Bin 2106 -> 560 bytes .../internal/cctz/testdata/zoneinfo/Europe/Zurich | Bin 1909 -> 497 bytes absl/time/internal/cctz/testdata/zoneinfo/Factory | Bin 116 -> 113 bytes absl/time/internal/cctz/testdata/zoneinfo/GB | Bin 3648 -> 1599 bytes absl/time/internal/cctz/testdata/zoneinfo/GB-Eire | Bin 3648 -> 1599 bytes absl/time/internal/cctz/testdata/zoneinfo/GMT | Bin 114 -> 111 bytes absl/time/internal/cctz/testdata/zoneinfo/GMT+0 | Bin 114 -> 111 bytes absl/time/internal/cctz/testdata/zoneinfo/GMT-0 | Bin 114 -> 111 bytes absl/time/internal/cctz/testdata/zoneinfo/GMT0 | Bin 114 -> 111 bytes .../time/internal/cctz/testdata/zoneinfo/Greenwich | Bin 114 -> 111 bytes absl/time/internal/cctz/testdata/zoneinfo/HST | Bin 115 -> 112 bytes absl/time/internal/cctz/testdata/zoneinfo/Hongkong | Bin 1203 -> 775 bytes absl/time/internal/cctz/testdata/zoneinfo/Iceland | Bin 1162 -> 753 bytes .../cctz/testdata/zoneinfo/Indian/Antananarivo | Bin 251 -> 182 bytes .../internal/cctz/testdata/zoneinfo/Indian/Chagos | Bin 199 -> 152 bytes .../cctz/testdata/zoneinfo/Indian/Christmas | Bin 165 -> 133 bytes .../internal/cctz/testdata/zoneinfo/Indian/Cocos | Bin 174 -> 140 bytes .../internal/cctz/testdata/zoneinfo/Indian/Comoro | Bin 251 -> 182 bytes .../cctz/testdata/zoneinfo/Indian/Kerguelen | Bin 165 -> 133 bytes .../internal/cctz/testdata/zoneinfo/Indian/Mahe | Bin 165 -> 133 bytes .../cctz/testdata/zoneinfo/Indian/Maldives | Bin 199 -> 152 bytes .../cctz/testdata/zoneinfo/Indian/Mauritius | Bin 241 -> 179 bytes .../internal/cctz/testdata/zoneinfo/Indian/Mayotte | Bin 251 -> 182 bytes .../internal/cctz/testdata/zoneinfo/Indian/Reunion | Bin 165 -> 133 bytes absl/time/internal/cctz/testdata/zoneinfo/Iran | Bin 2582 -> 2004 bytes absl/time/internal/cctz/testdata/zoneinfo/Israel | Bin 2288 -> 1056 bytes absl/time/internal/cctz/testdata/zoneinfo/Jamaica | Bin 482 -> 339 bytes absl/time/internal/cctz/testdata/zoneinfo/Japan | Bin 309 -> 213 bytes .../time/internal/cctz/testdata/zoneinfo/Kwajalein | Bin 316 -> 219 bytes absl/time/internal/cctz/testdata/zoneinfo/Libya | Bin 625 -> 431 bytes absl/time/internal/cctz/testdata/zoneinfo/MET | Bin 2094 -> 621 bytes absl/time/internal/cctz/testdata/zoneinfo/MST | Bin 114 -> 111 bytes absl/time/internal/cctz/testdata/zoneinfo/MST7MDT | Bin 2310 -> 951 bytes .../cctz/testdata/zoneinfo/Mexico/BajaNorte | Bin 2342 -> 1025 bytes .../internal/cctz/testdata/zoneinfo/Mexico/BajaSur | Bin 1526 -> 367 bytes .../internal/cctz/testdata/zoneinfo/Mexico/General | Bin 1584 -> 412 bytes absl/time/internal/cctz/testdata/zoneinfo/NZ | Bin 2437 -> 1043 bytes absl/time/internal/cctz/testdata/zoneinfo/NZ-CHAT | Bin 2068 -> 808 bytes absl/time/internal/cctz/testdata/zoneinfo/Navajo | Bin 2444 -> 1042 bytes absl/time/internal/cctz/testdata/zoneinfo/PRC | Bin 561 -> 393 bytes absl/time/internal/cctz/testdata/zoneinfo/PST8PDT | Bin 2310 -> 951 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Apia | Bin 1097 -> 268 bytes .../cctz/testdata/zoneinfo/Pacific/Auckland | Bin 2437 -> 1043 bytes .../cctz/testdata/zoneinfo/Pacific/Bougainville | Bin 268 -> 201 bytes .../cctz/testdata/zoneinfo/Pacific/Chatham | Bin 2068 -> 808 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Chuuk | Bin 269 -> 195 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Easter | Bin 2233 -> 1102 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Efate | Bin 466 -> 324 bytes .../cctz/testdata/zoneinfo/Pacific/Enderbury | Bin 234 -> 172 bytes .../cctz/testdata/zoneinfo/Pacific/Fakaofo | Bin 200 -> 153 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Fiji | Bin 1077 -> 419 bytes .../cctz/testdata/zoneinfo/Pacific/Funafuti | Bin 166 -> 134 bytes .../cctz/testdata/zoneinfo/Pacific/Galapagos | Bin 238 -> 175 bytes .../cctz/testdata/zoneinfo/Pacific/Gambier | Bin 164 -> 132 bytes .../cctz/testdata/zoneinfo/Pacific/Guadalcanal | Bin 166 -> 134 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Guam | Bin 494 -> 350 bytes .../cctz/testdata/zoneinfo/Pacific/Honolulu | Bin 329 -> 221 bytes .../cctz/testdata/zoneinfo/Pacific/Johnston | Bin 329 -> 221 bytes .../cctz/testdata/zoneinfo/Pacific/Kiritimati | Bin 238 -> 174 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Kosrae | Bin 351 -> 242 bytes .../cctz/testdata/zoneinfo/Pacific/Kwajalein | Bin 316 -> 219 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Majuro | Bin 310 -> 218 bytes .../cctz/testdata/zoneinfo/Pacific/Marquesas | Bin 173 -> 139 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Midway | Bin 175 -> 146 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Nauru | Bin 252 -> 183 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Niue | Bin 241 -> 175 bytes .../cctz/testdata/zoneinfo/Pacific/Norfolk | Bin 880 -> 247 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Noumea | Bin 304 -> 198 bytes .../cctz/testdata/zoneinfo/Pacific/Pago_Pago | Bin 175 -> 146 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Palau | Bin 180 -> 148 bytes .../cctz/testdata/zoneinfo/Pacific/Pitcairn | Bin 202 -> 153 bytes .../cctz/testdata/zoneinfo/Pacific/Pohnpei | Bin 303 -> 214 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Ponape | Bin 303 -> 214 bytes .../cctz/testdata/zoneinfo/Pacific/Port_Moresby | Bin 186 -> 154 bytes .../cctz/testdata/zoneinfo/Pacific/Rarotonga | Bin 577 -> 391 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Saipan | Bin 494 -> 350 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Samoa | Bin 175 -> 146 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Tahiti | Bin 165 -> 133 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Tarawa | Bin 166 -> 134 bytes .../cctz/testdata/zoneinfo/Pacific/Tongatapu | Bin 372 -> 237 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Truk | Bin 269 -> 195 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Wake | Bin 166 -> 134 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Wallis | Bin 166 -> 134 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Yap | Bin 269 -> 195 bytes absl/time/internal/cctz/testdata/zoneinfo/Poland | Bin 2654 -> 923 bytes absl/time/internal/cctz/testdata/zoneinfo/Portugal | Bin 3469 -> 1436 bytes absl/time/internal/cctz/testdata/zoneinfo/ROC | Bin 761 -> 511 bytes absl/time/internal/cctz/testdata/zoneinfo/ROK | Bin 617 -> 415 bytes .../time/internal/cctz/testdata/zoneinfo/Singapore | Bin 383 -> 256 bytes absl/time/internal/cctz/testdata/zoneinfo/Turkey | Bin 1947 -> 1200 bytes absl/time/internal/cctz/testdata/zoneinfo/UCT | Bin 114 -> 111 bytes .../time/internal/cctz/testdata/zoneinfo/US/Alaska | Bin 2371 -> 977 bytes .../internal/cctz/testdata/zoneinfo/US/Aleutian | Bin 2356 -> 969 bytes .../internal/cctz/testdata/zoneinfo/US/Arizona | Bin 328 -> 240 bytes .../internal/cctz/testdata/zoneinfo/US/Central | Bin 3576 -> 1754 bytes .../cctz/testdata/zoneinfo/US/East-Indiana | Bin 1666 -> 531 bytes .../internal/cctz/testdata/zoneinfo/US/Eastern | Bin 3536 -> 1744 bytes .../time/internal/cctz/testdata/zoneinfo/US/Hawaii | Bin 329 -> 221 bytes .../cctz/testdata/zoneinfo/US/Indiana-Starke | Bin 2428 -> 1016 bytes .../internal/cctz/testdata/zoneinfo/US/Michigan | Bin 2230 -> 899 bytes .../internal/cctz/testdata/zoneinfo/US/Mountain | Bin 2444 -> 1042 bytes .../internal/cctz/testdata/zoneinfo/US/Pacific | Bin 2836 -> 1294 bytes absl/time/internal/cctz/testdata/zoneinfo/US/Samoa | Bin 175 -> 146 bytes absl/time/internal/cctz/testdata/zoneinfo/UTC | Bin 114 -> 111 bytes .../time/internal/cctz/testdata/zoneinfo/Universal | Bin 114 -> 111 bytes absl/time/internal/cctz/testdata/zoneinfo/W-SU | Bin 1535 -> 908 bytes absl/time/internal/cctz/testdata/zoneinfo/WET | Bin 1905 -> 494 bytes absl/time/internal/cctz/testdata/zoneinfo/Zulu | Bin 114 -> 111 bytes ci/linux_docker_containers.sh | 1 + ci/linux_gcc-floor_libstdcxx_bazel.sh | 89 +++++++++++++++++++++ 601 files changed, 205 insertions(+), 16 deletions(-) create mode 100755 ci/linux_gcc-floor_libstdcxx_bazel.sh (limited to 'ci/linux_docker_containers.sh') diff --git a/absl/container/btree_test.cc b/absl/container/btree_test.cc index c2f098f0..7fa5d4f3 100644 --- a/absl/container/btree_test.cc +++ b/absl/container/btree_test.cc @@ -1216,6 +1216,70 @@ class BtreeNodePeer { namespace { +class BtreeMapTest : public ::testing::Test { + public: + struct Key {}; + struct Cmp { + template + bool operator()(T, T) const { + return false; + } + }; + + struct KeyLin { + using absl_btree_prefer_linear_node_search = std::true_type; + }; + struct CmpLin : Cmp { + using absl_btree_prefer_linear_node_search = std::true_type; + }; + + struct KeyBin { + using absl_btree_prefer_linear_node_search = std::false_type; + }; + struct CmpBin : Cmp { + using absl_btree_prefer_linear_node_search = std::false_type; + }; + + template + static bool IsLinear() { + return BtreeNodePeer::UsesLinearNodeSearch>(); + } +}; + +TEST_F(BtreeMapTest, TestLinearSearchPreferredForKeyLinearViaAlias) { + // Test requesting linear search by directly exporting an alias. + EXPECT_FALSE((IsLinear())); + EXPECT_TRUE((IsLinear())); + EXPECT_TRUE((IsLinear())); + EXPECT_TRUE((IsLinear())); +} + +TEST_F(BtreeMapTest, LinearChoiceTree) { + // Cmp has precedence, and is forcing binary + EXPECT_FALSE((IsLinear())); + EXPECT_FALSE((IsLinear())); + EXPECT_FALSE((IsLinear())); + EXPECT_FALSE((IsLinear())); + EXPECT_FALSE((IsLinear())); + // Cmp has precedence, and is forcing linear + EXPECT_TRUE((IsLinear())); + EXPECT_TRUE((IsLinear())); + EXPECT_TRUE((IsLinear())); + EXPECT_TRUE((IsLinear())); + EXPECT_TRUE((IsLinear())); + // Cmp has no preference, Key determines linear vs binary. + EXPECT_FALSE((IsLinear())); + EXPECT_TRUE((IsLinear())); + EXPECT_FALSE((IsLinear())); + // arithmetic key w/ std::less or std::greater: linear + EXPECT_TRUE((IsLinear>())); + EXPECT_TRUE((IsLinear>())); + // arithmetic key w/ custom compare: binary + EXPECT_FALSE((IsLinear())); + // non-arithmetic key: binary + EXPECT_FALSE((IsLinear>())); +} + TEST(Btree, BtreeMapCanHoldMoveOnlyTypes) { absl::btree_map> m; diff --git a/absl/container/internal/btree.h b/absl/container/internal/btree.h index cadbeab1..a82b5177 100644 --- a/absl/container/internal/btree.h +++ b/absl/container/internal/btree.h @@ -182,6 +182,38 @@ struct key_compare_to_adapter> { using type = StringBtreeDefaultGreater; }; +// Detects an 'absl_btree_prefer_linear_node_search' member. This is +// a protocol used as an opt-in or opt-out of linear search. +// +// For example, this would be useful for key types that wrap an integer +// and define their own cheap operator<(). For example: +// +// class K { +// public: +// using absl_btree_prefer_linear_node_search = std::true_type; +// ... +// private: +// friend bool operator<(K a, K b) { return a.k_ < b.k_; } +// int k_; +// }; +// +// btree_map m; // Uses linear search +// +// If T has the preference tag, then it has a preference. +// Btree will use the tag's truth value. +template +struct has_linear_node_search_preference : std::false_type {}; +template +struct prefers_linear_node_search : std::false_type {}; +template +struct has_linear_node_search_preference< + T, absl::void_t> + : std::true_type {}; +template +struct prefers_linear_node_search< + T, absl::void_t> + : T::absl_btree_prefer_linear_node_search {}; + template struct common_params { @@ -424,15 +456,22 @@ class btree_node { using difference_type = typename Params::difference_type; // Btree decides whether to use linear node search as follows: + // - If the comparator expresses a preference, use that. + // - If the key expresses a preference, use that. // - If the key is arithmetic and the comparator is std::less or // std::greater, choose linear. // - Otherwise, choose binary. // TODO(ezb): Might make sense to add condition(s) based on node-size. using use_linear_search = std::integral_constant< bool, - std::is_arithmetic::value && - (std::is_same, key_compare>::value || - std::is_same, key_compare>::value)>; + has_linear_node_search_preference::value + ? prefers_linear_node_search::value + : has_linear_node_search_preference::value + ? prefers_linear_node_search::value + : std::is_arithmetic::value && + (std::is_same, key_compare>::value || + std::is_same, + key_compare>::value)>; // This class is organized by gtl::Layout as if it had the following // structure: diff --git a/absl/status/statusor.h b/absl/status/statusor.h index 0bbf6ef2..469d486f 100644 --- a/absl/status/statusor.h +++ b/absl/status/statusor.h @@ -542,7 +542,7 @@ class StatusOr : private internal_statusor::StatusOrData, // StatusOr::value_or() // - // Returns the current value of `this->ok() == true`. Otherwise constructs a + // Returns the current value if `this->ok() == true`. Otherwise constructs a // value using the provided `default_value`. // // Unlike `value`, this function returns by value, copying the current value diff --git a/absl/time/internal/cctz/include/cctz/civil_time_detail.h b/absl/time/internal/cctz/include/cctz/civil_time_detail.h index d1b4222b..8aadde57 100644 --- a/absl/time/internal/cctz/include/cctz/civil_time_detail.h +++ b/absl/time/internal/cctz/include/cctz/civil_time_detail.h @@ -416,16 +416,10 @@ class civil_time { // Assigning arithmetic. CONSTEXPR_M civil_time& operator+=(diff_t n) noexcept { - f_ = step(T{}, f_, n); - return *this; + return *this = *this + n; } CONSTEXPR_M civil_time& operator-=(diff_t n) noexcept { - if (n != (std::numeric_limits::min)()) { - f_ = step(T{}, f_, -n); - } else { - f_ = step(T{}, step(T{}, f_, -(n + 1)), 1); - } - return *this; + return *this = *this - n; } CONSTEXPR_M civil_time& operator++() noexcept { return *this += 1; } CONSTEXPR_M civil_time operator++(int) noexcept { @@ -442,13 +436,15 @@ class civil_time { // Binary arithmetic operators. friend CONSTEXPR_F civil_time operator+(civil_time a, diff_t n) noexcept { - return a += n; + return civil_time(step(T{}, a.f_, n)); } friend CONSTEXPR_F civil_time operator+(diff_t n, civil_time a) noexcept { - return a += n; + return a + n; } friend CONSTEXPR_F civil_time operator-(civil_time a, diff_t n) noexcept { - return a -= n; + return n != (std::numeric_limits::min)() + ? civil_time(step(T{}, a.f_, -n)) + : civil_time(step(T{}, step(T{}, a.f_, -(n + 1)), 1)); } friend CONSTEXPR_F diff_t operator-(civil_time lhs, civil_time rhs) noexcept { return difference(T{}, lhs.f_, rhs.f_); diff --git a/absl/time/internal/cctz/testdata/version b/absl/time/internal/cctz/testdata/version index 7f680eec..b4410dce 100644 --- a/absl/time/internal/cctz/testdata/version +++ b/absl/time/internal/cctz/testdata/version @@ -1 +1 @@ -2020a +2020d diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Abidjan b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Abidjan index 28b32ab2..8906e88c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Abidjan and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Abidjan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Accra b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Accra index 697b9933..9ca907bf 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Accra and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Accra differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Addis_Ababa b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Addis_Ababa index 9a2918f4..d3c0bb32 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Addis_Ababa and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Addis_Ababa differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Algiers b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Algiers index ae043423..56a4dd2a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Algiers and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Algiers differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmara b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmara index 9a2918f4..d3c0bb32 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmara and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmara differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmera b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmera index 9a2918f4..d3c0bb32 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmera and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmera differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bamako b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bamako index 28b32ab2..8906e88c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bamako and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bamako differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bangui b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bangui index 0c80137c..2f2ce2f7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bangui and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bangui differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Banjul b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Banjul index 28b32ab2..8906e88c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Banjul and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Banjul differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bissau b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bissau index 82ea5aaf..0da1d1e2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bissau and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bissau differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Blantyre b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Blantyre index 52753c0f..651e5cf6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Blantyre and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Blantyre differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Brazzaville b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Brazzaville index 0c80137c..2f2ce2f7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Brazzaville and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Brazzaville differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bujumbura b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bujumbura index 52753c0f..651e5cf6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bujumbura and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bujumbura differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Cairo b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Cairo index d3f81962..ea38c970 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Cairo and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Cairo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Casablanca b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Casablanca index d39016b8..0263c90b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Casablanca and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Casablanca differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ceuta b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ceuta index 850c8f06..a461dcea 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ceuta and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ceuta differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Conakry b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Conakry index 28b32ab2..8906e88c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Conakry and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Conakry differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dakar b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dakar index 28b32ab2..8906e88c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dakar and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dakar differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dar_es_Salaam b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dar_es_Salaam index 9a2918f4..d3c0bb32 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dar_es_Salaam and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dar_es_Salaam differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Djibouti b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Djibouti index 9a2918f4..d3c0bb32 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Djibouti and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Djibouti differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Douala b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Douala index 0c80137c..2f2ce2f7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Douala and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Douala differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/El_Aaiun b/absl/time/internal/cctz/testdata/zoneinfo/Africa/El_Aaiun index 066fbed0..772e23c4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/El_Aaiun and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/El_Aaiun differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Freetown b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Freetown index 28b32ab2..8906e88c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Freetown and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Freetown differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Gaborone b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Gaborone index 52753c0f..651e5cf6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Gaborone and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Gaborone differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Harare b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Harare index 52753c0f..651e5cf6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Harare and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Harare differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Johannesburg b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Johannesburg index b1c425da..bada0638 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Johannesburg and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Johannesburg differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Juba b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Juba index 625b1acc..36b05220 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Juba and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Juba differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kampala b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kampala index 9a2918f4..d3c0bb32 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kampala and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kampala differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Khartoum b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Khartoum index 8ee8cb92..3f8e44b8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Khartoum and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Khartoum differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kigali b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kigali index 52753c0f..651e5cf6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kigali and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kigali differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kinshasa b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kinshasa index 0c80137c..2f2ce2f7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kinshasa and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kinshasa differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lagos b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lagos index 0c80137c..2f2ce2f7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lagos and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lagos differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Libreville b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Libreville index 0c80137c..2f2ce2f7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Libreville and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Libreville differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lome b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lome index 28b32ab2..8906e88c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lome and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lome differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Luanda b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Luanda index 0c80137c..2f2ce2f7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Luanda and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Luanda differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lubumbashi b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lubumbashi index 52753c0f..651e5cf6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lubumbashi and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lubumbashi differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lusaka b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lusaka index 52753c0f..651e5cf6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lusaka and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lusaka differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Malabo b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Malabo index 0c80137c..2f2ce2f7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Malabo and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Malabo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maputo b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maputo index 52753c0f..651e5cf6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maputo and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maputo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maseru b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maseru index b1c425da..bada0638 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maseru and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maseru differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mbabane b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mbabane index b1c425da..bada0638 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mbabane and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mbabane differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mogadishu b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mogadishu index 9a2918f4..d3c0bb32 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mogadishu and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mogadishu differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Monrovia b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Monrovia index 6d688502..83778092 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Monrovia and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Monrovia differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nairobi b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nairobi index 9a2918f4..d3c0bb32 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nairobi and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nairobi differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ndjamena b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ndjamena index a968845e..ecbc0966 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ndjamena and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ndjamena differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Niamey b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Niamey index 0c80137c..2f2ce2f7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Niamey and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Niamey differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nouakchott b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nouakchott index 28b32ab2..8906e88c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nouakchott and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nouakchott differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ouagadougou b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ouagadougou index 28b32ab2..8906e88c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ouagadougou and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ouagadougou differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Porto-Novo b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Porto-Novo index 0c80137c..2f2ce2f7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Porto-Novo and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Porto-Novo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Sao_Tome b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Sao_Tome index 59f3759c..425ad3fd 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Sao_Tome and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Sao_Tome differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Timbuktu b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Timbuktu index 28b32ab2..8906e88c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Timbuktu and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Timbuktu differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tripoli b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tripoli index 07b393bb..e0c89971 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tripoli and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tripoli differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tunis b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tunis index 427fa563..ca324cb4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tunis and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tunis differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Windhoek b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Windhoek index abecd137..0edc52b9 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Windhoek and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Windhoek differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Adak b/absl/time/internal/cctz/testdata/zoneinfo/America/Adak index 43236498..b1497bda 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Adak and b/absl/time/internal/cctz/testdata/zoneinfo/America/Adak differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Anchorage b/absl/time/internal/cctz/testdata/zoneinfo/America/Anchorage index 9bbb2fd3..cdf0572b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Anchorage and b/absl/time/internal/cctz/testdata/zoneinfo/America/Anchorage differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Anguilla b/absl/time/internal/cctz/testdata/zoneinfo/America/Anguilla index 697cf5bc..f4fe5903 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Anguilla and b/absl/time/internal/cctz/testdata/zoneinfo/America/Anguilla differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Antigua b/absl/time/internal/cctz/testdata/zoneinfo/America/Antigua index 697cf5bc..f4fe5903 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Antigua and b/absl/time/internal/cctz/testdata/zoneinfo/America/Antigua differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Araguaina b/absl/time/internal/cctz/testdata/zoneinfo/America/Araguaina index 49381b41..f66c9f79 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Araguaina and b/absl/time/internal/cctz/testdata/zoneinfo/America/Araguaina differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Buenos_Aires b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Buenos_Aires index 260f86a9..d6f999b8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Buenos_Aires and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Buenos_Aires differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Catamarca b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Catamarca index 0ae222a2..1dcc8d85 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Catamarca and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Catamarca differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/ComodRivadavia b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/ComodRivadavia index 0ae222a2..1dcc8d85 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/ComodRivadavia and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/ComodRivadavia differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Cordoba b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Cordoba index da4c23a5..35a52e53 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Cordoba and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Cordoba differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Jujuy b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Jujuy index 604b8566..b275f27c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Jujuy and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Jujuy differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/La_Rioja b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/La_Rioja index 2218e36b..23fca122 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/La_Rioja and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/La_Rioja differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Mendoza b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Mendoza index f9e677f1..691c5697 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Mendoza and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Mendoza differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Rio_Gallegos b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Rio_Gallegos index c36587e1..991d1fae 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Rio_Gallegos and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Rio_Gallegos differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Salta b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Salta index 0e797f22..58863e04 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Salta and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Salta differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Juan b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Juan index 2698495b..7eba33c1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Juan and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Juan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Luis b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Luis index fe50f621..0a81cbdd 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Luis and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Luis differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Tucuman b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Tucuman index c954000b..10556d5d 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Tucuman and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Tucuman differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Ushuaia b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Ushuaia index 3643628a..e0317502 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Ushuaia and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Ushuaia differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Aruba b/absl/time/internal/cctz/testdata/zoneinfo/America/Aruba index f7ab6efc..d6ddf7d8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Aruba and b/absl/time/internal/cctz/testdata/zoneinfo/America/Aruba differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Asuncion b/absl/time/internal/cctz/testdata/zoneinfo/America/Asuncion index 2f3bbda6..62250367 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Asuncion and b/absl/time/internal/cctz/testdata/zoneinfo/America/Asuncion differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Atikokan b/absl/time/internal/cctz/testdata/zoneinfo/America/Atikokan index 629ed423..c8287152 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Atikokan and b/absl/time/internal/cctz/testdata/zoneinfo/America/Atikokan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Atka b/absl/time/internal/cctz/testdata/zoneinfo/America/Atka index 43236498..b1497bda 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Atka and b/absl/time/internal/cctz/testdata/zoneinfo/America/Atka differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia b/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia index 15808d30..7969e307 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia and b/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia_Banderas b/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia_Banderas index 896af3f5..cbe22a76 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia_Banderas and b/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia_Banderas differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Barbados b/absl/time/internal/cctz/testdata/zoneinfo/America/Barbados index 9b90e306..9d3afa6a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Barbados and b/absl/time/internal/cctz/testdata/zoneinfo/America/Barbados differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Belem b/absl/time/internal/cctz/testdata/zoneinfo/America/Belem index 60b5924d..e0d7653c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Belem and b/absl/time/internal/cctz/testdata/zoneinfo/America/Belem differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Belize b/absl/time/internal/cctz/testdata/zoneinfo/America/Belize index 851051ae..de99b845 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Belize and b/absl/time/internal/cctz/testdata/zoneinfo/America/Belize differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Blanc-Sablon b/absl/time/internal/cctz/testdata/zoneinfo/America/Blanc-Sablon index f9f13a16..7096b69a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Blanc-Sablon and b/absl/time/internal/cctz/testdata/zoneinfo/America/Blanc-Sablon differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Boa_Vista b/absl/time/internal/cctz/testdata/zoneinfo/America/Boa_Vista index 978c3310..fca97207 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Boa_Vista and b/absl/time/internal/cctz/testdata/zoneinfo/America/Boa_Vista differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Bogota b/absl/time/internal/cctz/testdata/zoneinfo/America/Bogota index b2647d7a..6cb53d4e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Bogota and b/absl/time/internal/cctz/testdata/zoneinfo/America/Bogota differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Boise b/absl/time/internal/cctz/testdata/zoneinfo/America/Boise index f8d54e27..72fec9e8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Boise and b/absl/time/internal/cctz/testdata/zoneinfo/America/Boise differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Buenos_Aires b/absl/time/internal/cctz/testdata/zoneinfo/America/Buenos_Aires index 260f86a9..d6f999b8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Buenos_Aires and b/absl/time/internal/cctz/testdata/zoneinfo/America/Buenos_Aires differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Cambridge_Bay b/absl/time/internal/cctz/testdata/zoneinfo/America/Cambridge_Bay index f8db4b6e..0a222524 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Cambridge_Bay and b/absl/time/internal/cctz/testdata/zoneinfo/America/Cambridge_Bay differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Campo_Grande b/absl/time/internal/cctz/testdata/zoneinfo/America/Campo_Grande index 81206247..6855e4e9 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Campo_Grande and b/absl/time/internal/cctz/testdata/zoneinfo/America/Campo_Grande differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Cancun b/absl/time/internal/cctz/testdata/zoneinfo/America/Cancun index f907f0a5..640b259f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Cancun and b/absl/time/internal/cctz/testdata/zoneinfo/America/Cancun differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Caracas b/absl/time/internal/cctz/testdata/zoneinfo/America/Caracas index eedf725e..8dbe6ff7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Caracas and b/absl/time/internal/cctz/testdata/zoneinfo/America/Caracas differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Catamarca b/absl/time/internal/cctz/testdata/zoneinfo/America/Catamarca index 0ae222a2..1dcc8d85 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Catamarca and b/absl/time/internal/cctz/testdata/zoneinfo/America/Catamarca differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Cayenne b/absl/time/internal/cctz/testdata/zoneinfo/America/Cayenne index e5bc06fd..cd49f053 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Cayenne and b/absl/time/internal/cctz/testdata/zoneinfo/America/Cayenne differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Cayman b/absl/time/internal/cctz/testdata/zoneinfo/America/Cayman index 9964b9a3..9154643f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Cayman and b/absl/time/internal/cctz/testdata/zoneinfo/America/Cayman differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Chicago b/absl/time/internal/cctz/testdata/zoneinfo/America/Chicago index a5b1617c..b0168806 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Chicago and b/absl/time/internal/cctz/testdata/zoneinfo/America/Chicago differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Chihuahua b/absl/time/internal/cctz/testdata/zoneinfo/America/Chihuahua index 8ed5f93b..e1780a57 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Chihuahua and b/absl/time/internal/cctz/testdata/zoneinfo/America/Chihuahua differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Coral_Harbour b/absl/time/internal/cctz/testdata/zoneinfo/America/Coral_Harbour index 629ed423..c8287152 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Coral_Harbour and b/absl/time/internal/cctz/testdata/zoneinfo/America/Coral_Harbour differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Cordoba b/absl/time/internal/cctz/testdata/zoneinfo/America/Cordoba index da4c23a5..35a52e53 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Cordoba and b/absl/time/internal/cctz/testdata/zoneinfo/America/Cordoba differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Costa_Rica b/absl/time/internal/cctz/testdata/zoneinfo/America/Costa_Rica index 37cb85e4..08f0128e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Costa_Rica and b/absl/time/internal/cctz/testdata/zoneinfo/America/Costa_Rica differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Creston b/absl/time/internal/cctz/testdata/zoneinfo/America/Creston index ca648573..9d69a0ab 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Creston and b/absl/time/internal/cctz/testdata/zoneinfo/America/Creston differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Cuiaba b/absl/time/internal/cctz/testdata/zoneinfo/America/Cuiaba index 9bea3d40..c09a8755 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Cuiaba and b/absl/time/internal/cctz/testdata/zoneinfo/America/Cuiaba differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Curacao b/absl/time/internal/cctz/testdata/zoneinfo/America/Curacao index f7ab6efc..d6ddf7d8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Curacao and b/absl/time/internal/cctz/testdata/zoneinfo/America/Curacao differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Danmarkshavn b/absl/time/internal/cctz/testdata/zoneinfo/America/Danmarkshavn index 9549adcb..8718efcc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Danmarkshavn and b/absl/time/internal/cctz/testdata/zoneinfo/America/Danmarkshavn differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Dawson b/absl/time/internal/cctz/testdata/zoneinfo/America/Dawson index 2b6c3eea..07e4c5f4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Dawson and b/absl/time/internal/cctz/testdata/zoneinfo/America/Dawson differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Dawson_Creek b/absl/time/internal/cctz/testdata/zoneinfo/America/Dawson_Creek index db9e3396..761d1d9a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Dawson_Creek and b/absl/time/internal/cctz/testdata/zoneinfo/America/Dawson_Creek differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Denver b/absl/time/internal/cctz/testdata/zoneinfo/America/Denver index 5fbe26b1..09e54e5c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Denver and b/absl/time/internal/cctz/testdata/zoneinfo/America/Denver differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Detroit b/absl/time/internal/cctz/testdata/zoneinfo/America/Detroit index e104faa4..6eb3ac46 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Detroit and b/absl/time/internal/cctz/testdata/zoneinfo/America/Detroit differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Dominica b/absl/time/internal/cctz/testdata/zoneinfo/America/Dominica index 697cf5bc..f4fe5903 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Dominica and b/absl/time/internal/cctz/testdata/zoneinfo/America/Dominica differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Edmonton b/absl/time/internal/cctz/testdata/zoneinfo/America/Edmonton index cd78a6f8..645ee945 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Edmonton and b/absl/time/internal/cctz/testdata/zoneinfo/America/Edmonton differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Eirunepe b/absl/time/internal/cctz/testdata/zoneinfo/America/Eirunepe index 39d6daeb..7da4b98f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Eirunepe and b/absl/time/internal/cctz/testdata/zoneinfo/America/Eirunepe differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/El_Salvador b/absl/time/internal/cctz/testdata/zoneinfo/America/El_Salvador index e2f22304..43484117 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/El_Salvador and b/absl/time/internal/cctz/testdata/zoneinfo/America/El_Salvador differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Ensenada b/absl/time/internal/cctz/testdata/zoneinfo/America/Ensenada index ada6bf78..19ccd357 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Ensenada and b/absl/time/internal/cctz/testdata/zoneinfo/America/Ensenada differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Fort_Nelson b/absl/time/internal/cctz/testdata/zoneinfo/America/Fort_Nelson index 5a0b7f1c..2a49c6c5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Fort_Nelson and b/absl/time/internal/cctz/testdata/zoneinfo/America/Fort_Nelson differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Fort_Wayne b/absl/time/internal/cctz/testdata/zoneinfo/America/Fort_Wayne index 09511ccd..6b08d15b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Fort_Wayne and b/absl/time/internal/cctz/testdata/zoneinfo/America/Fort_Wayne differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Fortaleza b/absl/time/internal/cctz/testdata/zoneinfo/America/Fortaleza index be57dc20..092e40d7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Fortaleza and b/absl/time/internal/cctz/testdata/zoneinfo/America/Fortaleza differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Glace_Bay b/absl/time/internal/cctz/testdata/zoneinfo/America/Glace_Bay index 48412a4c..f85eb341 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Glace_Bay and b/absl/time/internal/cctz/testdata/zoneinfo/America/Glace_Bay differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Godthab b/absl/time/internal/cctz/testdata/zoneinfo/America/Godthab index 0160308b..4ddc99d8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Godthab and b/absl/time/internal/cctz/testdata/zoneinfo/America/Godthab differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Goose_Bay b/absl/time/internal/cctz/testdata/zoneinfo/America/Goose_Bay index a3f29907..820e0dd2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Goose_Bay and b/absl/time/internal/cctz/testdata/zoneinfo/America/Goose_Bay differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Grand_Turk b/absl/time/internal/cctz/testdata/zoneinfo/America/Grand_Turk index b9bb063b..062fcaed 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Grand_Turk and b/absl/time/internal/cctz/testdata/zoneinfo/America/Grand_Turk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Grenada b/absl/time/internal/cctz/testdata/zoneinfo/America/Grenada index 697cf5bc..f4fe5903 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Grenada and b/absl/time/internal/cctz/testdata/zoneinfo/America/Grenada differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Guadeloupe b/absl/time/internal/cctz/testdata/zoneinfo/America/Guadeloupe index 697cf5bc..f4fe5903 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Guadeloupe and b/absl/time/internal/cctz/testdata/zoneinfo/America/Guadeloupe differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Guatemala b/absl/time/internal/cctz/testdata/zoneinfo/America/Guatemala index 407138ca..8aa8e588 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Guatemala and b/absl/time/internal/cctz/testdata/zoneinfo/America/Guatemala differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Guayaquil b/absl/time/internal/cctz/testdata/zoneinfo/America/Guayaquil index 0559a7a4..381ae6c4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Guayaquil and b/absl/time/internal/cctz/testdata/zoneinfo/America/Guayaquil differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Guyana b/absl/time/internal/cctz/testdata/zoneinfo/America/Guyana index d5dab149..ebd85d0f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Guyana and b/absl/time/internal/cctz/testdata/zoneinfo/America/Guyana differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Halifax b/absl/time/internal/cctz/testdata/zoneinfo/America/Halifax index 756099ab..9fa850a7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Halifax and b/absl/time/internal/cctz/testdata/zoneinfo/America/Halifax differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Havana b/absl/time/internal/cctz/testdata/zoneinfo/America/Havana index b69ac451..e06629d3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Havana and b/absl/time/internal/cctz/testdata/zoneinfo/America/Havana differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Hermosillo b/absl/time/internal/cctz/testdata/zoneinfo/America/Hermosillo index 791a9fa2..8283239e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Hermosillo and b/absl/time/internal/cctz/testdata/zoneinfo/America/Hermosillo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Indianapolis b/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Indianapolis index 09511ccd..6b08d15b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Indianapolis and b/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Indianapolis differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Knox b/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Knox index fcd408d7..b187d5f8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Knox and b/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Knox differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Marengo b/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Marengo index 1abf75e7..a730fe66 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Marengo and b/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Marengo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Petersburg b/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Petersburg index 0133548e..341a0235 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Petersburg and b/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Petersburg differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Tell_City b/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Tell_City index 7bbb653c..76e1f628 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Tell_City and b/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Tell_City differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Vevay b/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Vevay index d236b7c0..f2acf6cb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Vevay and b/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Vevay differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Vincennes b/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Vincennes index c818929d..c255f89b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Vincennes and b/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Vincennes differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Winamac b/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Winamac index 630935c1..8700ed9f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Winamac and b/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Winamac differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Indianapolis b/absl/time/internal/cctz/testdata/zoneinfo/America/Indianapolis index 09511ccd..6b08d15b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Indianapolis and b/absl/time/internal/cctz/testdata/zoneinfo/America/Indianapolis differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Inuvik b/absl/time/internal/cctz/testdata/zoneinfo/America/Inuvik index 87bb3552..af3107db 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Inuvik and b/absl/time/internal/cctz/testdata/zoneinfo/America/Inuvik differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Iqaluit b/absl/time/internal/cctz/testdata/zoneinfo/America/Iqaluit index c8138bdb..eb2c99cc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Iqaluit and b/absl/time/internal/cctz/testdata/zoneinfo/America/Iqaluit differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Jamaica b/absl/time/internal/cctz/testdata/zoneinfo/America/Jamaica index 2a9b7fd5..be6b1b6f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Jamaica and b/absl/time/internal/cctz/testdata/zoneinfo/America/Jamaica differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Jujuy b/absl/time/internal/cctz/testdata/zoneinfo/America/Jujuy index 604b8566..b275f27c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Jujuy and b/absl/time/internal/cctz/testdata/zoneinfo/America/Jujuy differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Juneau b/absl/time/internal/cctz/testdata/zoneinfo/America/Juneau index 451f3490..e347b369 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Juneau and b/absl/time/internal/cctz/testdata/zoneinfo/America/Juneau differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Kentucky/Louisville b/absl/time/internal/cctz/testdata/zoneinfo/America/Kentucky/Louisville index 177836e4..f2136d6e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Kentucky/Louisville and b/absl/time/internal/cctz/testdata/zoneinfo/America/Kentucky/Louisville differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Kentucky/Monticello b/absl/time/internal/cctz/testdata/zoneinfo/America/Kentucky/Monticello index 438e3eab..d9f54a18 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Kentucky/Monticello and b/absl/time/internal/cctz/testdata/zoneinfo/America/Kentucky/Monticello differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Knox_IN b/absl/time/internal/cctz/testdata/zoneinfo/America/Knox_IN index fcd408d7..b187d5f8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Knox_IN and b/absl/time/internal/cctz/testdata/zoneinfo/America/Knox_IN differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Kralendijk b/absl/time/internal/cctz/testdata/zoneinfo/America/Kralendijk index f7ab6efc..d6ddf7d8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Kralendijk and b/absl/time/internal/cctz/testdata/zoneinfo/America/Kralendijk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/La_Paz b/absl/time/internal/cctz/testdata/zoneinfo/America/La_Paz index a1013724..68ddaae7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/La_Paz and b/absl/time/internal/cctz/testdata/zoneinfo/America/La_Paz differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Lima b/absl/time/internal/cctz/testdata/zoneinfo/America/Lima index 3c6529b7..b643c551 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Lima and b/absl/time/internal/cctz/testdata/zoneinfo/America/Lima differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Los_Angeles b/absl/time/internal/cctz/testdata/zoneinfo/America/Los_Angeles index 9dad4f4c..aaf07787 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Los_Angeles and b/absl/time/internal/cctz/testdata/zoneinfo/America/Los_Angeles differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Louisville b/absl/time/internal/cctz/testdata/zoneinfo/America/Louisville index 177836e4..f2136d6e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Louisville and b/absl/time/internal/cctz/testdata/zoneinfo/America/Louisville differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Lower_Princes b/absl/time/internal/cctz/testdata/zoneinfo/America/Lower_Princes index f7ab6efc..d6ddf7d8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Lower_Princes and b/absl/time/internal/cctz/testdata/zoneinfo/America/Lower_Princes differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Maceio b/absl/time/internal/cctz/testdata/zoneinfo/America/Maceio index bc8b951d..dbb8d57d 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Maceio and b/absl/time/internal/cctz/testdata/zoneinfo/America/Maceio differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Managua b/absl/time/internal/cctz/testdata/zoneinfo/America/Managua index e0242bff..86ef76bf 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Managua and b/absl/time/internal/cctz/testdata/zoneinfo/America/Managua differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Manaus b/absl/time/internal/cctz/testdata/zoneinfo/America/Manaus index 63d58f80..59c952eb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Manaus and b/absl/time/internal/cctz/testdata/zoneinfo/America/Manaus differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Marigot b/absl/time/internal/cctz/testdata/zoneinfo/America/Marigot index 697cf5bc..f4fe5903 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Marigot and b/absl/time/internal/cctz/testdata/zoneinfo/America/Marigot differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Martinique b/absl/time/internal/cctz/testdata/zoneinfo/America/Martinique index 8df43dcf..25c0232d 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Martinique and b/absl/time/internal/cctz/testdata/zoneinfo/America/Martinique differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Matamoros b/absl/time/internal/cctz/testdata/zoneinfo/America/Matamoros index 047968df..722751b2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Matamoros and b/absl/time/internal/cctz/testdata/zoneinfo/America/Matamoros differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Mazatlan b/absl/time/internal/cctz/testdata/zoneinfo/America/Mazatlan index e4a78574..4c819fab 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Mazatlan and b/absl/time/internal/cctz/testdata/zoneinfo/America/Mazatlan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Mendoza b/absl/time/internal/cctz/testdata/zoneinfo/America/Mendoza index f9e677f1..691c5697 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Mendoza and b/absl/time/internal/cctz/testdata/zoneinfo/America/Mendoza differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Menominee b/absl/time/internal/cctz/testdata/zoneinfo/America/Menominee index 31461386..28d2c56e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Menominee and b/absl/time/internal/cctz/testdata/zoneinfo/America/Menominee differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Merida b/absl/time/internal/cctz/testdata/zoneinfo/America/Merida index ea852da3..d3b0ca12 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Merida and b/absl/time/internal/cctz/testdata/zoneinfo/America/Merida differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Metlakatla b/absl/time/internal/cctz/testdata/zoneinfo/America/Metlakatla index 1e94be3d..9fefee38 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Metlakatla and b/absl/time/internal/cctz/testdata/zoneinfo/America/Metlakatla differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Mexico_City b/absl/time/internal/cctz/testdata/zoneinfo/America/Mexico_City index e7fb6f29..ffcf8bee 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Mexico_City and b/absl/time/internal/cctz/testdata/zoneinfo/America/Mexico_City differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Miquelon b/absl/time/internal/cctz/testdata/zoneinfo/America/Miquelon index b924b710..3b62585d 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Miquelon and b/absl/time/internal/cctz/testdata/zoneinfo/America/Miquelon differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Moncton b/absl/time/internal/cctz/testdata/zoneinfo/America/Moncton index 9df8d0f2..ecb69ef2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Moncton and b/absl/time/internal/cctz/testdata/zoneinfo/America/Moncton differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Monterrey b/absl/time/internal/cctz/testdata/zoneinfo/America/Monterrey index a8928c8d..dea9e3f5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Monterrey and b/absl/time/internal/cctz/testdata/zoneinfo/America/Monterrey differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Montevideo b/absl/time/internal/cctz/testdata/zoneinfo/America/Montevideo index 2f357bcf..4b2fb3e5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Montevideo and b/absl/time/internal/cctz/testdata/zoneinfo/America/Montevideo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Montreal b/absl/time/internal/cctz/testdata/zoneinfo/America/Montreal index 6752c5b0..fe6be8ea 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Montreal and b/absl/time/internal/cctz/testdata/zoneinfo/America/Montreal differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Montserrat b/absl/time/internal/cctz/testdata/zoneinfo/America/Montserrat index 697cf5bc..f4fe5903 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Montserrat and b/absl/time/internal/cctz/testdata/zoneinfo/America/Montserrat differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Nassau b/absl/time/internal/cctz/testdata/zoneinfo/America/Nassau index 33cc6c62..cf1e92dc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Nassau and b/absl/time/internal/cctz/testdata/zoneinfo/America/Nassau differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/New_York b/absl/time/internal/cctz/testdata/zoneinfo/America/New_York index 2f75480e..2b6c2eea 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/New_York and b/absl/time/internal/cctz/testdata/zoneinfo/America/New_York differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Nipigon b/absl/time/internal/cctz/testdata/zoneinfo/America/Nipigon index f6a856e6..b9f67a9f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Nipigon and b/absl/time/internal/cctz/testdata/zoneinfo/America/Nipigon differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Nome b/absl/time/internal/cctz/testdata/zoneinfo/America/Nome index 10998df3..23ead1c0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Nome and b/absl/time/internal/cctz/testdata/zoneinfo/America/Nome differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Noronha b/absl/time/internal/cctz/testdata/zoneinfo/America/Noronha index f140726f..9e74745c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Noronha and b/absl/time/internal/cctz/testdata/zoneinfo/America/Noronha differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/Beulah b/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/Beulah index 246345dd..becf4383 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/Beulah and b/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/Beulah differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/Center b/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/Center index 1fa07037..d03bda04 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/Center and b/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/Center differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/New_Salem b/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/New_Salem index 123f2aee..ecefc15d 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/New_Salem and b/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/New_Salem differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Nuuk b/absl/time/internal/cctz/testdata/zoneinfo/America/Nuuk index 0160308b..4ddc99d8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Nuuk and b/absl/time/internal/cctz/testdata/zoneinfo/America/Nuuk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Ojinaga b/absl/time/internal/cctz/testdata/zoneinfo/America/Ojinaga index fc4a03e3..da0909cb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Ojinaga and b/absl/time/internal/cctz/testdata/zoneinfo/America/Ojinaga differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Panama b/absl/time/internal/cctz/testdata/zoneinfo/America/Panama index 9964b9a3..9154643f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Panama and b/absl/time/internal/cctz/testdata/zoneinfo/America/Panama differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Pangnirtung b/absl/time/internal/cctz/testdata/zoneinfo/America/Pangnirtung index 3e4e0db6..5be6f9b0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Pangnirtung and b/absl/time/internal/cctz/testdata/zoneinfo/America/Pangnirtung differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Paramaribo b/absl/time/internal/cctz/testdata/zoneinfo/America/Paramaribo index bc8a6edf..24f925a2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Paramaribo and b/absl/time/internal/cctz/testdata/zoneinfo/America/Paramaribo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Phoenix b/absl/time/internal/cctz/testdata/zoneinfo/America/Phoenix index ac6bb0c7..c2bd2f94 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Phoenix and b/absl/time/internal/cctz/testdata/zoneinfo/America/Phoenix differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Port-au-Prince b/absl/time/internal/cctz/testdata/zoneinfo/America/Port-au-Prince index 287f1439..3e75731b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Port-au-Prince and b/absl/time/internal/cctz/testdata/zoneinfo/America/Port-au-Prince differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Port_of_Spain b/absl/time/internal/cctz/testdata/zoneinfo/America/Port_of_Spain index 697cf5bc..f4fe5903 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Port_of_Spain and b/absl/time/internal/cctz/testdata/zoneinfo/America/Port_of_Spain differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Acre b/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Acre index a374cb43..fb5185ca 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Acre and b/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Acre differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Velho b/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Velho index 2e873a5a..7f8047d9 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Velho and b/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Velho differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Puerto_Rico b/absl/time/internal/cctz/testdata/zoneinfo/America/Puerto_Rico index a662a571..47b4dc34 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Puerto_Rico and b/absl/time/internal/cctz/testdata/zoneinfo/America/Puerto_Rico differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Punta_Arenas b/absl/time/internal/cctz/testdata/zoneinfo/America/Punta_Arenas index a5a8af52..5c9a20b9 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Punta_Arenas and b/absl/time/internal/cctz/testdata/zoneinfo/America/Punta_Arenas differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Rainy_River b/absl/time/internal/cctz/testdata/zoneinfo/America/Rainy_River index ea660991..d6ddda48 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Rainy_River and b/absl/time/internal/cctz/testdata/zoneinfo/America/Rainy_River differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Rankin_Inlet b/absl/time/internal/cctz/testdata/zoneinfo/America/Rankin_Inlet index 3a705874..92e2ed2d 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Rankin_Inlet and b/absl/time/internal/cctz/testdata/zoneinfo/America/Rankin_Inlet differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Recife b/absl/time/internal/cctz/testdata/zoneinfo/America/Recife index d7abb168..305abcb8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Recife and b/absl/time/internal/cctz/testdata/zoneinfo/America/Recife differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Regina b/absl/time/internal/cctz/testdata/zoneinfo/America/Regina index 20c9c84d..a3f8217a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Regina and b/absl/time/internal/cctz/testdata/zoneinfo/America/Regina differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Resolute b/absl/time/internal/cctz/testdata/zoneinfo/America/Resolute index 0a73b753..a84d1dfd 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Resolute and b/absl/time/internal/cctz/testdata/zoneinfo/America/Resolute differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Rio_Branco b/absl/time/internal/cctz/testdata/zoneinfo/America/Rio_Branco index a374cb43..fb5185ca 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Rio_Branco and b/absl/time/internal/cctz/testdata/zoneinfo/America/Rio_Branco differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Rosario b/absl/time/internal/cctz/testdata/zoneinfo/America/Rosario index da4c23a5..35a52e53 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Rosario and b/absl/time/internal/cctz/testdata/zoneinfo/America/Rosario differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Santa_Isabel b/absl/time/internal/cctz/testdata/zoneinfo/America/Santa_Isabel index ada6bf78..19ccd357 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Santa_Isabel and b/absl/time/internal/cctz/testdata/zoneinfo/America/Santa_Isabel differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Santarem b/absl/time/internal/cctz/testdata/zoneinfo/America/Santarem index c28f3606..f81d1442 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Santarem and b/absl/time/internal/cctz/testdata/zoneinfo/America/Santarem differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Santiago b/absl/time/internal/cctz/testdata/zoneinfo/America/Santiago index 816a0428..8d603226 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Santiago and b/absl/time/internal/cctz/testdata/zoneinfo/America/Santiago differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Santo_Domingo b/absl/time/internal/cctz/testdata/zoneinfo/America/Santo_Domingo index 4fe36fd4..3e078508 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Santo_Domingo and b/absl/time/internal/cctz/testdata/zoneinfo/America/Santo_Domingo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Sao_Paulo b/absl/time/internal/cctz/testdata/zoneinfo/America/Sao_Paulo index 13ff0838..a16da2c4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Sao_Paulo and b/absl/time/internal/cctz/testdata/zoneinfo/America/Sao_Paulo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Scoresbysund b/absl/time/internal/cctz/testdata/zoneinfo/America/Scoresbysund index e20e9e1c..6db49124 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Scoresbysund and b/absl/time/internal/cctz/testdata/zoneinfo/America/Scoresbysund differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Shiprock b/absl/time/internal/cctz/testdata/zoneinfo/America/Shiprock index 5fbe26b1..09e54e5c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Shiprock and b/absl/time/internal/cctz/testdata/zoneinfo/America/Shiprock differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Sitka b/absl/time/internal/cctz/testdata/zoneinfo/America/Sitka index 31f70613..36681ed7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Sitka and b/absl/time/internal/cctz/testdata/zoneinfo/America/Sitka differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Barthelemy b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Barthelemy index 697cf5bc..f4fe5903 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Barthelemy and b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Barthelemy differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Johns b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Johns index 65a5b0c7..e5f2aec2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Johns and b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Johns differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Kitts b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Kitts index 697cf5bc..f4fe5903 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Kitts and b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Kitts differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Lucia b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Lucia index 697cf5bc..f4fe5903 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Lucia and b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Lucia differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Thomas b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Thomas index 697cf5bc..f4fe5903 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Thomas and b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Thomas differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Vincent b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Vincent index 697cf5bc..f4fe5903 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Vincent and b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Vincent differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Swift_Current b/absl/time/internal/cctz/testdata/zoneinfo/America/Swift_Current index 8e9ef255..bdbb4944 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Swift_Current and b/absl/time/internal/cctz/testdata/zoneinfo/America/Swift_Current differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Tegucigalpa b/absl/time/internal/cctz/testdata/zoneinfo/America/Tegucigalpa index 2adacb2e..38036a32 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Tegucigalpa and b/absl/time/internal/cctz/testdata/zoneinfo/America/Tegucigalpa differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Thule b/absl/time/internal/cctz/testdata/zoneinfo/America/Thule index 6f802f1c..f38dc56b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Thule and b/absl/time/internal/cctz/testdata/zoneinfo/America/Thule differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Thunder_Bay b/absl/time/internal/cctz/testdata/zoneinfo/America/Thunder_Bay index e504c9ac..fcb03280 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Thunder_Bay and b/absl/time/internal/cctz/testdata/zoneinfo/America/Thunder_Bay differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Tijuana b/absl/time/internal/cctz/testdata/zoneinfo/America/Tijuana index ada6bf78..19ccd357 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Tijuana and b/absl/time/internal/cctz/testdata/zoneinfo/America/Tijuana differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Toronto b/absl/time/internal/cctz/testdata/zoneinfo/America/Toronto index 6752c5b0..fe6be8ea 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Toronto and b/absl/time/internal/cctz/testdata/zoneinfo/America/Toronto differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Tortola b/absl/time/internal/cctz/testdata/zoneinfo/America/Tortola index 697cf5bc..f4fe5903 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Tortola and b/absl/time/internal/cctz/testdata/zoneinfo/America/Tortola differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Vancouver b/absl/time/internal/cctz/testdata/zoneinfo/America/Vancouver index bb60cbce..c9984911 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Vancouver and b/absl/time/internal/cctz/testdata/zoneinfo/America/Vancouver differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Virgin b/absl/time/internal/cctz/testdata/zoneinfo/America/Virgin index 697cf5bc..f4fe5903 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Virgin and b/absl/time/internal/cctz/testdata/zoneinfo/America/Virgin differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Whitehorse b/absl/time/internal/cctz/testdata/zoneinfo/America/Whitehorse index 062b58ce..878b6a92 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Whitehorse and b/absl/time/internal/cctz/testdata/zoneinfo/America/Whitehorse differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Winnipeg b/absl/time/internal/cctz/testdata/zoneinfo/America/Winnipeg index ac40299f..7e646d18 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Winnipeg and b/absl/time/internal/cctz/testdata/zoneinfo/America/Winnipeg differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Yakutat b/absl/time/internal/cctz/testdata/zoneinfo/America/Yakutat index da209f9f..773feba8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Yakutat and b/absl/time/internal/cctz/testdata/zoneinfo/America/Yakutat differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Yellowknife b/absl/time/internal/cctz/testdata/zoneinfo/America/Yellowknife index e6afa390..c779cef9 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Yellowknife and b/absl/time/internal/cctz/testdata/zoneinfo/America/Yellowknife differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Casey b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Casey index f100f474..30315cc0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Casey and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Casey differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Davis b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Davis index 916f2c25..3ec32224 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Davis and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Davis differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/DumontDUrville b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/DumontDUrville index a71b39c0..c0cfc85a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/DumontDUrville and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/DumontDUrville differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Macquarie b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Macquarie index 616afd9c..232717b6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Macquarie and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Macquarie differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Mawson b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Mawson index b32e7fd6..05e4c6c5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Mawson and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Mawson differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/McMurdo b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/McMurdo index 6575fdce..afb39293 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/McMurdo and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/McMurdo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Palmer b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Palmer index 3dd85f84..32c19416 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Palmer and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Palmer differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Rothera b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Rothera index 8b2430a2..ea49c00b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Rothera and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Rothera differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/South_Pole b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/South_Pole index 6575fdce..afb39293 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/South_Pole and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/South_Pole differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Syowa b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Syowa index 254af7d1..97d80d75 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Syowa and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Syowa differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Troll b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Troll index 5e565da2..4e31affb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Troll and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Troll differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Vostok b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Vostok index 72830530..6e329071 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Vostok and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Vostok differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Arctic/Longyearbyen b/absl/time/internal/cctz/testdata/zoneinfo/Arctic/Longyearbyen index 15a34c3c..dfc50957 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Arctic/Longyearbyen and b/absl/time/internal/cctz/testdata/zoneinfo/Arctic/Longyearbyen differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aden b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aden index 2aea25f8..01c47ccb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aden and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aden differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Almaty b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Almaty index a4b00779..3ec4fc89 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Almaty and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Almaty differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Amman b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Amman index c9e87079..1bd09fef 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Amman and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Amman differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Anadyr b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Anadyr index 6ed8b7cb..551884d3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Anadyr and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Anadyr differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtau b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtau index e2d0f919..3a40d117 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtau and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtau differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtobe b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtobe index 06f0a13a..62c5840a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtobe and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtobe differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashgabat b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashgabat index 73891af1..84821672 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashgabat and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashgabat differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashkhabad b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashkhabad index 73891af1..84821672 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashkhabad and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashkhabad differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Atyrau b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Atyrau index 8b5153e0..cb2c82f6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Atyrau and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Atyrau differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baghdad b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baghdad index f7162edf..a3ce9759 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baghdad and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baghdad differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bahrain b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bahrain index 63188b26..7409d749 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bahrain and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bahrain differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baku b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baku index a0de74b9..96203d7a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baku and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baku differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bangkok b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bangkok index c292ac5b..ed687d29 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bangkok and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bangkok differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Barnaul b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Barnaul index 759592a2..ff976dd3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Barnaul and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Barnaul differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Beirut b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Beirut index fb266ede..55dce572 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Beirut and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Beirut differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bishkek b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bishkek index f6e20dd3..fe7832cd 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bishkek and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bishkek differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Brunei b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Brunei index 3dab0abf..e67b411b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Brunei and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Brunei differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Calcutta b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Calcutta index 0014046d..00bc80a6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Calcutta and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Calcutta differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chita b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chita index c4149c05..9d49cd35 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chita and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chita differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Choibalsan b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Choibalsan index e48daa82..0a948c2e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Choibalsan and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Choibalsan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chongqing b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chongqing index 91f6f8bc..d6b66984 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chongqing and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chongqing differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chungking b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chungking index 91f6f8bc..d6b66984 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chungking and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chungking differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Colombo b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Colombo index 62c64d85..3eeb1b72 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Colombo and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Colombo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dacca b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dacca index b11c9284..28136808 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dacca and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dacca differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Damascus b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Damascus index d9104a7a..168ef9ba 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Damascus and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Damascus differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dhaka b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dhaka index b11c9284..28136808 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dhaka and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dhaka differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dili b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dili index 30943bbd..bb7be9f3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dili and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dili differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dubai b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dubai index fc0a589e..58d75bc2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dubai and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dubai differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dushanbe b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dushanbe index 82d85b8c..d83fb076 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dushanbe and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dushanbe differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Famagusta b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Famagusta index 653b146a..cc441795 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Famagusta and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Famagusta differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza index 592b6326..4278ffa5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Harbin b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Harbin index 91f6f8bc..d6b66984 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Harbin and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Harbin differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron index ae82f9b5..e55318aa 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh index e2934e37..7ca99725 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hong_Kong b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hong_Kong index 23d0375f..c80e3648 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hong_Kong and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hong_Kong differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hovd b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hovd index 4cb800a9..6e08a261 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hovd and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hovd differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Irkutsk b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Irkutsk index 4dcbbb7e..550e2a08 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Irkutsk and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Irkutsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Istanbul b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Istanbul index 508446bb..c8918668 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Istanbul and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Istanbul differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jakarta b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jakarta index 5baa3a8f..c9752d2f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jakarta and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jakarta differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jayapura b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jayapura index 3002c820..7c22f539 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jayapura and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jayapura differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem index 440ef06b..e6e6cc6c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kabul b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kabul index d19b9bd5..660ce4cf 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kabul and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kabul differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kamchatka b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kamchatka index 3e80b4e0..c6515540 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kamchatka and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kamchatka differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Karachi b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Karachi index ba65c0e8..e56d5afd 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Karachi and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Karachi differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kashgar b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kashgar index faa14d92..69ff7f6f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kashgar and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kashgar differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kathmandu b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kathmandu index a5d51075..3a0d330f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kathmandu and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kathmandu differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Katmandu b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Katmandu index a5d51075..3a0d330f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Katmandu and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Katmandu differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Khandyga b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Khandyga index 72bea64b..aeb73320 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Khandyga and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Khandyga differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kolkata b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kolkata index 0014046d..00bc80a6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kolkata and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kolkata differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Krasnoyarsk b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Krasnoyarsk index 30c6f165..e0d4fcb5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Krasnoyarsk and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Krasnoyarsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuala_Lumpur b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuala_Lumpur index 612b01e7..e93dd514 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuala_Lumpur and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuala_Lumpur differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuching b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuching index c86750cb..59bc6e40 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuching and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuching differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuwait b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuwait index 2aea25f8..01c47ccb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuwait and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuwait differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macao b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macao index cac65063..c22f75e4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macao and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macao differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macau b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macau index cac65063..c22f75e4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macau and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macau differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Magadan b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Magadan index b4fcac18..16bac844 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Magadan and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Magadan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Makassar b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Makassar index 556ba866..5990010b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Makassar and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Makassar differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Manila b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Manila index f4f4b04e..3c3584e0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Manila and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Manila differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Muscat b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Muscat index fc0a589e..58d75bc2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Muscat and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Muscat differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Nicosia b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Nicosia index f7f10ab7..c210d0a5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Nicosia and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Nicosia differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novokuznetsk b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novokuznetsk index d9832761..9378d505 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novokuznetsk and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novokuznetsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novosibirsk b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novosibirsk index e0ee5fce..65a9fa2c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novosibirsk and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novosibirsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Omsk b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Omsk index b29b7693..dc0ed422 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Omsk and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Omsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Oral b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Oral index ad1f9ca1..25a63ec8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Oral and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Oral differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh index c292ac5b..ed687d29 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pontianak b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pontianak index 12ce24cb..285bed2c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pontianak and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pontianak differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pyongyang b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pyongyang index 7ad7e0b2..57240cf8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pyongyang and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pyongyang differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qatar b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qatar index 63188b26..7409d749 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qatar and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qatar differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qostanay b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qostanay index 73b9d963..ff6fe61d 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qostanay and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qostanay differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qyzylorda b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qyzylorda index c2fe4c14..fe4d6c6d 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qyzylorda and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qyzylorda differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Rangoon b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Rangoon index dd77395b..14b2ad09 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Rangoon and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Rangoon differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Riyadh b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Riyadh index 2aea25f8..01c47ccb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Riyadh and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Riyadh differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon index e2934e37..7ca99725 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Sakhalin b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Sakhalin index 485459ce..69f0faad 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Sakhalin and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Sakhalin differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Samarkand b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Samarkand index 030d47ce..c43e27c5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Samarkand and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Samarkand differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Seoul b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Seoul index 96199e73..1755147f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Seoul and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Seoul differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Shanghai b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Shanghai index 91f6f8bc..d6b66984 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Shanghai and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Shanghai differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Singapore b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Singapore index 2364b217..350d77e2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Singapore and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Singapore differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Srednekolymsk b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Srednekolymsk index 261a9832..7fdee5cb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Srednekolymsk and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Srednekolymsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Taipei b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Taipei index 24c43444..35d89d03 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Taipei and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Taipei differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tashkent b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tashkent index 32a9d7d0..65ee428c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tashkent and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tashkent differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi index b608d797..166e4341 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran index 8cec5ad7..f1555f00 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv index 440ef06b..e6e6cc6c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimbu b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimbu index fe409c7a..0edc72cf 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimbu and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimbu differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimphu b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimphu index fe409c7a..0edc72cf 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimphu and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimphu differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tokyo b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tokyo index 26f4d34d..1aa066ce 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tokyo and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tokyo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tomsk b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tomsk index 670e2ad2..c3c307d7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tomsk and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tomsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ujung_Pandang b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ujung_Pandang index 556ba866..5990010b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ujung_Pandang and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ujung_Pandang differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulaanbaatar b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulaanbaatar index 2e20cc3a..6f5d3a15 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulaanbaatar and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulaanbaatar differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulan_Bator b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulan_Bator index 2e20cc3a..6f5d3a15 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulan_Bator and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulan_Bator differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Urumqi b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Urumqi index faa14d92..69ff7f6f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Urumqi and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Urumqi differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ust-Nera b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ust-Nera index 9e4a78f6..c39331e3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ust-Nera and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ust-Nera differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane index c292ac5b..ed687d29 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vladivostok b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vladivostok index 8ab253ce..72a3d4e8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vladivostok and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vladivostok differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yakutsk b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yakutsk index c815e99b..336f932e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yakutsk and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yakutsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yangon b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yangon index dd77395b..14b2ad09 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yangon and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yangon differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yekaterinburg b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yekaterinburg index 6958d7ed..a3bf7f29 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yekaterinburg and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yekaterinburg differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yerevan b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yerevan index 250bfe02..6dd927cb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yerevan and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yerevan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Azores b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Azores index 56593dbf..b7f75a9c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Azores and b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Azores differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Bermuda b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Bermuda index 419c660b..aa330147 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Bermuda and b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Bermuda differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Canary b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Canary index f3192156..5ab3243a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Canary and b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Canary differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Cape_Verde b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Cape_Verde index e2a49d24..8f7de1c0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Cape_Verde and b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Cape_Verde differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Faeroe b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Faeroe index 4dab7ef0..9558bf71 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Faeroe and b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Faeroe differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Faroe b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Faroe index 4dab7ef0..9558bf71 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Faroe and b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Faroe differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Jan_Mayen b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Jan_Mayen index 15a34c3c..dfc50957 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Jan_Mayen and b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Jan_Mayen differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Madeira b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Madeira index 5213761f..7c3a49c0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Madeira and b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Madeira differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Reykjavik b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Reykjavik index 10e0fc81..2451aca7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Reykjavik and b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Reykjavik differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/South_Georgia b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/South_Georgia index 44666086..7fa5f468 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/South_Georgia and b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/South_Georgia differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/St_Helena b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/St_Helena index 28b32ab2..8906e88c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/St_Helena and b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/St_Helena differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Stanley b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Stanley index 88077f11..1a4c8ea8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Stanley and b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Stanley differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/ACT b/absl/time/internal/cctz/testdata/zoneinfo/Australia/ACT index 7636592a..f235d0dc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/ACT and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/ACT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Adelaide b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Adelaide index 0b1252ab..f397b3b9 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Adelaide and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Adelaide differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Brisbane b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Brisbane index 3021bdb6..c7915db3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Brisbane and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Brisbane differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Broken_Hill b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Broken_Hill index 1ac3fc8f..ed0d17a6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Broken_Hill and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Broken_Hill differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Canberra b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Canberra index 7636592a..f235d0dc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Canberra and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Canberra differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Currie b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Currie index f65a990e..55ceaefc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Currie and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Currie differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Darwin b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Darwin index 1cf50298..7114153b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Darwin and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Darwin differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Eucla b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Eucla index 98ae5570..9fbc01fe 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Eucla and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Eucla differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Hobart b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Hobart index 02b07ca2..21ef2d39 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Hobart and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Hobart differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/LHI b/absl/time/internal/cctz/testdata/zoneinfo/Australia/LHI index 9e04a80e..4d4ec8ce 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/LHI and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/LHI differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lindeman b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lindeman index eab0fb99..e271d5b3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lindeman and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lindeman differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lord_Howe b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lord_Howe index 9e04a80e..4d4ec8ce 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lord_Howe and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lord_Howe differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Melbourne b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Melbourne index ba457338..c7160da3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Melbourne and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Melbourne differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/NSW b/absl/time/internal/cctz/testdata/zoneinfo/Australia/NSW index 7636592a..f235d0dc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/NSW and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/NSW differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/North b/absl/time/internal/cctz/testdata/zoneinfo/Australia/North index 1cf50298..7114153b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/North and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/North differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Perth b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Perth index a876b9e7..e449b03f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Perth and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Perth differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Queensland b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Queensland index 3021bdb6..c7915db3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Queensland and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Queensland differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/South b/absl/time/internal/cctz/testdata/zoneinfo/Australia/South index 0b1252ab..f397b3b9 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/South and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/South differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Sydney b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Sydney index 7636592a..f235d0dc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Sydney and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Sydney differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Tasmania b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Tasmania index 02b07ca2..21ef2d39 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Tasmania and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Tasmania differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Victoria b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Victoria index ba457338..c7160da3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Victoria and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Victoria differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/West b/absl/time/internal/cctz/testdata/zoneinfo/Australia/West index a876b9e7..e449b03f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/West and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/West differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Yancowinna b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Yancowinna index 1ac3fc8f..ed0d17a6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Yancowinna and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Yancowinna differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Brazil/Acre b/absl/time/internal/cctz/testdata/zoneinfo/Brazil/Acre index a374cb43..fb5185ca 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Brazil/Acre and b/absl/time/internal/cctz/testdata/zoneinfo/Brazil/Acre differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Brazil/DeNoronha b/absl/time/internal/cctz/testdata/zoneinfo/Brazil/DeNoronha index f140726f..9e74745c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Brazil/DeNoronha and b/absl/time/internal/cctz/testdata/zoneinfo/Brazil/DeNoronha differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Brazil/East b/absl/time/internal/cctz/testdata/zoneinfo/Brazil/East index 13ff0838..a16da2c4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Brazil/East and b/absl/time/internal/cctz/testdata/zoneinfo/Brazil/East differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Brazil/West b/absl/time/internal/cctz/testdata/zoneinfo/Brazil/West index 63d58f80..59c952eb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Brazil/West and b/absl/time/internal/cctz/testdata/zoneinfo/Brazil/West differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/CET b/absl/time/internal/cctz/testdata/zoneinfo/CET index 122e9342..546748d6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/CET and b/absl/time/internal/cctz/testdata/zoneinfo/CET differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/CST6CDT b/absl/time/internal/cctz/testdata/zoneinfo/CST6CDT index ca67929f..d9315580 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/CST6CDT and b/absl/time/internal/cctz/testdata/zoneinfo/CST6CDT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Canada/Atlantic b/absl/time/internal/cctz/testdata/zoneinfo/Canada/Atlantic index 756099ab..9fa850a7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Canada/Atlantic and b/absl/time/internal/cctz/testdata/zoneinfo/Canada/Atlantic differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Canada/Central b/absl/time/internal/cctz/testdata/zoneinfo/Canada/Central index ac40299f..7e646d18 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Canada/Central and b/absl/time/internal/cctz/testdata/zoneinfo/Canada/Central differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Canada/Eastern b/absl/time/internal/cctz/testdata/zoneinfo/Canada/Eastern index 6752c5b0..fe6be8ea 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Canada/Eastern and b/absl/time/internal/cctz/testdata/zoneinfo/Canada/Eastern differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Canada/Mountain b/absl/time/internal/cctz/testdata/zoneinfo/Canada/Mountain index cd78a6f8..645ee945 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Canada/Mountain and b/absl/time/internal/cctz/testdata/zoneinfo/Canada/Mountain differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Canada/Newfoundland b/absl/time/internal/cctz/testdata/zoneinfo/Canada/Newfoundland index 65a5b0c7..e5f2aec2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Canada/Newfoundland and b/absl/time/internal/cctz/testdata/zoneinfo/Canada/Newfoundland differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Canada/Pacific b/absl/time/internal/cctz/testdata/zoneinfo/Canada/Pacific index bb60cbce..c9984911 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Canada/Pacific and b/absl/time/internal/cctz/testdata/zoneinfo/Canada/Pacific differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Canada/Saskatchewan b/absl/time/internal/cctz/testdata/zoneinfo/Canada/Saskatchewan index 20c9c84d..a3f8217a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Canada/Saskatchewan and b/absl/time/internal/cctz/testdata/zoneinfo/Canada/Saskatchewan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Canada/Yukon b/absl/time/internal/cctz/testdata/zoneinfo/Canada/Yukon index 062b58ce..878b6a92 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Canada/Yukon and b/absl/time/internal/cctz/testdata/zoneinfo/Canada/Yukon differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Chile/Continental b/absl/time/internal/cctz/testdata/zoneinfo/Chile/Continental index 816a0428..8d603226 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Chile/Continental and b/absl/time/internal/cctz/testdata/zoneinfo/Chile/Continental differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Chile/EasterIsland b/absl/time/internal/cctz/testdata/zoneinfo/Chile/EasterIsland index cae37440..d29bcd68 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Chile/EasterIsland and b/absl/time/internal/cctz/testdata/zoneinfo/Chile/EasterIsland differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Cuba b/absl/time/internal/cctz/testdata/zoneinfo/Cuba index b69ac451..e06629d3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Cuba and b/absl/time/internal/cctz/testdata/zoneinfo/Cuba differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/EET b/absl/time/internal/cctz/testdata/zoneinfo/EET index cbdb71dd..378919ea 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/EET and b/absl/time/internal/cctz/testdata/zoneinfo/EET differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/EST b/absl/time/internal/cctz/testdata/zoneinfo/EST index 21ebc00b..3ae96911 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/EST and b/absl/time/internal/cctz/testdata/zoneinfo/EST differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/EST5EDT b/absl/time/internal/cctz/testdata/zoneinfo/EST5EDT index 9bce5007..50c95e0c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/EST5EDT and b/absl/time/internal/cctz/testdata/zoneinfo/EST5EDT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Egypt b/absl/time/internal/cctz/testdata/zoneinfo/Egypt index d3f81962..ea38c970 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Egypt and b/absl/time/internal/cctz/testdata/zoneinfo/Egypt differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Eire b/absl/time/internal/cctz/testdata/zoneinfo/Eire index 1d994902..4a45ea8f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Eire and b/absl/time/internal/cctz/testdata/zoneinfo/Eire differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT index c6347466..157573b1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+0 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+0 index c6347466..157573b1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+0 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+0 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+1 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+1 index 4dab6f90..98d5dcf9 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+1 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+1 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+10 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+10 index c749290a..ecb287e6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+10 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+10 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+11 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+11 index d9699823..e9414129 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+11 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+11 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+12 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+12 index cdeec909..9c95bd07 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+12 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+12 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+2 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+2 index fbd2a941..6d5ce3db 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+2 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+2 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+3 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+3 index ee246ef5..5ef7be71 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+3 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+3 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+4 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+4 index 5a25ff2a..75f16216 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+4 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+4 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+5 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+5 index c0b745f1..589990ae 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+5 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+5 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+6 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+6 index 06e777d5..fcb60ca2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+6 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+6 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+7 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+7 index 4e0b53a0..c0427a40 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+7 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+7 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+8 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+8 index 714b0c56..9bdc2283 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+8 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+8 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+9 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+9 index 78b9daa3..ca7a81f6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+9 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+9 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-0 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-0 index c6347466..157573b1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-0 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-0 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-1 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-1 index a838bebf..cb45601c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-1 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-1 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-10 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-10 index 68ff77db..11d988e1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-10 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-10 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-11 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-11 index 66af5a42..f4c5d5cc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-11 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-11 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-12 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-12 index 17ba5057..cd397b02 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-12 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-12 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-13 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-13 index 5f3706ce..8fad7c6b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-13 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-13 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-14 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-14 index 7e9f9c46..a595e60e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-14 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-14 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-2 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-2 index fcef6d9a..97b44a9b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-2 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-2 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-3 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-3 index 27973bc8..4eb17ff0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-3 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-3 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-4 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-4 index 1efd8412..13aef80c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-4 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-4 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-5 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-5 index 1f761844..83a28169 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-5 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-5 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-6 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-6 index 952681ed..79a983e5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-6 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-6 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-7 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-7 index cefc9126..e136690e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-7 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-7 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-8 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-8 index afb093da..bc70fe41 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-8 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-8 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-9 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-9 index 9265fb7c..d18cedd5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-9 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-9 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT0 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT0 index c6347466..157573b1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT0 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT0 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/Greenwich b/absl/time/internal/cctz/testdata/zoneinfo/Etc/Greenwich index c6347466..157573b1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/Greenwich and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/Greenwich differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT b/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT index 91558be0..00841a62 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/UTC b/absl/time/internal/cctz/testdata/zoneinfo/Etc/UTC index 91558be0..00841a62 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/UTC and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/UTC differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/Universal b/absl/time/internal/cctz/testdata/zoneinfo/Etc/Universal index 91558be0..00841a62 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/Universal and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/Universal differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/Zulu b/absl/time/internal/cctz/testdata/zoneinfo/Etc/Zulu index 91558be0..00841a62 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/Zulu and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/Zulu differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Amsterdam b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Amsterdam index c3ff07b4..4a6fa1d4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Amsterdam and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Amsterdam differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Andorra b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Andorra index 59625503..38685d42 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Andorra and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Andorra differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Astrakhan b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Astrakhan index 73a4d013..aff8d82d 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Astrakhan and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Astrakhan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Athens b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Athens index 9f3a0678..231bf9c3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Athens and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Athens differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belfast b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belfast index ac02a814..323cd381 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belfast and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belfast differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belgrade b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belgrade index 27de456f..a1bf9281 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belgrade and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belgrade differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Berlin b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Berlin index 7f6d958f..465546bd 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Berlin and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Berlin differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bratislava b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bratislava index ce8f433e..fb7c145a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bratislava and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bratislava differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Brussels b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Brussels index 40d7124e..31973271 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Brussels and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Brussels differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bucharest b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bucharest index 4303b903..efa689ba 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bucharest and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bucharest differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Budapest b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Budapest index 6b94a4f3..940be467 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Budapest and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Budapest differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Busingen b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Busingen index ad6cf592..388df296 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Busingen and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Busingen differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau index 5ee23fe0..6970b14c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Copenhagen b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Copenhagen index 776be6e4..45984a75 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Copenhagen and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Copenhagen differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Dublin b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Dublin index 1d994902..4a45ea8f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Dublin and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Dublin differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Gibraltar b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Gibraltar index 117aadb8..017bb2e3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Gibraltar and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Gibraltar differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Guernsey b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Guernsey index ac02a814..323cd381 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Guernsey and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Guernsey differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Helsinki b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Helsinki index b4f8f9cb..ff5e5653 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Helsinki and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Helsinki differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Isle_of_Man b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Isle_of_Man index ac02a814..323cd381 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Isle_of_Man and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Isle_of_Man differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Istanbul b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Istanbul index 508446bb..c8918668 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Istanbul and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Istanbul differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Jersey b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Jersey index ac02a814..323cd381 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Jersey and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Jersey differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kaliningrad b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kaliningrad index cc99beab..0ec47564 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kaliningrad and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kaliningrad differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kiev b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kiev index 9337c9ea..8f83cefb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kiev and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kiev differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kirov b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kirov index a3b5320a..d1c93c54 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kirov and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kirov differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Lisbon b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Lisbon index 355817b5..64841661 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Lisbon and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Lisbon differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ljubljana b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ljubljana index 27de456f..a1bf9281 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ljubljana and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ljubljana differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/London b/absl/time/internal/cctz/testdata/zoneinfo/Europe/London index ac02a814..323cd381 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/London and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/London differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Luxembourg b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Luxembourg index c4ca733f..682bcbf6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Luxembourg and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Luxembourg differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Madrid b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Madrid index 16f6420a..60bdf4d0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Madrid and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Madrid differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Malta b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Malta index bf2452da..27539c22 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Malta and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Malta differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Mariehamn b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Mariehamn index b4f8f9cb..ff5e5653 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Mariehamn and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Mariehamn differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Minsk b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Minsk index 453306c0..30d3a672 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Minsk and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Minsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Monaco b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Monaco index 686ae883..f30dfc70 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Monaco and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Monaco differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Moscow b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Moscow index ddb3f4e9..5e6b6de6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Moscow and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Moscow differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Nicosia b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Nicosia index f7f10ab7..c210d0a5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Nicosia and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Nicosia differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Oslo b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Oslo index 15a34c3c..dfc50957 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Oslo and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Oslo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Paris b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Paris index ca854351..00a27264 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Paris and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Paris differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Podgorica b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Podgorica index 27de456f..a1bf9281 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Podgorica and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Podgorica differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Prague b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Prague index ce8f433e..fb7c145a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Prague and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Prague differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Riga b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Riga index 8db477d0..26af4c90 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Riga and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Riga differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Rome b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Rome index ac4c1634..639ca3be 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Rome and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Rome differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Samara b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Samara index 97d5dd9e..8d0c26e5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Samara and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Samara differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/San_Marino b/absl/time/internal/cctz/testdata/zoneinfo/Europe/San_Marino index ac4c1634..639ca3be 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/San_Marino and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/San_Marino differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sarajevo b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sarajevo index 27de456f..a1bf9281 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sarajevo and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sarajevo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Saratov b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Saratov index 8fd5f6d4..2684d8f8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Saratov and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Saratov differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Simferopol b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Simferopol index 432e8315..88a6f3bd 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Simferopol and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Simferopol differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Skopje b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Skopje index 27de456f..a1bf9281 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Skopje and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Skopje differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sofia b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sofia index 0e4d8793..eabc972a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sofia and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sofia differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Stockholm b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Stockholm index f3e0c7f0..dd3eb322 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Stockholm and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Stockholm differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tallinn b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tallinn index b5acca3c..5321bbd4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tallinn and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tallinn differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tirane b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tirane index 0b86017d..743a7337 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tirane and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tirane differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol index 5ee23fe0..6970b14c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ulyanovsk b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ulyanovsk index 7b61bdc5..bb842cb1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ulyanovsk and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ulyanovsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Uzhgorod b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Uzhgorod index 66ae8d69..a5755685 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Uzhgorod and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Uzhgorod differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vaduz b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vaduz index ad6cf592..388df296 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vaduz and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vaduz differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vatican b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vatican index ac4c1634..639ca3be 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vatican and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vatican differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vienna b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vienna index 3582bb15..75339e98 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vienna and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vienna differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vilnius b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vilnius index 7abd63fa..75b2eebb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vilnius and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vilnius differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Volgograd b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Volgograd index d1cfac0e..a486ad42 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Volgograd and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Volgograd differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Warsaw b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Warsaw index e33cf671..efe1a40f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Warsaw and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Warsaw differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zagreb b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zagreb index 27de456f..a1bf9281 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zagreb and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zagreb differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zaporozhye b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zaporozhye index e42edfc8..4ea8dae4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zaporozhye and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zaporozhye differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zurich b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zurich index ad6cf592..388df296 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zurich and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zurich differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Factory b/absl/time/internal/cctz/testdata/zoneinfo/Factory index 60aa2a0d..b4dd7735 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Factory and b/absl/time/internal/cctz/testdata/zoneinfo/Factory differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/GB b/absl/time/internal/cctz/testdata/zoneinfo/GB index ac02a814..323cd381 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/GB and b/absl/time/internal/cctz/testdata/zoneinfo/GB differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/GB-Eire b/absl/time/internal/cctz/testdata/zoneinfo/GB-Eire index ac02a814..323cd381 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/GB-Eire and b/absl/time/internal/cctz/testdata/zoneinfo/GB-Eire differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/GMT b/absl/time/internal/cctz/testdata/zoneinfo/GMT index c6347466..157573b1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/GMT and b/absl/time/internal/cctz/testdata/zoneinfo/GMT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/GMT+0 b/absl/time/internal/cctz/testdata/zoneinfo/GMT+0 index c6347466..157573b1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/GMT+0 and b/absl/time/internal/cctz/testdata/zoneinfo/GMT+0 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/GMT-0 b/absl/time/internal/cctz/testdata/zoneinfo/GMT-0 index c6347466..157573b1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/GMT-0 and b/absl/time/internal/cctz/testdata/zoneinfo/GMT-0 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/GMT0 b/absl/time/internal/cctz/testdata/zoneinfo/GMT0 index c6347466..157573b1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/GMT0 and b/absl/time/internal/cctz/testdata/zoneinfo/GMT0 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Greenwich b/absl/time/internal/cctz/testdata/zoneinfo/Greenwich index c6347466..157573b1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Greenwich and b/absl/time/internal/cctz/testdata/zoneinfo/Greenwich differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/HST b/absl/time/internal/cctz/testdata/zoneinfo/HST index cccd45eb..160a53e0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/HST and b/absl/time/internal/cctz/testdata/zoneinfo/HST differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Hongkong b/absl/time/internal/cctz/testdata/zoneinfo/Hongkong index 23d0375f..c80e3648 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Hongkong and b/absl/time/internal/cctz/testdata/zoneinfo/Hongkong differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Iceland b/absl/time/internal/cctz/testdata/zoneinfo/Iceland index 10e0fc81..2451aca7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Iceland and b/absl/time/internal/cctz/testdata/zoneinfo/Iceland differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Antananarivo b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Antananarivo index 9a2918f4..d3c0bb32 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Antananarivo and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Antananarivo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Chagos b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Chagos index 93d6dda5..8b8ce226 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Chagos and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Chagos differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Christmas b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Christmas index d18c3810..766024b3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Christmas and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Christmas differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Cocos b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Cocos index f8116e70..11750341 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Cocos and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Cocos differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Comoro b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Comoro index 9a2918f4..d3c0bb32 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Comoro and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Comoro differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Kerguelen b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Kerguelen index cde4cf7e..8ce93e01 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Kerguelen and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Kerguelen differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mahe b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mahe index cba7dfe7..75362bbf 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mahe and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mahe differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Maldives b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Maldives index 7c839cfa..58a82e4e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Maldives and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Maldives differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mauritius b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mauritius index 17f26169..7c111348 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mauritius and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mauritius differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mayotte b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mayotte index 9a2918f4..d3c0bb32 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mayotte and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mayotte differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Reunion b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Reunion index dfe08313..248a7c93 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Reunion and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Reunion differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Iran b/absl/time/internal/cctz/testdata/zoneinfo/Iran index 8cec5ad7..f1555f00 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Iran and b/absl/time/internal/cctz/testdata/zoneinfo/Iran differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Israel b/absl/time/internal/cctz/testdata/zoneinfo/Israel index 440ef06b..e6e6cc6c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Israel and b/absl/time/internal/cctz/testdata/zoneinfo/Israel differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Jamaica b/absl/time/internal/cctz/testdata/zoneinfo/Jamaica index 2a9b7fd5..be6b1b6f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Jamaica and b/absl/time/internal/cctz/testdata/zoneinfo/Jamaica differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Japan b/absl/time/internal/cctz/testdata/zoneinfo/Japan index 26f4d34d..1aa066ce 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Japan and b/absl/time/internal/cctz/testdata/zoneinfo/Japan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Kwajalein b/absl/time/internal/cctz/testdata/zoneinfo/Kwajalein index 1a7975fa..9416d522 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Kwajalein and b/absl/time/internal/cctz/testdata/zoneinfo/Kwajalein differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Libya b/absl/time/internal/cctz/testdata/zoneinfo/Libya index 07b393bb..e0c89971 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Libya and b/absl/time/internal/cctz/testdata/zoneinfo/Libya differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/MET b/absl/time/internal/cctz/testdata/zoneinfo/MET index 4a826bb1..6f0558c3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/MET and b/absl/time/internal/cctz/testdata/zoneinfo/MET differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/MST b/absl/time/internal/cctz/testdata/zoneinfo/MST index c93a58ee..a0953d1e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/MST and b/absl/time/internal/cctz/testdata/zoneinfo/MST differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/MST7MDT b/absl/time/internal/cctz/testdata/zoneinfo/MST7MDT index 4506a6e1..137867c8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/MST7MDT and b/absl/time/internal/cctz/testdata/zoneinfo/MST7MDT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaNorte b/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaNorte index ada6bf78..19ccd357 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaNorte and b/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaNorte differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaSur b/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaSur index e4a78574..4c819fab 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaSur and b/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaSur differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Mexico/General b/absl/time/internal/cctz/testdata/zoneinfo/Mexico/General index e7fb6f29..ffcf8bee 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Mexico/General and b/absl/time/internal/cctz/testdata/zoneinfo/Mexico/General differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/NZ b/absl/time/internal/cctz/testdata/zoneinfo/NZ index 6575fdce..afb39293 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/NZ and b/absl/time/internal/cctz/testdata/zoneinfo/NZ differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/NZ-CHAT b/absl/time/internal/cctz/testdata/zoneinfo/NZ-CHAT index c0041098..f06065eb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/NZ-CHAT and b/absl/time/internal/cctz/testdata/zoneinfo/NZ-CHAT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Navajo b/absl/time/internal/cctz/testdata/zoneinfo/Navajo index 5fbe26b1..09e54e5c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Navajo and b/absl/time/internal/cctz/testdata/zoneinfo/Navajo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/PRC b/absl/time/internal/cctz/testdata/zoneinfo/PRC index 91f6f8bc..d6b66984 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/PRC and b/absl/time/internal/cctz/testdata/zoneinfo/PRC differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/PST8PDT b/absl/time/internal/cctz/testdata/zoneinfo/PST8PDT index 99d246ba..fde4833f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/PST8PDT and b/absl/time/internal/cctz/testdata/zoneinfo/PST8PDT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Apia b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Apia index dab1f3f6..244af26f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Apia and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Apia differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Auckland b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Auckland index 6575fdce..afb39293 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Auckland and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Auckland differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Bougainville b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Bougainville index 2892d268..7c667093 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Bougainville and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Bougainville differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chatham b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chatham index c0041098..f06065eb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chatham and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chatham differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chuuk b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chuuk index 07c84b71..ea3fb5cd 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chuuk and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chuuk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Easter b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Easter index cae37440..d29bcd68 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Easter and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Easter differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Efate b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Efate index 60150175..906971e2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Efate and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Efate differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Enderbury b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Enderbury index f0b82523..b22ab147 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Enderbury and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Enderbury differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fakaofo b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fakaofo index e40307f6..b7b30213 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fakaofo and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fakaofo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fiji b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fiji index d39bf536..e3934e42 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fiji and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fiji differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Funafuti b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Funafuti index ea728637..78ab35b6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Funafuti and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Funafuti differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Galapagos b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Galapagos index 31f0921e..a9403eca 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Galapagos and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Galapagos differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Gambier b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Gambier index e1fc3daa..ddfc34ff 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Gambier and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Gambier differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guadalcanal b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guadalcanal index 7e9d10a1..720c6790 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guadalcanal and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guadalcanal differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guam b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guam index 66490d25..bf9a2d95 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guam and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guam differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Honolulu b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Honolulu index c7cd0601..40e3d492 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Honolulu and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Honolulu differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Johnston b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Johnston index c7cd0601..40e3d492 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Johnston and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Johnston differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kiritimati b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kiritimati index 7cae0cb7..2f676d3b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kiritimati and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kiritimati differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kosrae b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kosrae index a584aae5..f5d58242 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kosrae and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kosrae differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kwajalein b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kwajalein index 1a7975fa..9416d522 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kwajalein and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kwajalein differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Majuro b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Majuro index 9ef8374d..9228ee02 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Majuro and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Majuro differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Marquesas b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Marquesas index 74d6792b..6ea24b72 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Marquesas and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Marquesas differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Midway b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Midway index cb56709a..001289ce 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Midway and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Midway differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Nauru b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Nauru index acec0429..ae13aac7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Nauru and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Nauru differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Niue b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Niue index 684b010e..7b357935 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Niue and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Niue differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Norfolk b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Norfolk index 53c1aad4..79e2a941 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Norfolk and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Norfolk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Noumea b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Noumea index 931a1a30..824f8141 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Noumea and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Noumea differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pago_Pago b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pago_Pago index cb56709a..001289ce 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pago_Pago and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pago_Pago differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Palau b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Palau index 146b3515..bc8eb7a5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Palau and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Palau differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pitcairn b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pitcairn index ef91b061..8a4ba4d3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pitcairn and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pitcairn differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pohnpei b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pohnpei index c298ddd4..b92b254a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pohnpei and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pohnpei differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Ponape b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Ponape index c298ddd4..b92b254a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Ponape and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Ponape differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Port_Moresby b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Port_Moresby index 920ad27e..5d8fc3a1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Port_Moresby and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Port_Moresby differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Rarotonga b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Rarotonga index da6b0fad..143a1883 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Rarotonga and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Rarotonga differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Saipan b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Saipan index 66490d25..bf9a2d95 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Saipan and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Saipan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Samoa b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Samoa index cb56709a..001289ce 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Samoa and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Samoa differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tahiti b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tahiti index 442b8eb5..50a064fa 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tahiti and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tahiti differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tarawa b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tarawa index 3db6c750..6bc21682 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tarawa and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tarawa differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tongatapu b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tongatapu index 5553c600..54aeb0ff 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tongatapu and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tongatapu differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Truk b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Truk index 07c84b71..ea3fb5cd 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Truk and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Truk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wake b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wake index c9e31067..71cca887 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wake and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wake differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wallis b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wallis index b35344b3..4bce8930 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wallis and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wallis differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Yap b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Yap index 07c84b71..ea3fb5cd 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Yap and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Yap differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Poland b/absl/time/internal/cctz/testdata/zoneinfo/Poland index e33cf671..efe1a40f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Poland and b/absl/time/internal/cctz/testdata/zoneinfo/Poland differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Portugal b/absl/time/internal/cctz/testdata/zoneinfo/Portugal index 355817b5..64841661 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Portugal and b/absl/time/internal/cctz/testdata/zoneinfo/Portugal differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/ROC b/absl/time/internal/cctz/testdata/zoneinfo/ROC index 24c43444..35d89d03 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/ROC and b/absl/time/internal/cctz/testdata/zoneinfo/ROC differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/ROK b/absl/time/internal/cctz/testdata/zoneinfo/ROK index 96199e73..1755147f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/ROK and b/absl/time/internal/cctz/testdata/zoneinfo/ROK differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Singapore b/absl/time/internal/cctz/testdata/zoneinfo/Singapore index 2364b217..350d77e2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Singapore and b/absl/time/internal/cctz/testdata/zoneinfo/Singapore differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Turkey b/absl/time/internal/cctz/testdata/zoneinfo/Turkey index 508446bb..c8918668 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Turkey and b/absl/time/internal/cctz/testdata/zoneinfo/Turkey differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/UCT b/absl/time/internal/cctz/testdata/zoneinfo/UCT index 91558be0..00841a62 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/UCT and b/absl/time/internal/cctz/testdata/zoneinfo/UCT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/US/Alaska b/absl/time/internal/cctz/testdata/zoneinfo/US/Alaska index 9bbb2fd3..cdf0572b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/US/Alaska and b/absl/time/internal/cctz/testdata/zoneinfo/US/Alaska differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/US/Aleutian b/absl/time/internal/cctz/testdata/zoneinfo/US/Aleutian index 43236498..b1497bda 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/US/Aleutian and b/absl/time/internal/cctz/testdata/zoneinfo/US/Aleutian differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/US/Arizona b/absl/time/internal/cctz/testdata/zoneinfo/US/Arizona index ac6bb0c7..c2bd2f94 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/US/Arizona and b/absl/time/internal/cctz/testdata/zoneinfo/US/Arizona differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/US/Central b/absl/time/internal/cctz/testdata/zoneinfo/US/Central index a5b1617c..b0168806 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/US/Central and b/absl/time/internal/cctz/testdata/zoneinfo/US/Central differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/US/East-Indiana b/absl/time/internal/cctz/testdata/zoneinfo/US/East-Indiana index 09511ccd..6b08d15b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/US/East-Indiana and b/absl/time/internal/cctz/testdata/zoneinfo/US/East-Indiana differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/US/Eastern b/absl/time/internal/cctz/testdata/zoneinfo/US/Eastern index 2f75480e..2b6c2eea 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/US/Eastern and b/absl/time/internal/cctz/testdata/zoneinfo/US/Eastern differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/US/Hawaii b/absl/time/internal/cctz/testdata/zoneinfo/US/Hawaii index c7cd0601..40e3d492 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/US/Hawaii and b/absl/time/internal/cctz/testdata/zoneinfo/US/Hawaii differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/US/Indiana-Starke b/absl/time/internal/cctz/testdata/zoneinfo/US/Indiana-Starke index fcd408d7..b187d5f8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/US/Indiana-Starke and b/absl/time/internal/cctz/testdata/zoneinfo/US/Indiana-Starke differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/US/Michigan b/absl/time/internal/cctz/testdata/zoneinfo/US/Michigan index e104faa4..6eb3ac46 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/US/Michigan and b/absl/time/internal/cctz/testdata/zoneinfo/US/Michigan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/US/Mountain b/absl/time/internal/cctz/testdata/zoneinfo/US/Mountain index 5fbe26b1..09e54e5c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/US/Mountain and b/absl/time/internal/cctz/testdata/zoneinfo/US/Mountain differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/US/Pacific b/absl/time/internal/cctz/testdata/zoneinfo/US/Pacific index 9dad4f4c..aaf07787 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/US/Pacific and b/absl/time/internal/cctz/testdata/zoneinfo/US/Pacific differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/US/Samoa b/absl/time/internal/cctz/testdata/zoneinfo/US/Samoa index cb56709a..001289ce 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/US/Samoa and b/absl/time/internal/cctz/testdata/zoneinfo/US/Samoa differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/UTC b/absl/time/internal/cctz/testdata/zoneinfo/UTC index 91558be0..00841a62 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/UTC and b/absl/time/internal/cctz/testdata/zoneinfo/UTC differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Universal b/absl/time/internal/cctz/testdata/zoneinfo/Universal index 91558be0..00841a62 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Universal and b/absl/time/internal/cctz/testdata/zoneinfo/Universal differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/W-SU b/absl/time/internal/cctz/testdata/zoneinfo/W-SU index ddb3f4e9..5e6b6de6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/W-SU and b/absl/time/internal/cctz/testdata/zoneinfo/W-SU differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/WET b/absl/time/internal/cctz/testdata/zoneinfo/WET index c27390b5..423c6c20 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/WET and b/absl/time/internal/cctz/testdata/zoneinfo/WET differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Zulu b/absl/time/internal/cctz/testdata/zoneinfo/Zulu index 91558be0..00841a62 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Zulu and b/absl/time/internal/cctz/testdata/zoneinfo/Zulu differ diff --git a/ci/linux_docker_containers.sh b/ci/linux_docker_containers.sh index 752b5729..b96fe890 100644 --- a/ci/linux_docker_containers.sh +++ b/ci/linux_docker_containers.sh @@ -18,4 +18,5 @@ readonly LINUX_ALPINE_CONTAINER="gcr.io/google.com/absl-177019/alpine:20191016" readonly LINUX_CLANG_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20201008" readonly LINUX_GCC_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20201008" +readonly LINUX_GCC_FLOOR_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-floor:20201015" readonly LINUX_GCC_49_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-4.9:20191018" diff --git a/ci/linux_gcc-floor_libstdcxx_bazel.sh b/ci/linux_gcc-floor_libstdcxx_bazel.sh new file mode 100755 index 00000000..224aef81 --- /dev/null +++ b/ci/linux_gcc-floor_libstdcxx_bazel.sh @@ -0,0 +1,89 @@ +#!/bin/bash +# +# Copyright 2020 The Abseil Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This script that can be invoked to test abseil-cpp in a hermetic environment +# using a Docker image on Linux. You must have Docker installed to use this +# script. + +set -euox pipefail + +if [[ -z ${ABSEIL_ROOT:-} ]]; then + ABSEIL_ROOT="$(realpath $(dirname ${0})/..)" +fi + +if [[ -z ${STD:-} ]]; then + STD="c++11 c++14" +fi + +if [[ -z ${COMPILATION_MODE:-} ]]; then + COMPILATION_MODE="fastbuild opt" +fi + +if [[ -z ${EXCEPTIONS_MODE:-} ]]; then + EXCEPTIONS_MODE="-fno-exceptions -fexceptions" +fi + +source "${ABSEIL_ROOT}/ci/linux_docker_containers.sh" +readonly DOCKER_CONTAINER=${LINUX_GCC_FLOOR_CONTAINER} + +# USE_BAZEL_CACHE=1 only works on Kokoro. +# Without access to the credentials this won't work. +if [[ ${USE_BAZEL_CACHE:-0} -ne 0 ]]; then + DOCKER_EXTRA_ARGS="--volume=${KOKORO_KEYSTORE_DIR}:/keystore:ro ${DOCKER_EXTRA_ARGS:-}" + # Bazel doesn't track changes to tools outside of the workspace + # (e.g. /usr/bin/gcc), so by appending the docker container to the + # remote_http_cache url, we make changes to the container part of + # the cache key. Hashing the key is to make it shorter and url-safe. + container_key=$(echo ${DOCKER_CONTAINER} | sha256sum | head -c 16) + BAZEL_EXTRA_ARGS="--remote_http_cache=https://storage.googleapis.com/absl-bazel-remote-cache/${container_key} --google_credentials=/keystore/73103_absl-bazel-remote-cache ${BAZEL_EXTRA_ARGS:-}" +fi + +# Avoid depending on external sites like GitHub by checking --distdir for +# external dependencies first. +# https://docs.bazel.build/versions/master/guide.html#distdir +if [[ ${KOKORO_GFILE_DIR:-} ]] && [[ -d "${KOKORO_GFILE_DIR}/distdir" ]]; then + DOCKER_EXTRA_ARGS="--volume=${KOKORO_GFILE_DIR}/distdir:/distdir:ro ${DOCKER_EXTRA_ARGS:-}" + BAZEL_EXTRA_ARGS="--distdir=/distdir ${BAZEL_EXTRA_ARGS:-}" +fi + +for std in ${STD}; do + for compilation_mode in ${COMPILATION_MODE}; do + for exceptions_mode in ${EXCEPTIONS_MODE}; do + echo "--------------------------------------------------------------------" + time docker run \ + --volume="${ABSEIL_ROOT}:/abseil-cpp:ro" \ + --workdir=/abseil-cpp \ + --cap-add=SYS_PTRACE \ + --rm \ + -e CC="/usr/local/bin/gcc" \ + -e BAZEL_CXXOPTS="-std=${std}" \ + ${DOCKER_EXTRA_ARGS:-} \ + ${DOCKER_CONTAINER} \ + /usr/local/bin/bazel test ... \ + --compilation_mode="${compilation_mode}" \ + --copt="${exceptions_mode}" \ + --copt=-Werror \ + --define="absl=1" \ + --keep_going \ + --show_timestamps \ + --test_env="GTEST_INSTALL_FAILURE_SIGNAL_HANDLER=1" \ + --test_env="TZDIR=/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo" \ + --test_output=errors \ + --test_tag_filters=-benchmark \ + ${BAZEL_EXTRA_ARGS:-} + done + done +done -- cgit v1.2.3 From 5bf048b8425cc0a342e4647932de19e25ffd6ad7 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Mon, 26 Oct 2020 09:50:44 -0700 Subject: Export of internal Abseil changes -- 730bb88bee556aa11fa19aa33e1434cb6fa78985 by Evan Brown : Support missing allocator-related constructors in b-tree. See [reference](https://en.cppreference.com/w/cpp/container/set/set). Also use allocator_traits::select_on_container_copy_construction() to get allocator for copy construction. PiperOrigin-RevId: 339058322 -- b6cc121689ae3e452d1db2d66122cb198d25142b by Derek Mauro : Fix more sign-compare warnings PiperOrigin-RevId: 339057920 -- 0e2c62da1dcaf6529abab952bdcc96c6de2d9506 by Abseil Team : Add missing include PiperOrigin-RevId: 339054753 -- d5a9ec2d1e40fe6359e720942e4955009ee415ec by Derek Mauro : Stop disabling sign-compare warnings for non-test targets. Our users complain about these. This does not catch issues in header-only libraries (like btree.h) but we may work on those in the future PiperOrigin-RevId: 338967089 -- 0c062c542a4c61ea0f65d25811827c0858e3adde by Abseil Team : Improve cache-locality for ThreadIdentity and PerThreadSynch. This is a change based on an observation in RPC benchmarks that shows significant cycles being spent in waking up a thread, 99.8% of which was on cache misses. Investigating this a bit more, it turns out to be due to sharing the cache line with the waiter state. To fix this issue, the following changes are introduced: - Reorder fields in PerThreadSync so that it fits in a single cache line The size of this structure was 80 bytes before this change. Note: Manually inspected all booleans to make sure they are not modified by multiple threads concurrently. PiperOrigin-RevId: 338852058 -- a90d6f2b2346385017e32dd8ae1b5ca691a5863f by Derek Mauro : Delete GCC 4.9 test script. It is no longer supported PiperOrigin-RevId: 338779452 -- 7274008d4757e88869110be9db39d03d911ae2b5 by Abseil Team : Fix the usage example in which SetFlag should take a pointer. PiperOrigin-RevId: 338744529 GitOrigin-RevId: 730bb88bee556aa11fa19aa33e1434cb6fa78985 Change-Id: Iff99594c4022e60e482a392d334b376c7ae8883e --- absl/base/internal/thread_identity.h | 79 +++++++++--------- absl/container/btree_test.cc | 95 ++++++++++++++++++++++ absl/container/internal/btree.h | 42 +++++----- absl/container/internal/btree_container.h | 40 +++++++-- absl/copts/GENERATED_AbseilCopts.cmake | 3 - absl/copts/GENERATED_copts.bzl | 3 - absl/copts/copts.py | 7 -- absl/debugging/symbolize_elf.inc | 4 +- absl/flags/reflection.h | 2 +- absl/strings/internal/charconv_parse.cc | 12 +-- absl/strings/internal/str_format/bind.cc | 2 +- .../internal/str_format/float_conversion.cc | 2 +- absl/synchronization/internal/graphcycles.cc | 1 + ci/linux_docker_containers.sh | 1 - ci/linux_gcc-4.9_libstdcxx_bazel.sh | 89 -------------------- 15 files changed, 203 insertions(+), 179 deletions(-) delete mode 100755 ci/linux_gcc-4.9_libstdcxx_bazel.sh (limited to 'ci/linux_docker_containers.sh') diff --git a/absl/base/internal/thread_identity.h b/absl/base/internal/thread_identity.h index ceb109b4..c61d1feb 100644 --- a/absl/base/internal/thread_identity.h +++ b/absl/base/internal/thread_identity.h @@ -32,6 +32,7 @@ #include "absl/base/config.h" #include "absl/base/internal/per_thread_tls.h" +#include "absl/base/optimization.h" namespace absl { ABSL_NAMESPACE_BEGIN @@ -69,30 +70,28 @@ struct PerThreadSynch { // is using this PerThreadSynch as a terminator. Its // skip field must not be filled in because the loop // might then skip over the terminator. - - // The wait parameters of the current wait. waitp is null if the - // thread is not waiting. Transitions from null to non-null must - // occur before the enqueue commit point (state = kQueued in - // Enqueue() and CondVarEnqueue()). Transitions from non-null to - // null must occur after the wait is finished (state = kAvailable in - // Mutex::Block() and CondVar::WaitCommon()). This field may be - // changed only by the thread that describes this PerThreadSynch. A - // special case is Fer(), which calls Enqueue() on another thread, - // but with an identical SynchWaitParams pointer, thus leaving the - // pointer unchanged. - SynchWaitParams *waitp; - - bool suppress_fatal_errors; // If true, try to proceed even in the face of - // broken invariants. This is used within fatal - // signal handlers to improve the chances of - // debug logging information being output - // successfully. - - intptr_t readers; // Number of readers in mutex. - int priority; // Priority of thread (updated every so often). - - // When priority will next be read (cycles). - int64_t next_priority_read_cycles; + bool wake; // This thread is to be woken from a Mutex. + // If "x" is on a waiter list for a mutex, "x->cond_waiter" is true iff the + // waiter is waiting on the mutex as part of a CV Wait or Mutex Await. + // + // The value of "x->cond_waiter" is meaningless if "x" is not on a + // Mutex waiter list. + bool cond_waiter; + bool maybe_unlocking; // Valid at head of Mutex waiter queue; + // true if UnlockSlow could be searching + // for a waiter to wake. Used for an optimization + // in Enqueue(). true is always a valid value. + // Can be reset to false when the unlocker or any + // writer releases the lock, or a reader fully + // releases the lock. It may not be set to false + // by a reader that decrements the count to + // non-zero. protected by mutex spinlock + bool suppress_fatal_errors; // If true, try to proceed even in the face + // of broken invariants. This is used within + // fatal signal handlers to improve the + // chances of debug logging information being + // output successfully. + int priority; // Priority of thread (updated every so often). // State values: // kAvailable: This PerThreadSynch is available. @@ -111,30 +110,30 @@ struct PerThreadSynch { }; std::atomic state; - bool maybe_unlocking; // Valid at head of Mutex waiter queue; - // true if UnlockSlow could be searching - // for a waiter to wake. Used for an optimization - // in Enqueue(). true is always a valid value. - // Can be reset to false when the unlocker or any - // writer releases the lock, or a reader fully releases - // the lock. It may not be set to false by a reader - // that decrements the count to non-zero. - // protected by mutex spinlock + // The wait parameters of the current wait. waitp is null if the + // thread is not waiting. Transitions from null to non-null must + // occur before the enqueue commit point (state = kQueued in + // Enqueue() and CondVarEnqueue()). Transitions from non-null to + // null must occur after the wait is finished (state = kAvailable in + // Mutex::Block() and CondVar::WaitCommon()). This field may be + // changed only by the thread that describes this PerThreadSynch. A + // special case is Fer(), which calls Enqueue() on another thread, + // but with an identical SynchWaitParams pointer, thus leaving the + // pointer unchanged. + SynchWaitParams* waitp; - bool wake; // This thread is to be woken from a Mutex. + intptr_t readers; // Number of readers in mutex. - // If "x" is on a waiter list for a mutex, "x->cond_waiter" is true iff the - // waiter is waiting on the mutex as part of a CV Wait or Mutex Await. - // - // The value of "x->cond_waiter" is meaningless if "x" is not on a - // Mutex waiter list. - bool cond_waiter; + // When priority will next be read (cycles). + int64_t next_priority_read_cycles; // Locks held; used during deadlock detection. // Allocated in Synch_GetAllLocks() and freed in ReclaimThreadIdentity(). SynchLocksHeld *all_locks; }; +// The instances of this class are allocated in NewThreadIdentity() with an +// alignment of PerThreadSynch::kAlignment. struct ThreadIdentity { // Must be the first member. The Mutex implementation requires that // the PerThreadSynch object associated with each thread is diff --git a/absl/container/btree_test.cc b/absl/container/btree_test.cc index 7fa5d4f3..4a495067 100644 --- a/absl/container/btree_test.cc +++ b/absl/container/btree_test.cc @@ -2709,6 +2709,101 @@ TEST(Btree, MultiKeyEqualRange) { } } +TEST(Btree, AllocConstructor) { + using Alloc = CountingAllocator; + using Set = absl::btree_set, Alloc>; + int64_t bytes_used = 0; + Alloc alloc(&bytes_used); + Set set(alloc); + + set.insert({1, 2, 3}); + + EXPECT_THAT(set, ElementsAre(1, 2, 3)); + EXPECT_GT(bytes_used, set.size() * sizeof(int)); +} + +TEST(Btree, AllocInitializerListConstructor) { + using Alloc = CountingAllocator; + using Set = absl::btree_set, Alloc>; + int64_t bytes_used = 0; + Alloc alloc(&bytes_used); + Set set({1, 2, 3}, alloc); + + EXPECT_THAT(set, ElementsAre(1, 2, 3)); + EXPECT_GT(bytes_used, set.size() * sizeof(int)); +} + +TEST(Btree, AllocRangeConstructor) { + using Alloc = CountingAllocator; + using Set = absl::btree_set, Alloc>; + int64_t bytes_used = 0; + Alloc alloc(&bytes_used); + std::vector v = {1, 2, 3}; + Set set(v.begin(), v.end(), alloc); + + EXPECT_THAT(set, ElementsAre(1, 2, 3)); + EXPECT_GT(bytes_used, set.size() * sizeof(int)); +} + +TEST(Btree, AllocCopyConstructor) { + using Alloc = CountingAllocator; + using Set = absl::btree_set, Alloc>; + int64_t bytes_used1 = 0; + Alloc alloc1(&bytes_used1); + Set set1(alloc1); + + set1.insert({1, 2, 3}); + + int64_t bytes_used2 = 0; + Alloc alloc2(&bytes_used2); + Set set2(set1, alloc2); + + EXPECT_THAT(set1, ElementsAre(1, 2, 3)); + EXPECT_THAT(set2, ElementsAre(1, 2, 3)); + EXPECT_GT(bytes_used1, set1.size() * sizeof(int)); + EXPECT_EQ(bytes_used1, bytes_used2); +} + +TEST(Btree, AllocMoveConstructor_SameAlloc) { + using Alloc = CountingAllocator; + using Set = absl::btree_set, Alloc>; + int64_t bytes_used = 0; + Alloc alloc(&bytes_used); + Set set1(alloc); + + set1.insert({1, 2, 3}); + + const int64_t original_bytes_used = bytes_used; + EXPECT_GT(original_bytes_used, set1.size() * sizeof(int)); + + Set set2(std::move(set1), alloc); + + EXPECT_THAT(set2, ElementsAre(1, 2, 3)); + EXPECT_EQ(bytes_used, original_bytes_used); +} + +TEST(Btree, AllocMoveConstructor_DifferentAlloc) { + using Alloc = CountingAllocator; + using Set = absl::btree_set, Alloc>; + int64_t bytes_used1 = 0; + Alloc alloc1(&bytes_used1); + Set set1(alloc1); + + set1.insert({1, 2, 3}); + + const int64_t original_bytes_used = bytes_used1; + EXPECT_GT(original_bytes_used, set1.size() * sizeof(int)); + + int64_t bytes_used2 = 0; + Alloc alloc2(&bytes_used2); + Set set2(std::move(set1), alloc2); + + EXPECT_THAT(set2, ElementsAre(1, 2, 3)); + // We didn't free these bytes allocated by `set1` yet. + EXPECT_EQ(bytes_used1, original_bytes_used); + EXPECT_EQ(bytes_used2, original_bytes_used); +} + } // namespace } // namespace container_internal ABSL_NAMESPACE_END diff --git a/absl/container/internal/btree.h b/absl/container/internal/btree.h index a82b5177..8547d68e 100644 --- a/absl/container/internal/btree.h +++ b/absl/container/internal/btree.h @@ -1141,21 +1141,35 @@ class btree { // before this method is called. This method is used in copy construction, // copy assignment, and move assignment. template - void copy_or_move_values_in_order(Btree *other); + void copy_or_move_values_in_order(Btree &other); // Validates that various assumptions/requirements are true at compile time. constexpr static bool static_assert_validation(); public: - btree(const key_compare &comp, const allocator_type &alloc); + btree(const key_compare &comp, const allocator_type &alloc) + : root_(comp, alloc, EmptyNode()), rightmost_(EmptyNode()), size_(0) {} - btree(const btree &other); + btree(const btree &other) : btree(other, other.allocator()) {} + btree(const btree &other, const allocator_type &alloc) + : btree(other.key_comp(), alloc) { + copy_or_move_values_in_order(other); + } btree(btree &&other) noexcept : root_(std::move(other.root_)), rightmost_(absl::exchange(other.rightmost_, EmptyNode())), size_(absl::exchange(other.size_, 0)) { other.mutable_root() = EmptyNode(); } + btree(btree &&other, const allocator_type &alloc) + : btree(other.key_comp(), alloc) { + if (alloc == other.allocator()) { + swap(other); + } else { + // Move values from `other` one at a time when allocators are different. + copy_or_move_values_in_order(other); + } + } ~btree() { // Put static_asserts in destructor to avoid triggering them before the type @@ -1851,7 +1865,7 @@ void btree_iterator::decrement_slow() { // btree methods template template -void btree

::copy_or_move_values_in_order(Btree *other) { +void btree

::copy_or_move_values_in_order(Btree &other) { static_assert(std::is_same::value || std::is_same::value, "Btree type must be same or const."); @@ -1859,11 +1873,11 @@ void btree

::copy_or_move_values_in_order(Btree *other) { // We can avoid key comparisons because we know the order of the // values is the same order we'll store them in. - auto iter = other->begin(); - if (iter == other->end()) return; + auto iter = other.begin(); + if (iter == other.end()) return; insert_multi(maybe_move_from_iterator(iter)); ++iter; - for (; iter != other->end(); ++iter) { + for (; iter != other.end(); ++iter) { // If the btree is not empty, we can just insert the new value at the end // of the tree. internal_emplace(end(), maybe_move_from_iterator(iter)); @@ -1901,16 +1915,6 @@ constexpr bool btree

::static_assert_validation() { return true; } -template -btree

::btree(const key_compare &comp, const allocator_type &alloc) - : root_(comp, alloc, EmptyNode()), rightmost_(EmptyNode()), size_(0) {} - -template -btree

::btree(const btree &other) - : btree(other.key_comp(), other.allocator()) { - copy_or_move_values_in_order(&other); -} - template template auto btree

::equal_range(const K &key) -> std::pair { @@ -2068,7 +2072,7 @@ auto btree

::operator=(const btree &other) -> btree & { *mutable_allocator() = other.allocator(); } - copy_or_move_values_in_order(&other); + copy_or_move_values_in_order(other); } return *this; } @@ -2098,7 +2102,7 @@ auto btree

::operator=(btree &&other) noexcept -> btree & { // comparator while moving the values so we can't swap the key // comparators. *mutable_key_comp() = other.key_comp(); - copy_or_move_values_in_order(&other); + copy_or_move_values_in_order(other); } } } diff --git a/absl/container/internal/btree_container.h b/absl/container/internal/btree_container.h index 2322e7c7..3792bc21 100644 --- a/absl/container/internal/btree_container.h +++ b/absl/container/internal/btree_container.h @@ -23,6 +23,7 @@ #include "absl/base/internal/throw_delegate.h" #include "absl/container/internal/btree.h" // IWYU pragma: export #include "absl/container/internal/common.h" +#include "absl/memory/memory.h" #include "absl/meta/type_traits.h" namespace absl { @@ -68,8 +69,21 @@ class btree_container { explicit btree_container(const key_compare &comp, const allocator_type &alloc = allocator_type()) : tree_(comp, alloc) {} - btree_container(const btree_container &other) = default; - btree_container(btree_container &&other) noexcept = default; + explicit btree_container(const allocator_type &alloc) + : tree_(key_compare(), alloc) {} + + btree_container(const btree_container &other) + : btree_container(other, absl::allocator_traits:: + select_on_container_copy_construction( + other.get_allocator())) {} + btree_container(const btree_container &other, const allocator_type &alloc) + : tree_(other.tree_, alloc) {} + + btree_container(btree_container &&other) noexcept( + std::is_nothrow_move_constructible::value) = default; + btree_container(btree_container &&other, const allocator_type &alloc) + : tree_(std::move(other.tree_), alloc) {} + btree_container &operator=(const btree_container &other) = default; btree_container &operator=(btree_container &&other) noexcept( std::is_nothrow_move_assignable::value) = default; @@ -234,7 +248,7 @@ class btree_set_container : public btree_container { using super_type::super_type; btree_set_container() {} - // Range constructor. + // Range constructors. template btree_set_container(InputIterator b, InputIterator e, const key_compare &comp = key_compare(), @@ -242,12 +256,19 @@ class btree_set_container : public btree_container { : super_type(comp, alloc) { insert(b, e); } + template + btree_set_container(InputIterator b, InputIterator e, + const allocator_type &alloc) + : btree_set_container(b, e, key_compare(), alloc) {} - // Initializer list constructor. + // Initializer list constructors. btree_set_container(std::initializer_list init, const key_compare &comp = key_compare(), const allocator_type &alloc = allocator_type()) : btree_set_container(init.begin(), init.end(), comp, alloc) {} + btree_set_container(std::initializer_list init, + const allocator_type &alloc) + : btree_set_container(init.begin(), init.end(), alloc) {} // Lookup routines. template @@ -535,7 +556,7 @@ class btree_multiset_container : public btree_container { using super_type::super_type; btree_multiset_container() {} - // Range constructor. + // Range constructors. template btree_multiset_container(InputIterator b, InputIterator e, const key_compare &comp = key_compare(), @@ -543,12 +564,19 @@ class btree_multiset_container : public btree_container { : super_type(comp, alloc) { insert(b, e); } + template + btree_multiset_container(InputIterator b, InputIterator e, + const allocator_type &alloc) + : btree_multiset_container(b, e, key_compare(), alloc) {} - // Initializer list constructor. + // Initializer list constructors. btree_multiset_container(std::initializer_list init, const key_compare &comp = key_compare(), const allocator_type &alloc = allocator_type()) : btree_multiset_container(init.begin(), init.end(), comp, alloc) {} + btree_multiset_container(std::initializer_list init, + const allocator_type &alloc) + : btree_multiset_container(init.begin(), init.end(), alloc) {} // Lookup routines. template diff --git a/absl/copts/GENERATED_AbseilCopts.cmake b/absl/copts/GENERATED_AbseilCopts.cmake index 97bd283e..beb3799e 100644 --- a/absl/copts/GENERATED_AbseilCopts.cmake +++ b/absl/copts/GENERATED_AbseilCopts.cmake @@ -16,7 +16,6 @@ list(APPEND ABSL_CLANG_CL_FLAGS "-Wno-extra-semi-stmt" "-Wno-packed" "-Wno-padded" - "-Wno-sign-compare" "-Wno-float-conversion" "-Wno-float-equal" "-Wno-format-nonliteral" @@ -88,7 +87,6 @@ list(APPEND ABSL_GCC_FLAGS "-Wvla" "-Wwrite-strings" "-Wno-missing-field-initializers" - "-Wno-sign-compare" "-DNOMINMAX" ) @@ -117,7 +115,6 @@ list(APPEND ABSL_LLVM_FLAGS "-Wno-extra-semi-stmt" "-Wno-packed" "-Wno-padded" - "-Wno-sign-compare" "-Wno-float-conversion" "-Wno-float-equal" "-Wno-format-nonliteral" diff --git a/absl/copts/GENERATED_copts.bzl b/absl/copts/GENERATED_copts.bzl index bcdd61ef..ff729d74 100644 --- a/absl/copts/GENERATED_copts.bzl +++ b/absl/copts/GENERATED_copts.bzl @@ -17,7 +17,6 @@ ABSL_CLANG_CL_FLAGS = [ "-Wno-extra-semi-stmt", "-Wno-packed", "-Wno-padded", - "-Wno-sign-compare", "-Wno-float-conversion", "-Wno-float-equal", "-Wno-format-nonliteral", @@ -89,7 +88,6 @@ ABSL_GCC_FLAGS = [ "-Wvla", "-Wwrite-strings", "-Wno-missing-field-initializers", - "-Wno-sign-compare", "-DNOMINMAX", ] @@ -118,7 +116,6 @@ ABSL_LLVM_FLAGS = [ "-Wno-extra-semi-stmt", "-Wno-packed", "-Wno-padded", - "-Wno-sign-compare", "-Wno-float-conversion", "-Wno-float-equal", "-Wno-format-nonliteral", diff --git a/absl/copts/copts.py b/absl/copts/copts.py index a3437c1b..55b5fb10 100644 --- a/absl/copts/copts.py +++ b/absl/copts/copts.py @@ -41,10 +41,6 @@ LLVM_DISABLE_WARNINGS_FLAGS = [ "-Wno-packed", "-Wno-padded", ### - # Google style does not use unsigned integers, though STL containers - # have unsigned types. - "-Wno-sign-compare", - ### "-Wno-float-conversion", "-Wno-float-equal", "-Wno-format-nonliteral", @@ -138,9 +134,6 @@ COPT_VARS = { # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36750 # Remove when gcc-4.x is no longer supported. "-Wno-missing-field-initializers", - # Google style does not use unsigned integers, though STL containers - # have unsigned types. - "-Wno-sign-compare", # Don't define min and max macros (Build on Windows using gcc) "-DNOMINMAX", ], diff --git a/absl/debugging/symbolize_elf.inc b/absl/debugging/symbolize_elf.inc index 7c36fd13..f4d5727b 100644 --- a/absl/debugging/symbolize_elf.inc +++ b/absl/debugging/symbolize_elf.inc @@ -1281,7 +1281,7 @@ static bool MaybeInitializeObjFile(ObjFile *obj) { const int phnum = obj->elf_header.e_phnum; const int phentsize = obj->elf_header.e_phentsize; size_t phoff = obj->elf_header.e_phoff; - int num_executable_load_segments = 0; + size_t num_executable_load_segments = 0; for (int j = 0; j < phnum; j++) { ElfW(Phdr) phdr; if (!ReadFromOffsetExact(obj->fd, &phdr, sizeof(phdr), phoff)) { @@ -1342,7 +1342,7 @@ const char *Symbolizer::GetSymbol(const void *const pc) { // Note: some binaries have multiple "rx" LOAD segments. We must // find the right one. ElfW(Phdr) *phdr = nullptr; - for (int j = 0; j < obj->phdr.size(); j++) { + for (size_t j = 0; j < obj->phdr.size(); j++) { ElfW(Phdr) &p = obj->phdr[j]; if (p.p_type != PT_LOAD) { // We only expect PT_LOADs. This must be PT_NULL that we didn't diff --git a/absl/flags/reflection.h b/absl/flags/reflection.h index 4ce0ab6c..e6baf5de 100644 --- a/absl/flags/reflection.h +++ b/absl/flags/reflection.h @@ -64,7 +64,7 @@ absl::flat_hash_map GetAllFlags(); // void MyFunc() { // absl::FlagSaver fs; // ... -// absl::SetFlag(FLAGS_myFlag, otherValue); +// absl::SetFlag(&FLAGS_myFlag, otherValue); // ... // } // scope of FlagSaver left, flags return to previous state // diff --git a/absl/strings/internal/charconv_parse.cc b/absl/strings/internal/charconv_parse.cc index a368845f..8b11868c 100644 --- a/absl/strings/internal/charconv_parse.cc +++ b/absl/strings/internal/charconv_parse.cc @@ -246,8 +246,8 @@ constexpr int DigitMagnitude<16>() { // ConsumeDigits does not protect against overflow on *out; max_digits must // be chosen with respect to type T to avoid the possibility of overflow. template -std::size_t ConsumeDigits(const char* begin, const char* end, int max_digits, - T* out, bool* dropped_nonzero_digit) { +int ConsumeDigits(const char* begin, const char* end, int max_digits, T* out, + bool* dropped_nonzero_digit) { if (base == 10) { assert(max_digits <= std::numeric_limits::digits10); } else if (base == 16) { @@ -282,7 +282,7 @@ std::size_t ConsumeDigits(const char* begin, const char* end, int max_digits, *dropped_nonzero_digit = true; } *out = accumulator; - return begin - original_begin; + return static_cast(begin - original_begin); } // Returns true if `v` is one of the chars allowed inside parentheses following @@ -372,7 +372,7 @@ strings_internal::ParsedFloat ParseFloat(const char* begin, const char* end, int exponent_adjustment = 0; bool mantissa_is_inexact = false; - std::size_t pre_decimal_digits = ConsumeDigits( + int pre_decimal_digits = ConsumeDigits( begin, end, MantissaDigitsMax(), &mantissa, &mantissa_is_inexact); begin += pre_decimal_digits; int digits_left; @@ -398,14 +398,14 @@ strings_internal::ParsedFloat ParseFloat(const char* begin, const char* end, while (begin < end && *begin == '0') { ++begin; } - std::size_t zeros_skipped = begin - begin_zeros; + int zeros_skipped = static_cast(begin - begin_zeros); if (zeros_skipped >= DigitLimit()) { // refuse to parse pathological inputs return result; } exponent_adjustment -= static_cast(zeros_skipped); } - int64_t post_decimal_digits = ConsumeDigits( + int post_decimal_digits = ConsumeDigits( begin, end, digits_left, &mantissa, &mantissa_is_inexact); begin += post_decimal_digits; diff --git a/absl/strings/internal/str_format/bind.cc b/absl/strings/internal/str_format/bind.cc index 194e21af..4e68b90b 100644 --- a/absl/strings/internal/str_format/bind.cc +++ b/absl/strings/internal/str_format/bind.cc @@ -235,7 +235,7 @@ int FprintF(std::FILE* output, const UntypedFormatSpecImpl format, errno = sink.error(); return -1; } - if (sink.count() > std::numeric_limits::max()) { + if (sink.count() > static_cast(std::numeric_limits::max())) { errno = EFBIG; return -1; } diff --git a/absl/strings/internal/str_format/float_conversion.cc b/absl/strings/internal/str_format/float_conversion.cc index d3c5f0a7..0ded0a66 100644 --- a/absl/strings/internal/str_format/float_conversion.cc +++ b/absl/strings/internal/str_format/float_conversion.cc @@ -134,7 +134,7 @@ class BinaryToDecimal { assert(exp > 0); assert(exp <= std::numeric_limits::max_exponent); static_assert( - StackArray::kMaxCapacity >= + static_cast(StackArray::kMaxCapacity) >= ChunksNeeded(std::numeric_limits::max_exponent), ""); diff --git a/absl/synchronization/internal/graphcycles.cc b/absl/synchronization/internal/graphcycles.cc index 19f9aab5..27fec216 100644 --- a/absl/synchronization/internal/graphcycles.cc +++ b/absl/synchronization/internal/graphcycles.cc @@ -37,6 +37,7 @@ #include #include +#include #include "absl/base/internal/hide_ptr.h" #include "absl/base/internal/raw_logging.h" #include "absl/base/internal/spinlock.h" diff --git a/ci/linux_docker_containers.sh b/ci/linux_docker_containers.sh index b96fe890..afad301e 100644 --- a/ci/linux_docker_containers.sh +++ b/ci/linux_docker_containers.sh @@ -19,4 +19,3 @@ readonly LINUX_ALPINE_CONTAINER="gcr.io/google.com/absl-177019/alpine:20191016" readonly LINUX_CLANG_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20201008" readonly LINUX_GCC_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20201008" readonly LINUX_GCC_FLOOR_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-floor:20201015" -readonly LINUX_GCC_49_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-4.9:20191018" diff --git a/ci/linux_gcc-4.9_libstdcxx_bazel.sh b/ci/linux_gcc-4.9_libstdcxx_bazel.sh deleted file mode 100755 index 16f927bd..00000000 --- a/ci/linux_gcc-4.9_libstdcxx_bazel.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/bash -# -# Copyright 2019 The Abseil Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# This script that can be invoked to test abseil-cpp in a hermetic environment -# using a Docker image on Linux. You must have Docker installed to use this -# script. - -set -euox pipefail - -if [[ -z ${ABSEIL_ROOT:-} ]]; then - ABSEIL_ROOT="$(realpath $(dirname ${0})/..)" -fi - -if [[ -z ${STD:-} ]]; then - STD="c++11 c++14" -fi - -if [[ -z ${COMPILATION_MODE:-} ]]; then - COMPILATION_MODE="fastbuild opt" -fi - -if [[ -z ${EXCEPTIONS_MODE:-} ]]; then - EXCEPTIONS_MODE="-fno-exceptions -fexceptions" -fi - -source "${ABSEIL_ROOT}/ci/linux_docker_containers.sh" -readonly DOCKER_CONTAINER=${LINUX_GCC_49_CONTAINER} - -# USE_BAZEL_CACHE=1 only works on Kokoro. -# Without access to the credentials this won't work. -if [[ ${USE_BAZEL_CACHE:-0} -ne 0 ]]; then - DOCKER_EXTRA_ARGS="--mount type=bind,source=${KOKORO_KEYSTORE_DIR},target=/keystore,readonly ${DOCKER_EXTRA_ARGS:-}" - # Bazel doesn't track changes to tools outside of the workspace - # (e.g. /usr/bin/gcc), so by appending the docker container to the - # remote_http_cache url, we make changes to the container part of - # the cache key. Hashing the key is to make it shorter and url-safe. - container_key=$(echo ${DOCKER_CONTAINER} | sha256sum | head -c 16) - BAZEL_EXTRA_ARGS="--remote_http_cache=https://storage.googleapis.com/absl-bazel-remote-cache/${container_key} --google_credentials=/keystore/73103_absl-bazel-remote-cache ${BAZEL_EXTRA_ARGS:-}" -fi - -# Avoid depending on external sites like GitHub by checking --distdir for -# external dependencies first. -# https://docs.bazel.build/versions/master/guide.html#distdir -if [[ ${KOKORO_GFILE_DIR:-} ]] && [[ -d "${KOKORO_GFILE_DIR}/distdir" ]]; then - DOCKER_EXTRA_ARGS="--mount type=bind,source=${KOKORO_GFILE_DIR}/distdir,target=/distdir,readonly ${DOCKER_EXTRA_ARGS:-}" - BAZEL_EXTRA_ARGS="--distdir=/distdir ${BAZEL_EXTRA_ARGS:-}" -fi - -for std in ${STD}; do - for compilation_mode in ${COMPILATION_MODE}; do - for exceptions_mode in ${EXCEPTIONS_MODE}; do - echo "--------------------------------------------------------------------" - time docker run \ - --mount type=bind,source="${ABSEIL_ROOT}",target=/abseil-cpp,readonly \ - --workdir=/abseil-cpp \ - --cap-add=SYS_PTRACE \ - --rm \ - -e CC="/usr/bin/gcc-4.9" \ - -e BAZEL_CXXOPTS="-std=${std}" \ - ${DOCKER_EXTRA_ARGS:-} \ - ${DOCKER_CONTAINER} \ - /usr/local/bin/bazel test ... \ - --compilation_mode="${compilation_mode}" \ - --copt="${exceptions_mode}" \ - --copt=-Werror \ - --define="absl=1" \ - --keep_going \ - --show_timestamps \ - --test_env="GTEST_INSTALL_FAILURE_SIGNAL_HANDLER=1" \ - --test_env="TZDIR=/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo" \ - --test_output=errors \ - --test_tag_filters=-benchmark \ - ${BAZEL_EXTRA_ARGS:-} - done - done -done -- cgit v1.2.3 From 962b067540f511070b7afa4cda465233b42b560a Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Tue, 27 Oct 2020 14:08:57 -0700 Subject: Export of internal Abseil changes -- e5b45b15c19e85aaa33430ac2bd45fcc2e52dad5 by Greg Falcon : Add extra tests exercising ShiftLeft() at boundary conditions, to guard against logic errors in our memory bounds checking. PiperOrigin-RevId: 339326030 -- cdfde78815ca016a57f90f53d08c3335bd355f30 by Evan Brown : Fix a bug in b-tree erase() and count() in which we weren't accounting for cases where the comparator is heterogeneous and has different equivalence classes for different lookup types. Optimize equal_range to avoid comparisons when possible. PiperOrigin-RevId: 339270230 -- b4aa337c156fa91f74f25c676c679ae146311968 by Derek Mauro : Fix execution of the cmake build scripts when not on Kokoro PiperOrigin-RevId: 339131253 -- fa3d1f602f711be72fde6b5f29d6341b9b5f8a2c by Derek Mauro : Update Docker container used for Alpine Linux testing PiperOrigin-RevId: 339074246 GitOrigin-RevId: e5b45b15c19e85aaa33430ac2bd45fcc2e52dad5 Change-Id: I2cc3adc4de3493203c8a944aedee40efa54af0c0 --- absl/container/btree_test.cc | 21 ++++++- absl/container/internal/btree.h | 87 ++++++++------------------- absl/container/internal/btree_container.h | 43 +++++-------- absl/strings/internal/charconv_bigint_test.cc | 55 +++++++++++++++++ ci/cmake_common.sh | 2 +- ci/linux_docker_containers.sh | 2 +- 6 files changed, 115 insertions(+), 95 deletions(-) (limited to 'ci/linux_docker_containers.sh') diff --git a/absl/container/btree_test.cc b/absl/container/btree_test.cc index 4a495067..9b1b6436 100644 --- a/absl/container/btree_test.cc +++ b/absl/container/btree_test.cc @@ -2680,6 +2680,12 @@ struct MultiKey { int i2; }; +bool operator==(const MultiKey a, const MultiKey b) { + return a.i1 == b.i1 && a.i2 == b.i2; +} + +// A heterogeneous comparator that has different equivalence classes for +// different lookup types. struct MultiKeyComp { using is_transparent = void; bool operator()(const MultiKey a, const MultiKey b) const { @@ -2690,8 +2696,6 @@ struct MultiKeyComp { bool operator()(const MultiKey a, const int b) const { return a.i1 < b; } }; -// Test that when there's a heterogeneous comparator that behaves differently -// for some heterogeneous operators, we get equal_range() right. TEST(Btree, MultiKeyEqualRange) { absl::btree_set set; @@ -2709,6 +2713,19 @@ TEST(Btree, MultiKeyEqualRange) { } } +TEST(Btree, MultiKeyErase) { + absl::btree_set set = { + {1, 1}, {2, 1}, {2, 2}, {3, 1}}; + EXPECT_EQ(set.erase(2), 2); + EXPECT_THAT(set, ElementsAre(MultiKey{1, 1}, MultiKey{3, 1})); +} + +TEST(Btree, MultiKeyCount) { + const absl::btree_set set = { + {1, 1}, {2, 1}, {2, 2}, {3, 1}}; + EXPECT_EQ(set.count(2), 2); +} + TEST(Btree, AllocConstructor) { using Alloc = CountingAllocator; using Set = absl::btree_set, Alloc>; diff --git a/absl/container/internal/btree.h b/absl/container/internal/btree.h index 8547d68e..f2fc31df 100644 --- a/absl/container/internal/btree.h +++ b/absl/container/internal/btree.h @@ -423,6 +423,7 @@ struct SearchResult { // useful information. template struct SearchResult { + SearchResult() {} explicit SearchResult(V value) : value(value) {} SearchResult(V value, MatchKind /*match*/) : value(value) {} @@ -1200,11 +1201,11 @@ class btree { // Finds the first element whose key is not less than key. template iterator lower_bound(const K &key) { - return internal_end(internal_lower_bound(key)); + return internal_end(internal_lower_bound(key).value); } template const_iterator lower_bound(const K &key) const { - return internal_end(internal_lower_bound(key)); + return internal_end(internal_lower_bound(key).value); } // Finds the first element whose key is greater than key. @@ -1289,16 +1290,6 @@ class btree { // to the element after the last erased element. std::pair erase_range(iterator begin, iterator end); - // Erases the specified key from the btree. Returns 1 if an element was - // erased and 0 otherwise. - template - size_type erase_unique(const K &key); - - // Erases all of the entries matching the specified key from the - // btree. Returns the number of elements erased. - template - size_type erase_multi(const K &key); - // Finds the iterator corresponding to a key or returns end() if the key is // not present. template @@ -1310,23 +1301,6 @@ class btree { return internal_end(internal_find(key)); } - // Returns a count of the number of times the key appears in the btree. - template - size_type count_unique(const K &key) const { - const iterator begin = internal_find(key); - if (begin.node == nullptr) { - // The key doesn't exist in the tree. - return 0; - } - return 1; - } - // Returns a count of the number of times the key appears in the btree. - template - size_type count_multi(const K &key) const { - const auto range = equal_range(key); - return std::distance(range.first, range.second); - } - // Clear the btree, deleting all of the values it contains. void clear(); @@ -1514,7 +1488,8 @@ class btree { // Internal routine which implements lower_bound(). template - iterator internal_lower_bound(const K &key) const; + SearchResult internal_lower_bound( + const K &key) const; // Internal routine which implements upper_bound(). template @@ -1918,10 +1893,13 @@ constexpr bool btree

::static_assert_validation() { template template auto btree

::equal_range(const K &key) -> std::pair { - const iterator lower = lower_bound(key); - // TODO(ezb): we should be able to avoid this comparison when there's a - // three-way comparator. - if (lower == end() || compare_keys(key, lower.key())) return {lower, lower}; + const SearchResult res = + internal_lower_bound(key); + const iterator lower = internal_end(res.value); + if (res.HasMatch() ? !res.IsEq() + : lower == end() || compare_keys(key, lower.key())) { + return {lower, lower}; + } const iterator next = std::next(lower); // When the comparator is heterogeneous, we can't assume that comparison with @@ -1941,7 +1919,7 @@ auto btree

::equal_range(const K &key) -> std::pair { // Try once more to avoid the call to upper_bound() if there's only one // equivalent key. This should prevent all calls to upper_bound() in cases of // unique-containers with heterogeneous comparators in which all comparison - // operators are equivalent. + // operators have the same equivalence classes. if (next == end() || compare_keys(key, next.key())) return {lower, next}; // In this case, we need to call upper_bound() to avoid worst case O(N) @@ -2225,31 +2203,6 @@ auto btree

::erase_range(iterator begin, iterator end) return {count, begin}; } -template -template -auto btree

::erase_unique(const K &key) -> size_type { - const iterator iter = internal_find(key); - if (iter.node == nullptr) { - // The key doesn't exist in the tree, return nothing done. - return 0; - } - erase(iter); - return 1; -} - -template -template -auto btree

::erase_multi(const K &key) -> size_type { - const iterator begin = internal_lower_bound(key); - if (begin.node == nullptr) { - // The key doesn't exist in the tree, return nothing done. - return 0; - } - // Delete all of the keys between begin and upper_bound(key). - const iterator end = internal_end(internal_upper_bound(key)); - return erase_range(begin, end).first; -} - template void btree

::clear() { if (!empty()) { @@ -2548,16 +2501,24 @@ inline auto btree

::internal_locate(const K &key) const template template -auto btree

::internal_lower_bound(const K &key) const -> iterator { +auto btree

::internal_lower_bound(const K &key) const + -> SearchResult { iterator iter(const_cast(root())); + SearchResult res; + bool seen_eq = false; for (;;) { - iter.position = iter.node->lower_bound(key, key_comp()).value; + res = iter.node->lower_bound(key, key_comp()); + iter.position = res.value; + // TODO(ezb): we should be able to terminate early on IsEq() if there can't + // be multiple equivalent keys in container for this lookup type. if (iter.node->leaf()) { break; } + seen_eq = seen_eq || res.IsEq(); iter.node = iter.node->child(iter.position); } - return internal_last(iter); + if (res.IsEq()) return {iter, MatchKind::kEq}; + return {internal_last(iter), seen_eq ? MatchKind::kEq : MatchKind::kNe}; } template diff --git a/absl/container/internal/btree_container.h b/absl/container/internal/btree_container.h index 3792bc21..887eda41 100644 --- a/absl/container/internal/btree_container.h +++ b/absl/container/internal/btree_container.h @@ -104,6 +104,11 @@ class btree_container { // Lookup routines. template + size_type count(const key_arg &key) const { + auto equal_range = this->equal_range(key); + return std::distance(equal_range.first, equal_range.second); + } + template iterator find(const key_arg &key) { return tree_.find(key); } @@ -152,6 +157,11 @@ class btree_container { iterator erase(const_iterator first, const_iterator last) { return tree_.erase_range(iterator(first), iterator(last)).second; } + template + size_type erase(const key_arg &key) { + auto equal_range = this->equal_range(key); + return tree_.erase_range(equal_range.first, equal_range.second).first; + } // Extract routines. node_type extract(iterator position) { @@ -270,12 +280,6 @@ class btree_set_container : public btree_container { const allocator_type &alloc) : btree_set_container(init.begin(), init.end(), alloc) {} - // Lookup routines. - template - size_type count(const key_arg &key) const { - return this->tree_.count_unique(key); - } - // Insertion routines. std::pair insert(const value_type &v) { return this->tree_.insert_unique(params_type::key(v), v); @@ -333,16 +337,10 @@ class btree_set_container : public btree_container { return res.first; } - // Deletion routines. - // TODO(ezb): we should support heterogeneous comparators that have different - // behavior for K!=key_type. - template - size_type erase(const key_arg &key) { - return this->tree_.erase_unique(key); - } - using super_type::erase; - // Node extraction routines. + // TODO(ezb): when the comparator is heterogeneous and has different + // equivalence classes for different lookup types, we should extract the first + // equivalent value if there are multiple. template node_type extract(const key_arg &key) { auto it = this->find(key); @@ -578,12 +576,6 @@ class btree_multiset_container : public btree_container { const allocator_type &alloc) : btree_multiset_container(init.begin(), init.end(), alloc) {} - // Lookup routines. - template - size_type count(const key_arg &key) const { - return this->tree_.count_multi(key); - } - // Insertion routines. iterator insert(const value_type &v) { return this->tree_.insert_multi(v); } iterator insert(value_type &&v) { @@ -628,14 +620,9 @@ class btree_multiset_container : public btree_container { return res; } - // Deletion routines. - template - size_type erase(const key_arg &key) { - return this->tree_.erase_multi(key); - } - using super_type::erase; - // Node extraction routines. + // TODO(ezb): we are supposed to extract the first equivalent key if there are + // multiple, but this isn't guaranteed to extract the first one. template node_type extract(const key_arg &key) { auto it = this->find(key); diff --git a/absl/strings/internal/charconv_bigint_test.cc b/absl/strings/internal/charconv_bigint_test.cc index 363bcb03..a8b99458 100644 --- a/absl/strings/internal/charconv_bigint_test.cc +++ b/absl/strings/internal/charconv_bigint_test.cc @@ -69,6 +69,61 @@ TEST(BigUnsigned, ShiftLeft) { // And we should have fully rotated all bits off by now: EXPECT_EQ(a, BigUnsigned<84>(0u)); } + { + // Bit shifting large and small numbers by large and small offsets. + // Intended to exercise bounds-checking corner on ShiftLeft() (directly + // and under asan). + + // 2**(32*84)-1 + const BigUnsigned<84> all_bits_one( + "1474444211396924248063325089479706787923460402125687709454567433186613" + "6228083464060749874845919674257665016359189106695900028098437021384227" + "3285029708032466536084583113729486015826557532750465299832071590813090" + "2011853039837649252477307070509704043541368002938784757296893793903797" + "8180292336310543540677175225040919704702800559606097685920595947397024" + "8303316808753252115729411497720357971050627997031988036134171378490368" + "6008000778741115399296162550786288457245180872759047016734959330367829" + "5235612397427686310674725251378116268607113017720538636924549612987647" + "5767411074510311386444547332882472126067840027882117834454260409440463" + "9345147252664893456053258463203120637089916304618696601333953616715125" + "2115882482473279040772264257431663818610405673876655957323083702713344" + "4201105427930770976052393421467136557055"); + const BigUnsigned<84> zero(0u); + const BigUnsigned<84> one(1u); + // in bounds shifts + for (int i = 1; i < 84*32; ++i) { + // shifting all_bits_one to the left should result in a smaller number, + // since the high bits rotate off and the low bits are replaced with + // zeroes. + BigUnsigned<84> big_shifted = all_bits_one; + big_shifted.ShiftLeft(i); + EXPECT_GT(all_bits_one, big_shifted); + // Shifting 1 to the left should instead result in a larger number. + BigUnsigned<84> small_shifted = one; + small_shifted.ShiftLeft(i); + EXPECT_LT(one, small_shifted); + } + // Shifting by zero or a negative number has no effect + for (int no_op_shift : {0, -1, -84 * 32, std::numeric_limits::min()}) { + BigUnsigned<84> big_shifted = all_bits_one; + big_shifted.ShiftLeft(no_op_shift); + EXPECT_EQ(all_bits_one, big_shifted); + BigUnsigned<84> small_shifted = one; + big_shifted.ShiftLeft(no_op_shift); + EXPECT_EQ(one, small_shifted); + } + // Shifting by an amount greater than the number of bits should result in + // zero. + for (int out_of_bounds_shift : + {84 * 32, 84 * 32 + 1, std::numeric_limits::max()}) { + BigUnsigned<84> big_shifted = all_bits_one; + big_shifted.ShiftLeft(out_of_bounds_shift); + EXPECT_EQ(zero, big_shifted); + BigUnsigned<84> small_shifted = one; + small_shifted.ShiftLeft(out_of_bounds_shift); + EXPECT_EQ(zero, small_shifted); + } + } } TEST(BigUnsigned, MultiplyByUint32) { diff --git a/ci/cmake_common.sh b/ci/cmake_common.sh index 15ffde2e..aec8a117 100755 --- a/ci/cmake_common.sh +++ b/ci/cmake_common.sh @@ -17,7 +17,7 @@ readonly ABSL_GOOGLETEST_COMMIT="8567b09290fe402cf01923e2131c5635b8ed851b" # Avoid depending on GitHub by looking for a cached copy of the commit first. -if [[ -r "${KOKORO_GFILE_DIR}/distdir/${ABSL_GOOGLETEST_COMMIT}.zip" ]]; then +if [[ -r "${KOKORO_GFILE_DIR:-}/distdir/${ABSL_GOOGLETEST_COMMIT}.zip" ]]; then DOCKER_EXTRA_ARGS="--mount type=bind,source=${KOKORO_GFILE_DIR}/distdir,target=/distdir,readonly ${DOCKER_EXTRA_ARGS:-}" ABSL_GOOGLETEST_DOWNLOAD_URL="file:///distdir/${ABSL_GOOGLETEST_COMMIT}.zip" else diff --git a/ci/linux_docker_containers.sh b/ci/linux_docker_containers.sh index afad301e..1c29d9a1 100644 --- a/ci/linux_docker_containers.sh +++ b/ci/linux_docker_containers.sh @@ -15,7 +15,7 @@ # The file contains Docker container identifiers currently used by test scripts. # Test scripts should source this file to get the identifiers. -readonly LINUX_ALPINE_CONTAINER="gcr.io/google.com/absl-177019/alpine:20191016" +readonly LINUX_ALPINE_CONTAINER="gcr.io/google.com/absl-177019/alpine:20201026" readonly LINUX_CLANG_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20201008" readonly LINUX_GCC_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20201008" readonly LINUX_GCC_FLOOR_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-floor:20201015" -- cgit v1.2.3