[vlc-devel] [PATCH 1/2] configure: Update libfuzzer coverage flags

Tanguy Dubroca tanguy.dubroca at lse.epita.fr
Sun Feb 7 16:04:35 UTC 2021


libfuzzer is bundled with clang, linking with an external libfuzzer
can cause issues. Additionaly, -fsanitize=fuzzer already enables
coverage instrumentation. Specific coverage options can be removed.
---
 configure.ac     | 26 ++++++++------------------
 test/Makefile.am |  2 ++
 2 files changed, 10 insertions(+), 18 deletions(-)

diff --git a/configure.ac b/configure.ac
index d57114af22..9a4e44d7aa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -907,9 +907,9 @@ AS_IF([test "${SYS}" = "mingw32"], [
   have_dynamic_objects="yes" #assume we can use shared objects
 ])
 
-AC_ARG_WITH([libfuzzer],
-    AS_HELP_STRING([--with-libfuzzer=DIR],
-        [use libFuzzer library from DIR and triggers sanitize coverage (default disabled)]),
+AC_ARG_ENABLE([libfuzzer],
+    AS_HELP_STRING([--enable-libfuzzer],
+        [compiles the libfuzzer harnesses and triggers sanitizer coverage (default disabled)]),
      [],
      [with_libfuzzer=no])
 AS_VAR_IF(with_libfuzzer, no, [], [
@@ -4564,22 +4564,12 @@ dnl Fuzzer (at the end not to mess dependencies FLAGS)
 dnl
 AS_VAR_IF(with_libfuzzer, no, [], [
     LIBS="-lstdc++ ${LIBM}"
-    AS_IF([test "${with_libfuzzer}" != "yes"], [
-      LIBS="$LIBS -L${with_libfuzzer}"
-    ])
-    LIBS="$LIBS -lFuzzer"
-    AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc-guard, [
-        AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard])
-        AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard], [CXXFLAGS])
-        AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp])
-        AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp], [CXXFLAGS])
+
+    AX_CHECK_COMPILE_FLAG(-fsanitize=fuzzer-no-link, [
+        AX_APPEND_FLAG([-fsanitize=fuzzer-no-link])
+        AX_APPEND_FLAG([-fsanitize=fuzzer-no-link], [CXXFLAGS])
     ], [
-        AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc, [
-            AX_APPEND_FLAG([-fsanitize-coverage=trace-pc])
-            AX_APPEND_FLAG([-fsanitize-coverage=trace-pc], [CXXFLAGS])
-        ], [
-            AC_MSG_ERROR([Sanitizer coverage not supported by your compiler])
-        ])
+        AC_MSG_ERROR([libfuzzer instrumentation not supported by your compiler])
     ])
 ])
 
diff --git a/test/Makefile.am b/test/Makefile.am
index 54666fdc85..dcc07b6c8e 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -286,7 +286,9 @@ vlc_demux_dec_run_LDADD = libvlc_demux_dec_run.la
 EXTRA_PROGRAMS += vlc-demux-run vlc-demux-dec-run
 
 vlc_demux_libfuzzer_LDADD = libvlc_demux_run.la
+vlc_demux_libfuzzer_LDFLAGS = -fsanitize=fuzzer
 vlc_demux_dec_libfuzzer_SOURCES = vlc-demux-libfuzzer.c
+vlc_demux_dec_libfuzzer_LDFLAGS = -fsanitize=fuzzer
 vlc_demux_dec_libfuzzer_LDADD = libvlc_demux_dec_run.la
 if HAVE_LIBFUZZER
 noinst_PROGRAMS += vlc-demux-libfuzzer vlc-demux-dec-libfuzzer vlc-demux-run vlc-demux-dec-run
-- 
2.30.0



More information about the vlc-devel mailing list