about summary refs log tree commit diff
path: root/src/afl-cc.c
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2021-04-16 13:53:08 +0200
committerGitHub <noreply@github.com>2021-04-16 13:53:08 +0200
commit400ab10cfdfdb25235bf0483bc0fa0332ae11461 (patch)
treec5f5c705b502109917f722ed79549e281f5a02c3 /src/afl-cc.c
parent98989f1088d04dd4c0d21834c38b7683f1cfb42d (diff)
parent5dad04867461e93cefd1ecee6d336fa4d9ef632d (diff)
downloadafl++-400ab10cfdfdb25235bf0483bc0fa0332ae11461.tar.gz
Merge branch 'dev' into dev
Diffstat (limited to 'src/afl-cc.c')
-rw-r--r--src/afl-cc.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/afl-cc.c b/src/afl-cc.c
index b354077e..1f89bac5 100644
--- a/src/afl-cc.c
+++ b/src/afl-cc.c
@@ -430,9 +430,6 @@ static void edit_params(u32 argc, char **argv, char **envp) {
 
     cc_params[cc_par_cnt++] = "-Wno-unused-command-line-argument";
 
-    if (lto_mode && plusplus_mode)
-      cc_params[cc_par_cnt++] = "-lc++";  // needed by fuzzbench, early
-
     if (lto_mode && have_instr_env) {
 
       cc_params[cc_par_cnt++] = "-Xclang";
@@ -819,6 +816,14 @@ static void edit_params(u32 argc, char **argv, char **envp) {
 
   }
 
+  if (getenv("AFL_USE_LSAN")) {
+
+    cc_params[cc_par_cnt++] = "-fsanitize=leak";
+    cc_params[cc_par_cnt++] = "-includesanitizer/lsan_interface.h";
+    cc_params[cc_par_cnt++] = "-D__AFL_LEAK_CHECK()=__lsan_do_leak_check()";
+
+  }
+
   if (getenv("AFL_USE_CFISAN")) {
 
     if (!lto_mode) {
@@ -1730,7 +1735,8 @@ int main(int argc, char **argv, char **envp) {
           "  AFL_USE_ASAN: activate address sanitizer\n"
           "  AFL_USE_CFISAN: activate control flow sanitizer\n"
           "  AFL_USE_MSAN: activate memory sanitizer\n"
-          "  AFL_USE_UBSAN: activate undefined behaviour sanitizer\n");
+          "  AFL_USE_UBSAN: activate undefined behaviour sanitizer\n"
+          "  AFL_USE_LSAN: activate leak-checker sanitizer\n");
 
       if (have_gcc_plugin)
         SAYF(