aboutsummaryrefslogtreecommitdiff
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());