diff --git a/configure.ac b/configure.ac index b6ca0617bc21077ccb0f526088e2469bb0cf5691..1653c67867f0df9c9486d3342f30492ca06e98f1 100644 --- a/configure.ac +++ b/configure.ac @@ -786,6 +786,17 @@ 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)])], + [], + [with_libfuzzer=no]) +AS_VAR_IF(with_libfuzzer, no, [], [ + enable_shared=no + enable_static=yes + enable_vlc=no +]) + AS_IF([test "${enable_shared}" = "no"], [ have_dynamic_objects=no ]) @@ -4193,6 +4204,26 @@ AC_ARG_ENABLE(vlc, [ --enable-vlc build the VLC media player (default enabled)]) AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"]) +dnl +dnl Fuzzer (at the end in order to don't mess dependencies FLAGS) +dnl +AS_VAR_IF(with_libfuzzer, no, [], [ + LIBS="-lstdc++ ${LIBM} ${LIBPTHREAD} -L${with_libfuzzer} -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-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]) + ]) + ]) +]) + dnl dnl Stuff used by the program dnl diff --git a/test/Makefile.am b/test/Makefile.am index c61f81192691d5753de14a4440cc06ee00575d4b..1d2f30a3b73afd6cff73cb8c4af85479332d00fb 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -204,5 +204,5 @@ vlc_demux_run_LDADD = libvlc_demux_run.la EXTRA_PROGRAMS += vlc-demux-run vlc_demux_libfuzzer_CPPFLAGS = $(vlc_static_CPPFLAGS) -vlc_demux_libfuzzer_LDADD = -lFuzzer libvlc_demux_run.la +vlc_demux_libfuzzer_LDADD = libvlc_demux_run.la EXTRA_PROGRAMS += vlc-demux-libfuzzer