about summary refs log tree commit diff
diff options
context:
space:
mode:
authorvanhauser-thc <vh@thc.org>2024-01-26 16:44:31 +0100
committervanhauser-thc <vh@thc.org>2024-01-26 16:44:31 +0100
commitd668010bedf5373e25ea12c24dbb477f54da91ba (patch)
tree7d6d4788a02f97e0f20f28d6e5d15a3e4a557813
parent44a7696169f52f6ef8b5c9a5a6de1167000e2138 (diff)
downloadafl++-d668010bedf5373e25ea12c24dbb477f54da91ba.tar.gz
fixes
-rw-r--r--instrumentation/SanitizerCoverageLTO.so.cc14
1 files changed, 13 insertions, 1 deletions
diff --git a/instrumentation/SanitizerCoverageLTO.so.cc b/instrumentation/SanitizerCoverageLTO.so.cc
index b280e947..a3074ae2 100644
--- a/instrumentation/SanitizerCoverageLTO.so.cc
+++ b/instrumentation/SanitizerCoverageLTO.so.cc
@@ -249,7 +249,7 @@ class ModuleSanitizerCoverageLTO
   uint32_t                         afl_global_id = 0;
   uint32_t                         unhandled = 0;
   uint32_t                         select_cnt = 0;
-  uint32_t                         instrument_ctx = 0;
+  uint32_t                         instrument_ctx = 1;
   uint32_t                         extra_ctx_inst = 0;
   uint64_t                         map_addr = 0;
   const char                      *skip_nozero = NULL;
@@ -1481,6 +1481,18 @@ void ModuleSanitizerCoverageLTO::instrumentFunction(
   IsLeafFunc = true;
   skip_next = 0;
 
+  if (CTX_add == NULL) {
+
+      auto BB = &F.getEntryBlock();
+      fprintf(stderr, "NULL %s %p\n", F.getName().str().c_str(), BB);
+      if (!BB) { exit(-1); }
+      BasicBlock::iterator IP = BB->getFirstInsertionPt();
+      IRBuilder<>          IRB(&(*IP));
+      CTX_add = IRB.CreateAlloca(Type::getInt32Ty(Context), nullptr, "CTX_add");
+      auto nosan = IRB.CreateStore(Zero, CTX_add);
+      nosan->setMetadata("nosanitize", N);
+  }
+
   for (auto &BB : F) {
 
     // fprintf(stderr, "BB: %s\n", BB.getName().str().c_str());