[compiler-rt] 04926e6 - Revert "[msan] Check qsort input."

Evgenii Stepanov via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 26 12:30:44 PST 2019


Author: Evgenii Stepanov
Date: 2019-12-26T12:29:48-08:00
New Revision: 04926e67fda210c9709da4f8672ac0b5147ebb90

URL: https://github.com/llvm/llvm-project/commit/04926e67fda210c9709da4f8672ac0b5147ebb90
DIFF: https://github.com/llvm/llvm-project/commit/04926e67fda210c9709da4f8672ac0b5147ebb90.diff

LOG: Revert "[msan] Check qsort input."

This change breaks LLVM bootstrap with ASan and MSan.

FAILED: lib/ToolDrivers/llvm-lib/Options.inc
OptParser.td:137:1: error: Option is equivalent to
def INPUT : Option<[], "<input>", KIND_INPUT>;
^
OptParser.td:137:1: error: Other defined here
def INPUT : Option<[], "<input>", KIND_INPUT>;

This reverts commit caa48a6b88aeed8ae80e6ddb1eae8c6a7cbe260b.

Added: 
    

Modified: 
    compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
    compiler-rt/test/msan/qsort.cpp

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
index 68a9db5bba7b..2d9636a9c879 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
@@ -9665,15 +9665,6 @@ INTERCEPTOR(void, qsort, void *base, SIZE_T nmemb, SIZE_T size,
             qsort_compar_f compar) {
   void *ctx;
   COMMON_INTERCEPTOR_ENTER(ctx, qsort, base, nmemb, size, compar);
-  // Run the comparator over all array elements to detect any memory issues.
-  for (SIZE_T i = 0; i < nmemb; ++i) {
-    void *p = (void *)((char *)base + i * size);
-    COMMON_INTERCEPTOR_UNPOISON_PARAM(2);
-    // Compare each element with itself to trigger an equality check, which
-    // typically requires the comparator to look as many of the object fields as
-    // possible.
-    compar(p, p);
-  }
   qsort_compar_f old_compar = qsort_compar;
   qsort_compar = compar;
   SIZE_T old_size = qsort_size;
@@ -9703,15 +9694,6 @@ INTERCEPTOR(void, qsort_r, void *base, SIZE_T nmemb, SIZE_T size,
             qsort_r_compar_f compar, void *arg) {
   void *ctx;
   COMMON_INTERCEPTOR_ENTER(ctx, qsort_r, base, nmemb, size, compar, arg);
-  // Run the comparator over all array elements to detect any memory issues.
-  for (SIZE_T i = 0; i < nmemb; ++i) {
-    void *p = (void *)((char *)base + i * size);
-    COMMON_INTERCEPTOR_UNPOISON_PARAM(3);
-    // Compare each element with itself to trigger an equality check, which
-    // typically requires the comparator to look as many of the object fields as
-    // possible.
-    compar(p, p, arg);
-  }
   qsort_r_compar_f old_compar = qsort_r_compar;
   qsort_r_compar = compar;
   SIZE_T old_size = qsort_r_size;

diff  --git a/compiler-rt/test/msan/qsort.cpp b/compiler-rt/test/msan/qsort.cpp
index cf754012b228..eb8697011867 100644
--- a/compiler-rt/test/msan/qsort.cpp
+++ b/compiler-rt/test/msan/qsort.cpp
@@ -1,5 +1,4 @@
 // RUN: %clangxx_msan -O0 -g %s -o %t && %run %t
-// RUN: %clangxx_msan -DPOISON -O0 -g %s -o %t && not %run %t 2>&1 | FileCheck %s
 
 #include <assert.h>
 #include <errno.h>
@@ -66,10 +65,6 @@ int main(int argc, char *argv[]) {
   for (int i = 0; i < kSize1; ++i)
     p[i] = i * 2 + (i % 3 - 1) * 3;
   poison_stack_and_param();
-#ifdef POISON
-  __msan_poison(p + 1, sizeof(long));
-  // CHECK: Uninitialized bytes in __msan_check_mem_is_initialized at offset 0 inside [{{.*}}, 8)
-#endif
   qsort(p, kSize1, sizeof(long), compar1);
   __msan_check_mem_is_initialized(p, sizeof(long) * kSize1);
   assert(seen2);


        


More information about the llvm-commits mailing list