[compiler-rt] r327929 - [compiler-rt] Change std::sort to llvm::sort in response to r327219

Mandeep Singh Grang via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 19 17:44:59 PDT 2018


Author: mgrang
Date: Mon Mar 19 17:44:59 2018
New Revision: 327929

URL: http://llvm.org/viewvc/llvm-project?rev=327929&view=rev
Log:
[compiler-rt] Change std::sort to llvm::sort in response to r327219

Summary:
r327219 added wrappers to std::sort which randomly shuffle the container before sorting.
This will help in uncovering non-determinism caused due to undefined sorting
order of objects having the same key.

To make use of that infrastructure we need to invoke llvm::sort instead of std::sort.

Reviewers: kcc, rsmith, RKSimon, eugenis

Reviewed By: RKSimon

Subscribers: efriedma, kubamracek, dberris, #sanitizers, llvm-commits

Differential Revision: https://reviews.llvm.org/D44360

Modified:
    compiler-rt/trunk/lib/asan/tests/asan_mem_test.cc
    compiler-rt/trunk/lib/fuzzer/FuzzerCorpus.h
    compiler-rt/trunk/lib/fuzzer/FuzzerMerge.cpp
    compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_common_test.cc
    compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_linux_test.cc

Modified: compiler-rt/trunk/lib/asan/tests/asan_mem_test.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/tests/asan_mem_test.cc?rev=327929&r1=327928&r2=327929&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/tests/asan_mem_test.cc (original)
+++ compiler-rt/trunk/lib/asan/tests/asan_mem_test.cc Mon Mar 19 17:44:59 2018
@@ -82,7 +82,7 @@ static bool AllocateTwoAdjacentArrays(ch
   for (size_t i = 0; i < 1000U && !res; i++) {
     v.push_back(reinterpret_cast<uintptr_t>(new char[size]));
     if (i == 0) continue;
-    sort(v.begin(), v.end());
+    llvm::sort(v.begin(), v.end());
     for (size_t j = 1; j < v.size(); j++) {
       assert(v[j] > v[j-1]);
       if ((size_t)(v[j] - v[j-1]) < size * 2) {

Modified: compiler-rt/trunk/lib/fuzzer/FuzzerCorpus.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/fuzzer/FuzzerCorpus.h?rev=327929&r1=327928&r2=327929&view=diff
==============================================================================
--- compiler-rt/trunk/lib/fuzzer/FuzzerCorpus.h (original)
+++ compiler-rt/trunk/lib/fuzzer/FuzzerCorpus.h Mon Mar 19 17:44:59 2018
@@ -83,7 +83,7 @@ class InputCorpus {
     II.NumFeatures = NumFeatures;
     II.MayDeleteFile = MayDeleteFile;
     II.UniqFeatureSet = FeatureSet;
-    std::sort(II.UniqFeatureSet.begin(), II.UniqFeatureSet.end());
+    llvm::sort(II.UniqFeatureSet.begin(), II.UniqFeatureSet.end());
     ComputeSHA1(U.data(), U.size(), II.Sha1);
     Hashes.insert(Sha1ToString(II.Sha1));
     UpdateCorpusDistribution();

Modified: compiler-rt/trunk/lib/fuzzer/FuzzerMerge.cpp
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/fuzzer/FuzzerMerge.cpp?rev=327929&r1=327928&r2=327929&view=diff
==============================================================================
--- compiler-rt/trunk/lib/fuzzer/FuzzerMerge.cpp (original)
+++ compiler-rt/trunk/lib/fuzzer/FuzzerMerge.cpp Mon Mar 19 17:44:59 2018
@@ -100,7 +100,7 @@ bool Merger::Parse(std::istream &IS, boo
         TmpFeatures.clear();  // use a vector from outer scope to avoid resizes.
         while (ISS1 >> std::hex >> N)
           TmpFeatures.push_back(N);
-        std::sort(TmpFeatures.begin(), TmpFeatures.end());
+        llvm::sort(TmpFeatures.begin(), TmpFeatures.end());
         Files[CurrentFileIdx].Features = TmpFeatures;
       }
     } else {
@@ -148,12 +148,12 @@ size_t Merger::Merge(const Set<uint32_t>
   // Sort. Give preference to
   //   * smaller files
   //   * files with more features.
-  std::sort(Files.begin() + NumFilesInFirstCorpus, Files.end(),
-            [&](const MergeFileInfo &a, const MergeFileInfo &b) -> bool {
-              if (a.Size != b.Size)
-                return a.Size < b.Size;
-              return a.Features.size() > b.Features.size();
-            });
+  llvm::sort(Files.begin() + NumFilesInFirstCorpus, Files.end(),
+             [&](const MergeFileInfo &a, const MergeFileInfo &b) -> bool {
+               if (a.Size != b.Size)
+                 return a.Size < b.Size;
+               return a.Features.size() > b.Features.size();
+             });
 
   // One greedy pass: add the file's features to AllFeatures.
   // If new features were added, add this file to NewFiles.
@@ -321,10 +321,10 @@ void Fuzzer::CrashResistantMerge(const V
     Vector<SizedFile> AllFiles;
     GetSizedFilesFromDir(Corpora[0], &AllFiles);
     size_t NumFilesInFirstCorpus = AllFiles.size();
-    std::sort(AllFiles.begin(), AllFiles.end());
+    llvm::sort(AllFiles.begin(), AllFiles.end());
     for (size_t i = 1; i < Corpora.size(); i++)
       GetSizedFilesFromDir(Corpora[i], &AllFiles);
-    std::sort(AllFiles.begin() + NumFilesInFirstCorpus, AllFiles.end());
+    llvm::sort(AllFiles.begin() + NumFilesInFirstCorpus, AllFiles.end());
     Printf("MERGE-OUTER: %zd files, %zd in the initial corpus\n",
            AllFiles.size(), NumFilesInFirstCorpus);
     WriteNewControlFile(CFPath, AllFiles, NumFilesInFirstCorpus);

Modified: compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_common_test.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_common_test.cc?rev=327929&r1=327928&r2=327929&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_common_test.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_common_test.cc Mon Mar 19 17:44:59 2018
@@ -209,7 +209,7 @@ TEST(SanitizerCommon, InternalLowerBound
       data[j] = create_item(i, j);
     }
 
-    std::sort(data.begin(), data.end());
+    llvm::sort(data.begin(), data.end());
 
     for (size_t j = 0; j < i; ++j) {
       int val = create_item(i, j);

Modified: compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_linux_test.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_linux_test.cc?rev=327929&r1=327928&r2=327929&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_linux_test.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_linux_test.cc Mon Mar 19 17:44:59 2018
@@ -131,8 +131,8 @@ static std::vector<pid_t> ReadTidsToVect
 }
 
 static bool Includes(std::vector<pid_t> first, std::vector<pid_t> second) {
-  std::sort(first.begin(), first.end());
-  std::sort(second.begin(), second.end());
+  llvm::sort(first.begin(), first.end());
+  llvm::sort(second.begin(), second.end());
   return std::includes(first.begin(), first.end(),
                        second.begin(), second.end());
 }




More information about the llvm-commits mailing list