fuzz: add configure flag --enable-fuzzing

Signed-off-by: Alexander Bulekov <alxndr@bu.edu>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Darren Kenny <darren.kenny@oracle.com>
Message-id: 20200220041118.23264-19-alxndr@bu.edu
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Alexander Bulekov 2020-02-19 23:11:14 -05:00 committed by Stefan Hajnoczi
parent c621dc3e01
commit adc28027ff

39
configure vendored
View File

@ -505,6 +505,7 @@ debug_mutex="no"
libpmem="" libpmem=""
default_devices="yes" default_devices="yes"
plugins="no" plugins="no"
fuzzing="no"
supported_cpu="no" supported_cpu="no"
supported_os="no" supported_os="no"
@ -635,6 +636,15 @@ int main(void) { return 0; }
EOF EOF
} }
write_c_fuzzer_skeleton() {
cat > $TMPC <<EOF
#include <stdint.h>
#include <sys/types.h>
int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size);
int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { return 0; }
EOF
}
if check_define __linux__ ; then if check_define __linux__ ; then
targetos="Linux" targetos="Linux"
elif check_define _WIN32 ; then elif check_define _WIN32 ; then
@ -1558,6 +1568,10 @@ for opt do
;; ;;
--disable-containers) use_containers="no" --disable-containers) use_containers="no"
;; ;;
--enable-fuzzing) fuzzing=yes
;;
--disable-fuzzing) fuzzing=no
;;
*) *)
echo "ERROR: unknown option $opt" echo "ERROR: unknown option $opt"
echo "Try '$0 --help' for more information" echo "Try '$0 --help' for more information"
@ -6072,6 +6086,15 @@ EOF
fi fi
fi fi
##########################################
# checks for fuzzer
if test "$fuzzing" = "yes" ; then
write_c_fuzzer_skeleton
if compile_prog "$CPU_CFLAGS -Werror -fsanitize=address,fuzzer" ""; then
have_fuzzer=yes
fi
fi
########################################## ##########################################
# check for libpmem # check for libpmem
@ -6666,6 +6689,7 @@ echo "libpmem support $libpmem"
echo "libudev $libudev" echo "libudev $libudev"
echo "default devices $default_devices" echo "default devices $default_devices"
echo "plugin support $plugins" echo "plugin support $plugins"
echo "fuzzing support $fuzzing"
if test "$supported_cpu" = "no"; then if test "$supported_cpu" = "no"; then
echo echo
@ -7504,6 +7528,16 @@ fi
if test "$sheepdog" = "yes" ; then if test "$sheepdog" = "yes" ; then
echo "CONFIG_SHEEPDOG=y" >> $config_host_mak echo "CONFIG_SHEEPDOG=y" >> $config_host_mak
fi fi
if test "$fuzzing" = "yes" ; then
if test "$have_fuzzer" = "yes"; then
FUZZ_LDFLAGS=" -fsanitize=address,fuzzer"
FUZZ_CFLAGS=" -fsanitize=address,fuzzer"
CFLAGS=" -fsanitize=address,fuzzer-no-link"
else
error_exit "Your compiler doesn't support -fsanitize=address,fuzzer"
exit 1
fi
fi
if test "$plugins" = "yes" ; then if test "$plugins" = "yes" ; then
echo "CONFIG_PLUGIN=y" >> $config_host_mak echo "CONFIG_PLUGIN=y" >> $config_host_mak
@ -7605,6 +7639,11 @@ if test "$libudev" != "no"; then
echo "CONFIG_LIBUDEV=y" >> $config_host_mak echo "CONFIG_LIBUDEV=y" >> $config_host_mak
echo "LIBUDEV_LIBS=$libudev_libs" >> $config_host_mak echo "LIBUDEV_LIBS=$libudev_libs" >> $config_host_mak
fi fi
if test "$fuzzing" != "no"; then
echo "CONFIG_FUZZ=y" >> $config_host_mak
echo "FUZZ_CFLAGS=$FUZZ_CFLAGS" >> $config_host_mak
echo "FUZZ_LDFLAGS=$FUZZ_LDFLAGS" >> $config_host_mak
fi
if test "$edk2_blobs" = "yes" ; then if test "$edk2_blobs" = "yes" ; then
echo "DECOMPRESS_EDK2_BLOBS=y" >> $config_host_mak echo "DECOMPRESS_EDK2_BLOBS=y" >> $config_host_mak