aboutsummaryrefslogtreecommitdiff
path: root/instrumentation
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2023-04-26 16:33:42 +0200
committerGitHub <noreply@github.com>2023-04-26 16:33:42 +0200
commit7ca1b85c5e8229fa49620d0fb542c86965ef5abb (patch)
tree49357cab6a9fea70f30f43b129b02434772f5e66 /instrumentation
parentdbb317162415a28e3fd2ff4c574292c924493a00 (diff)
parentb18bc7b98fa23ef805ed2ee3eec04dc1929afd49 (diff)
downloadafl++-7ca1b85c5e8229fa49620d0fb542c86965ef5abb.tar.gz
Merge pull request #1715 from AFLplusplus/dev
push to stable
Diffstat (limited to 'instrumentation')
-rw-r--r--instrumentation/SanitizerCoverageLTO.so.cc3
-rw-r--r--instrumentation/afl-compiler-rt.o.c16
2 files changed, 15 insertions, 4 deletions
diff --git a/instrumentation/SanitizerCoverageLTO.so.cc b/instrumentation/SanitizerCoverageLTO.so.cc
index e41f19b6..42583f9e 100644
--- a/instrumentation/SanitizerCoverageLTO.so.cc
+++ b/instrumentation/SanitizerCoverageLTO.so.cc
@@ -1005,7 +1005,8 @@ bool ModuleSanitizerCoverageLTO::instrumentModule(
// afl++ START
if (dFile.is_open()) dFile.close();
- if (!getenv("AFL_LLVM_LTO_DONTWRITEID") || dictionary.size() || map_addr) {
+ if (!getenv("AFL_LLVM_LTO_SKIPINIT") &&
+ (!getenv("AFL_LLVM_LTO_DONTWRITEID") || dictionary.size() || map_addr)) {
// yes we could create our own function, insert it into ctors ...
// but this would be a pain in the butt ... so we use afl-llvm-rt-lto.o
diff --git a/instrumentation/afl-compiler-rt.o.c b/instrumentation/afl-compiler-rt.o.c
index e0e40983..0912e52b 100644
--- a/instrumentation/afl-compiler-rt.o.c
+++ b/instrumentation/afl-compiler-rt.o.c
@@ -1563,17 +1563,27 @@ void __sanitizer_cov_trace_pc_guard_init(uint32_t *start, uint32_t *stop) {
"[-] FATAL: forkserver is already up, but an instrumented dlopen() "
"library loaded afterwards. You must AFL_PRELOAD such libraries to "
"be able to fuzz them or LD_PRELOAD to run outside of afl-fuzz.\n"
- "To ignore this set AFL_IGNORE_PROBLEMS=1 but this will be bad for "
- "coverage.\n");
+ "To ignore this set AFL_IGNORE_PROBLEMS=1 but this will lead to "
+ "ambiguous coverage data.\n"
+ "In addition, you can set AFL_IGNORE_PROBLEMS_COVERAGE=1 to "
+ "ignore the additional coverage instead (use with caution!).\n");
abort();
} else {
+ u8 ignore_dso_after_fs = !!getenv("AFL_IGNORE_PROBLEMS_COVERAGE");
+ if (__afl_debug && ignore_dso_after_fs) {
+
+ fprintf(stderr, "Ignoring coverage from dynamically loaded code\n");
+
+ }
+
static u32 offset = 5;
while (start < stop) {
- if (likely(inst_ratio == 100) || R(100) < inst_ratio) {
+ if (!ignore_dso_after_fs &&
+ (likely(inst_ratio == 100) || R(100) < inst_ratio)) {
*(start++) = offset;