From 811a85b5d78807d1280e79151a915eb44577421b Mon Sep 17 00:00:00 2001 From: Benjamin Barenblat Date: Sun, 31 Jan 2021 14:57:57 -0500 Subject: Work around broken std::hash implementation on s390x MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Disable unit tests that require a working std::hash on s390x, since s390x’s std::hash hashes large classes of data equivalently (see https://bugs.debian.org/977638). --- debian/patches/series | 1 + debian/patches/std-hash.diff | 46 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 debian/patches/std-hash.diff diff --git a/debian/patches/series b/debian/patches/series index 95a122f0..8dd1d3d3 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,3 +1,4 @@ configure.diff fix-hppa.diff +std-hash.diff latomic.diff diff --git a/debian/patches/std-hash.diff b/debian/patches/std-hash.diff new file mode 100644 index 00000000..52096742 --- /dev/null +++ b/debian/patches/std-hash.diff @@ -0,0 +1,46 @@ +From: Benjamin Barenblat +Subject: Work around broken std::hash on s390x +Forwarded: no +Bug-Debian: https://bugs.debian.org/977638 + +On s390x, std::hash hashes large classes of data to the same value, which +violates assumptions made by the Abseil tests. #ifdef out the test code that +depends on those assumptions. + +--- a/absl/hash/hash_test.cc ++++ b/absl/hash/hash_test.cc +@@ -358,6 +358,8 @@ + TEST(HashValueTest, StdBitset) { + EXPECT_TRUE((is_hashable>::value)); + ++ // The following assertions fail on s390x (https://bugs.debian.org/977638). ++#ifndef __s390x__ + EXPECT_TRUE(absl::VerifyTypeImplementsAbslHashCorrectly( + {std::bitset<2>("00"), std::bitset<2>("01"), std::bitset<2>("10"), + std::bitset<2>("11")})); +@@ -379,6 +381,7 @@ + std::bitset(bit_strings[3].c_str()), + std::bitset(bit_strings[4].c_str()), + std::bitset(bit_strings[5].c_str())})); ++#endif + } // namespace + + template +@@ -400,10 +403,15 @@ + } + + REGISTER_TYPED_TEST_CASE_P(HashValueSequenceTest, BasicUsage); ++// std::vector tests fail on s390x, so exclude them. See ++// https://bugs.debian.org/977638. + using IntSequenceTypes = + testing::Types, std::forward_list, std::list, +- std::vector, std::vector, std::set, +- std::multiset>; ++ std::vector, ++#ifndef __s390x__ ++ std::vector, ++#endif ++ std::set, std::multiset>; + INSTANTIATE_TYPED_TEST_CASE_P(My, HashValueSequenceTest, IntSequenceTypes); + + // Private type that only supports AbslHashValue to make sure our chosen hash -- cgit v1.2.3