diff options
author | George Karpenkov <ekarpenkov@apple.com> | 2017-08-27 23:20:09 +0000 |
---|---|---|
committer | George Karpenkov <ekarpenkov@apple.com> | 2017-08-27 23:20:09 +0000 |
commit | bebcbfb46dc7c89d32eb11254123211f87087dca (patch) | |
tree | ac7ca788e2445caf8b5ff0a60eab3f220a126975 /compiler-rt/lib/fuzzer/tests | |
parent | 41395022a32a29d8bab5af989a59af4cb83b1191 (diff) | |
download | bcm5719-llvm-bebcbfb46dc7c89d32eb11254123211f87087dca.tar.gz bcm5719-llvm-bebcbfb46dc7c89d32eb11254123211f87087dca.zip |
[libFuzzer] Use custom allocators for STL containers in libFuzzer.
Avoids ODR violations causing spurious ASAN warnings.
Differential Revision: https://reviews.llvm.org/D37086
llvm-svn: 311866
Diffstat (limited to 'compiler-rt/lib/fuzzer/tests')
-rw-r--r-- | compiler-rt/lib/fuzzer/tests/FuzzerUnittest.cpp | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/compiler-rt/lib/fuzzer/tests/FuzzerUnittest.cpp b/compiler-rt/lib/fuzzer/tests/FuzzerUnittest.cpp index 858e61d75fe..f3e822636ce 100644 --- a/compiler-rt/lib/fuzzer/tests/FuzzerUnittest.cpp +++ b/compiler-rt/lib/fuzzer/tests/FuzzerUnittest.cpp @@ -72,7 +72,7 @@ TEST(Fuzzer, CrossOver) { { 0, 5, 6, 7, 1, 2 } }; for (size_t Len = 1; Len < 8; Len++) { - std::set<Unit> FoundUnits, ExpectedUnitsWitThisLength; + Set<Unit> FoundUnits, ExpectedUnitsWitThisLength; for (int Iter = 0; Iter < 3000; Iter++) { C.resize(Len); size_t NewSize = MD.CrossOver(A.data(), A.size(), B.data(), B.size(), @@ -526,7 +526,7 @@ TEST(FuzzerDictionary, ParseOneDictionaryEntry) { } TEST(FuzzerDictionary, ParseDictionaryFile) { - std::vector<Unit> Units; + Vector<Unit> Units; EXPECT_FALSE(ParseDictionaryFile("zzz\n", &Units)); EXPECT_FALSE(ParseDictionaryFile("", &Units)); EXPECT_TRUE(ParseDictionaryFile("\n", &Units)); @@ -538,11 +538,11 @@ TEST(FuzzerDictionary, ParseDictionaryFile) { EXPECT_TRUE(ParseDictionaryFile(" #zzzz\n", &Units)); EXPECT_EQ(Units.size(), 0U); EXPECT_TRUE(ParseDictionaryFile(" #zzzz\naaa=\"aa\"", &Units)); - EXPECT_EQ(Units, std::vector<Unit>({Unit({'a', 'a'})})); + EXPECT_EQ(Units, Vector<Unit>({Unit({'a', 'a'})})); EXPECT_TRUE( ParseDictionaryFile(" #zzzz\naaa=\"aa\"\n\nabc=\"abc\"", &Units)); EXPECT_EQ(Units, - std::vector<Unit>({Unit({'a', 'a'}), Unit({'a', 'b', 'c'})})); + Vector<Unit>({Unit({'a', 'a'}), Unit({'a', 'b', 'c'})})); } TEST(FuzzerUtil, Base64) { @@ -566,7 +566,7 @@ TEST(Corpus, Distribution) { for (size_t i = 0; i < N; i++) C->AddToCorpus(Unit{ static_cast<uint8_t>(i) }, 1, false, {}); - std::vector<size_t> Hist(N); + Vector<size_t> Hist(N); for (size_t i = 0; i < N * TriesPerUnit; i++) { Hist[C->ChooseUnitIdxToMutate(Rand)]++; } @@ -596,21 +596,21 @@ TEST(Merge, Bad) { } } -void EQ(const std::vector<uint32_t> &A, const std::vector<uint32_t> &B) { +void EQ(const Vector<uint32_t> &A, const Vector<uint32_t> &B) { EXPECT_EQ(A, B); } -void EQ(const std::vector<std::string> &A, const std::vector<std::string> &B) { - std::set<std::string> a(A.begin(), A.end()); - std::set<std::string> b(B.begin(), B.end()); +void EQ(const Vector<std::string> &A, const Vector<std::string> &B) { + Set<std::string> a(A.begin(), A.end()); + Set<std::string> b(B.begin(), B.end()); EXPECT_EQ(a, b); } static void Merge(const std::string &Input, - const std::vector<std::string> Result, + const Vector<std::string> Result, size_t NumNewFeatures) { Merger M; - std::vector<std::string> NewFiles; + Vector<std::string> NewFiles; EXPECT_TRUE(M.Parse(Input, true)); std::stringstream SS; M.PrintSummary(SS); @@ -658,7 +658,7 @@ TEST(Merge, Good) { EQ(M.Files[1].Features, {4, 5, 6}); - std::vector<std::string> NewFiles; + Vector<std::string> NewFiles; EXPECT_TRUE(M.Parse("3\n2\nAA\nBB\nC\n" "STARTED 0 1000\nDONE 0 1 2 3\n" @@ -693,7 +693,11 @@ TEST(Merge, Good) { "", true)); EQ(M.Files[0].Features, {4, 5, 6}); EQ(M.Files[1].Features, {1, 3, 6}); - EXPECT_EQ(3U, M.Merge({1, 2, 3}, &NewFiles)); + Set<uint32_t> InitialFeatures; + InitialFeatures.insert(1); + InitialFeatures.insert(2); + InitialFeatures.insert(3); + EXPECT_EQ(3U, M.Merge(InitialFeatures, &NewFiles)); EQ(NewFiles, {"B"}); } @@ -739,7 +743,7 @@ TEST(Fuzzer, ForEachNonZeroByte) { 0, 0, 0, 0, 0, 0, 0, 8, 9, 9, 9, 9, 9, 9, 9, 9, }; - typedef std::vector<std::pair<size_t, uint8_t> > Vec; + typedef Vector<std::pair<size_t, uint8_t> > Vec; Vec Res, Expected; auto CB = [&](size_t FirstFeature, size_t Idx, uint8_t V) { Res.push_back({FirstFeature + Idx, V}); |