summaryrefslogtreecommitdiff
path: root/debian/patches/std-hash.diff
blob: 5209674228363195f2053a7fda8bd56c5149b0f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
From: Benjamin Barenblat <bbaren@google.com>
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<std::bitset<257>>::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<kNumBits>(bit_strings[3].c_str()),
        std::bitset<kNumBits>(bit_strings[4].c_str()),
        std::bitset<kNumBits>(bit_strings[5].c_str())}));
+#endif
 }  // namespace
 
 template <typename T>
@@ -400,10 +403,15 @@
 }
 
 REGISTER_TYPED_TEST_CASE_P(HashValueSequenceTest, BasicUsage);
+// std::vector<bool> tests fail on s390x, so exclude them. See
+// https://bugs.debian.org/977638.
 using IntSequenceTypes =
     testing::Types<std::deque<int>, std::forward_list<int>, std::list<int>,
-                   std::vector<int>, std::vector<bool>, std::set<int>,
-                   std::multiset<int>>;
+                   std::vector<int>,
+#ifndef __s390x__
+                   std::vector<bool>,
+#endif
+                   std::set<int>, std::multiset<int>>;
 INSTANTIATE_TYPED_TEST_CASE_P(My, HashValueSequenceTest, IntSequenceTypes);
 
 // Private type that only supports AbslHashValue to make sure our chosen hash