]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
build-system: turn off lto=thin when building the fuzzers 3802/head
authorEvgeny Vereshchagin <evvers@ya.ru>
Tue, 27 Apr 2021 00:03:39 +0000 (00:03 +0000)
committerEvgeny Vereshchagin <evvers@ya.ru>
Tue, 27 Apr 2021 00:34:22 +0000 (00:34 +0000)
With lto=thin the fuzzers fail as soon as they start with
```
ERROR: The size of coverage PC tables does not match the
number of instrumented PCs. This might be a compiler bug,
please contact the libFuzzer developers.
Also check https://bugs.llvm.org/show_bug.cgi?id=34636
for possible workarounds (tl;dr: don't use the old GNU ld)
```

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
configure.ac
src/tests/oss-fuzz.sh

index 094fe146b09974c402eee3b0057f471311d7229f..1fe05a63aceec77f7cc7cca9e9cd10b581e65dfa 100644 (file)
@@ -484,12 +484,16 @@ else
        AC_MSG_RESULT([no])
 fi
 
-if test "x$enable_fuzzers" = "xyes" -a "x$LIB_FUZZING_ENGINE" = x; then
-       CC_CHECK_FLAGS_APPEND([AM_CFLAGS],[CFLAGS],[ \
-               -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION \
-               -fsanitize=fuzzer-no-link])
-       AC_SUBST(AM_CFLAGS)
+if test "x$enable_fuzzers" = "xyes"; then
+       if test "x$LIB_FUZZING_ENGINE" = x; then
+               CC_CHECK_FLAGS_APPEND([AM_CFLAGS],[CFLAGS],[ \
+                       -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION \
+                       -fsanitize=fuzzer-no-link])
+       fi
+else
+       CC_CHECK_FLAGS_APPEND([AM_CFLAGS],[CFLAGS],[-flto=thin])
 fi
+AC_SUBST(AM_CFLAGS)
 
 # Optional test binaries
 AC_ARG_ENABLE([tests],
@@ -815,7 +819,6 @@ CC_CHECK_FLAGS_APPEND([AM_CFLAGS],[CFLAGS],[ \
        -Warray-bounds \
        -Wrestrict \
        -Wreturn-local-addr \
-       -flto=thin \
        -fsanitize=cfi \
        -Wstringop-overflow])
 AC_SUBST(AM_CFLAGS)
index 27af5b1aeb0b84dc9965c756bcba89f934cf5188..db91f9230a45dd1e1a874271dcefc193cd336205 100755 (executable)
@@ -24,9 +24,6 @@ mkdir -p $OUT
 
 export LIB_FUZZING_ENGINE=${LIB_FUZZING_ENGINE:--fsanitize=fuzzer}
 
-# AFL++ and hoggfuzz are both incompatible with lto=thin apparently
-sed -i '/-flto=thin/d' configure.ac
-
 # turn off the libutil dependency
 sed -i 's/^AC_CHECK_LIB(util/#/' configure.ac