fix output for LTOinstrim
diff --git a/llvm_mode/afl-llvm-lto-instrim.so.cc b/llvm_mode/afl-llvm-lto-instrim.so.cc
index 5f9731c..4b89c9d 100644
--- a/llvm_mode/afl-llvm-lto-instrim.so.cc
+++ b/llvm_mode/afl-llvm-lto-instrim.so.cc
@@ -110,8 +110,9 @@
bool runOnModule(Module &M) override {
- char be_quiet = 0;
- char *ptr;
+ char be_quiet = 0;
+ char * ptr;
+ uint32_t locations = 0, functions = 0;
setvbuf(stdout, NULL, _IONBF, 0);
@@ -563,6 +564,8 @@
if (F.size() < function_minimum_size) continue;
if (isBlacklisted(&F)) continue;
+ functions++;
+
// whitelist check
AttributeList Attrs = F.getAttributes();
if (Attrs.hasAttribute(-1, StringRef("skipinstrument"))) {
@@ -659,6 +662,7 @@
if (PI == PE) {
L = ConstantInt::get(Int32Ty, afl_global_id++);
+ locations++;
} else {
@@ -670,6 +674,7 @@
auto It = PredMap.insert({PBB, afl_global_id++});
unsigned Label = It.first->second;
PN->addIncoming(ConstantInt::get(Int32Ty, Label), PBB);
+ locations++;
}
@@ -887,7 +892,7 @@
for (BasicBlock *Succ : successors(Pred))
if (Succ != NULL) count++;
- if (count > 1) return true;
+ if (count > 1) would_instrument = true;
}
@@ -912,11 +917,12 @@
getenv("AFL_USE_MSAN") ? ", MSAN" : "",
getenv("AFL_USE_CFISAN") ? ", CFISAN" : "",
getenv("AFL_USE_UBSAN") ? ", UBSAN" : "");
- OKF("Instrumented %u locations (%llu, %llu) with no collisions (on "
+ OKF("Instrumented %u locations for %u edges in %u functions (%llu, "
+ "%llu) with no collisions (on "
"average %llu collisions would be in afl-gcc/afl-clang-fast for %u "
"edges) (%s mode).",
- inst_blocks, total_rs, total_hs, calculateCollisions(edges), edges,
- modeline);
+ inst_blocks, locations, functions, total_rs, total_hs,
+ calculateCollisions(edges), edges, modeline);
}
diff --git a/src/afl-sharedmem.c b/src/afl-sharedmem.c
index 77767f2..6eb6394 100644
--- a/src/afl-sharedmem.c
+++ b/src/afl-sharedmem.c
@@ -240,8 +240,10 @@
IPC_CREAT | IPC_EXCL | 0600);
if (shm->cmplog_shm_id < 0) {
- shmctl(shm->shm_id, IPC_RMID, NULL); // do not leak shmem
+
+ shmctl(shm->shm_id, IPC_RMID, NULL); // do not leak shmem
PFATAL("shmget() failed");
+
}
}
@@ -270,11 +272,16 @@
shm->map = shmat(shm->shm_id, NULL, 0);
if (shm->map == (void *)-1 || !shm->map) {
- shmctl(shm->shm_id, IPC_RMID, NULL); // do not leak shmem
+
+ shmctl(shm->shm_id, IPC_RMID, NULL); // do not leak shmem
if (shm->cmplog_mode) {
- shmctl(shm->cmplog_shm_id, IPC_RMID, NULL); // do not leak shmem
+
+ shmctl(shm->cmplog_shm_id, IPC_RMID, NULL); // do not leak shmem
+
}
+
PFATAL("shmat() failed");
+
}
if (shm->cmplog_mode) {
@@ -283,10 +290,13 @@
if (shm->cmp_map == (void *)-1 || !shm->cmp_map) {
- shmctl(shm->shm_id, IPC_RMID, NULL); // do not leak shmem
+ shmctl(shm->shm_id, IPC_RMID, NULL); // do not leak shmem
if (shm->cmplog_mode) {
- shmctl(shm->cmplog_shm_id, IPC_RMID, NULL); // do not leak shmem
+
+ shmctl(shm->cmplog_shm_id, IPC_RMID, NULL); // do not leak shmem
+
}
+
PFATAL("shmat() failed");
}