[llvm] r282467 - [sanitizer-coverage] fix a bug in trace-gep

Kostya Serebryany via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 26 18:55:09 PDT 2016


Author: kcc
Date: Mon Sep 26 20:55:08 2016
New Revision: 282467

URL: http://llvm.org/viewvc/llvm-project?rev=282467&view=rev
Log:
[sanitizer-coverage] fix a bug in trace-gep

Modified:
    llvm/trunk/lib/Fuzzer/fuzzer-test-suite/openssl-1.0.1f/build.sh
    llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
    llvm/trunk/test/Instrumentation/SanitizerCoverage/gep-tracing.ll

Modified: llvm/trunk/lib/Fuzzer/fuzzer-test-suite/openssl-1.0.1f/build.sh
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/fuzzer-test-suite/openssl-1.0.1f/build.sh?rev=282467&r1=282466&r2=282467&view=diff
==============================================================================
--- llvm/trunk/lib/Fuzzer/fuzzer-test-suite/openssl-1.0.1f/build.sh (original)
+++ llvm/trunk/lib/Fuzzer/fuzzer-test-suite/openssl-1.0.1f/build.sh Mon Sep 26 20:55:08 2016
@@ -7,7 +7,7 @@ LIBFUZZER_SRC=$(dirname $(dirname $SCRIP
 JOBS=20
 
 # FUZZ_CXXFLAGS=" -g -fsanitize=address -fsanitize-coverage=edge"
-FUZZ_CXXFLAGS=" -g -fsanitize=address -fsanitize-coverage=trace-pc-guard,trace-cmp,trace-div"
+FUZZ_CXXFLAGS=" -g -fsanitize=address -fsanitize-coverage=trace-pc-guard,trace-cmp,trace-div,trace-gep"
 
 get() {
   [ ! -e SRC ] && git clone https://github.com/openssl/openssl.git SRC && (cd SRC && git checkout OpenSSL_1_0_1f)

Modified: llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp?rev=282467&r1=282466&r2=282467&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp (original)
+++ llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp Mon Sep 26 20:55:08 2016
@@ -599,7 +599,7 @@ void SanitizerCoverageModule::InjectTrac
   for (auto GEP : GepTraceTargets) {
     IRBuilder<> IRB(GEP);
     for (auto I = GEP->idx_begin(); I != GEP->idx_end(); ++I)
-      if (!isa<ConstantInt>(*I))
+      if (!isa<ConstantInt>(*I) && (*I)->getType()->isIntegerTy())
         IRB.CreateCall(SanCovTraceGepFunction,
                        {IRB.CreateIntCast(*I, IntptrTy, true)});
   }

Modified: llvm/trunk/test/Instrumentation/SanitizerCoverage/gep-tracing.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/gep-tracing.ll?rev=282467&r1=282466&r2=282467&view=diff
==============================================================================
--- llvm/trunk/test/Instrumentation/SanitizerCoverage/gep-tracing.ll (original)
+++ llvm/trunk/test/Instrumentation/SanitizerCoverage/gep-tracing.ll Mon Sep 26 20:55:08 2016
@@ -30,3 +30,11 @@ entry:
 ; CHECK: call void @__sanitizer_cov_trace_gep(i64 %idxprom1)
 ; CHECK: call void @__sanitizer_cov_trace_gep(i64 %idxprom)
 ; CHECK: ret void
+
+; Just make sure we don't insturment this one and don't crash
+define void @gep_3(<2 x i8*> %a, i32 %i, i32 %j) {
+entry:
+  %0 = getelementptr i8, <2 x i8*> %a, <2 x i64> <i64 8, i64 8>
+  ret void
+}
+




More information about the llvm-commits mailing list