about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--instrumentation/SanitizerCoverageLTO.so.cc6
-rw-r--r--instrumentation/SanitizerCoveragePCGUARD.so.cc8
-rw-r--r--instrumentation/afl-llvm-lto-instrumentation.so.cc6
3 files changed, 18 insertions, 2 deletions
diff --git a/instrumentation/SanitizerCoverageLTO.so.cc b/instrumentation/SanitizerCoverageLTO.so.cc
index 6dd390e6..cd6b1939 100644
--- a/instrumentation/SanitizerCoverageLTO.so.cc
+++ b/instrumentation/SanitizerCoverageLTO.so.cc
@@ -1496,7 +1496,11 @@ void ModuleSanitizerCoverage::InjectCoverageAtBlock(Function &F, BasicBlock &BB,
     }
 
     /* Update bitmap */
+#if 1 /* Atomic */
+    IRB.CreateAtomicRMW(llvm::AtomicRMWInst::BinOp::Add, MapPtrIdx, One, 
+        llvm::AtomicOrdering::Monotonic);
 
+#else
     LoadInst *Counter = IRB.CreateLoad(MapPtrIdx);
     Counter->setMetadata(Mo->getMDKindID("nosanitize"), MDNode::get(*Ct, None));
 
@@ -1512,7 +1516,7 @@ void ModuleSanitizerCoverage::InjectCoverageAtBlock(Function &F, BasicBlock &BB,
 
     IRB.CreateStore(Incr, MapPtrIdx)
         ->setMetadata(Mo->getMDKindID("nosanitize"), MDNode::get(*Ct, None));
-
+#endif
     // done :)
 
     inst++;
diff --git a/instrumentation/SanitizerCoveragePCGUARD.so.cc b/instrumentation/SanitizerCoveragePCGUARD.so.cc
index 09cda9e2..dd2e1459 100644
--- a/instrumentation/SanitizerCoveragePCGUARD.so.cc
+++ b/instrumentation/SanitizerCoveragePCGUARD.so.cc
@@ -1080,6 +1080,12 @@ void ModuleSanitizerCoverage::InjectCoverageAtBlock(Function &F, BasicBlock &BB,
     /* Load counter for CurLoc */
 
     Value *   MapPtrIdx = IRB.CreateGEP(MapPtr, CurLoc);
+
+#if 1 /* Atomic */
+    IRB.CreateAtomicRMW(llvm::AtomicRMWInst::BinOp::Add, MapPtrIdx, One,
+        llvm::AtomicOrdering::Monotonic);
+
+#else
     LoadInst *Counter = IRB.CreateLoad(MapPtrIdx);
 
     /* Update bitmap */
@@ -1095,7 +1101,7 @@ void ModuleSanitizerCoverage::InjectCoverageAtBlock(Function &F, BasicBlock &BB,
     }
 
     IRB.CreateStore(Incr, MapPtrIdx);
-
+#endif
     // done :)
 
     //    IRB.CreateCall(SanCovTracePCGuard, Offset)->setCannotMerge();
diff --git a/instrumentation/afl-llvm-lto-instrumentation.so.cc b/instrumentation/afl-llvm-lto-instrumentation.so.cc
index f6cdbe9e..5ed13ff0 100644
--- a/instrumentation/afl-llvm-lto-instrumentation.so.cc
+++ b/instrumentation/afl-llvm-lto-instrumentation.so.cc
@@ -839,6 +839,11 @@ bool AFLLTOPass::runOnModule(Module &M) {
 
           /* Update bitmap */
 
+#if 1 /* Atomic */
+          IRB.CreateAtomicRMW(llvm::AtomicRMWInst::BinOp::Add, MapPtrIdx, One,
+              llvm::AtomicOrdering::Monotonic);
+
+#else
           LoadInst *Counter = IRB.CreateLoad(MapPtrIdx);
           Counter->setMetadata(M.getMDKindID("nosanitize"),
                                MDNode::get(C, None));
@@ -855,6 +860,7 @@ bool AFLLTOPass::runOnModule(Module &M) {
 
           IRB.CreateStore(Incr, MapPtrIdx)
               ->setMetadata(M.getMDKindID("nosanitize"), MDNode::get(C, None));
+#endif
 
           // done :)