With a vanilla build t/fuzz/parse_ini will segfault because the symbol
FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is not defined. If the symbol
FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is defined, fio won't tear down
shared memory on program termination. Not tearing down shared memory is
necessary for t/fuzz/parse_ini to work correctly.
Don't build t/fuzz/parse_ini unless CFLAGS contains
-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION.
Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
T_TT_OBJS = t/time-test.o
T_TT_PROGS = t/time-test
T_TT_OBJS = t/time-test.o
T_TT_PROGS = t/time-test
+ifneq (,$(findstring -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION,$(CFLAGS)))
T_FUZZ_OBJS = t/fuzz/fuzz_parseini.o
T_FUZZ_OBJS += $(OBJS)
ifdef CONFIG_ARITHMETIC
T_FUZZ_OBJS += lex.yy.o y.tab.o
endif
T_FUZZ_OBJS = t/fuzz/fuzz_parseini.o
T_FUZZ_OBJS += $(OBJS)
ifdef CONFIG_ARITHMETIC
T_FUZZ_OBJS += lex.yy.o y.tab.o
endif
+# For proper fio code teardown CFLAGS needs to include -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
# in case there is no fuzz driver defined by environment variable LIB_FUZZING_ENGINE, use a simple one
# For instance, with compiler clang, address sanitizer and libFuzzer as a fuzzing engine, you should define
# in case there is no fuzz driver defined by environment variable LIB_FUZZING_ENGINE, use a simple one
# For instance, with compiler clang, address sanitizer and libFuzzer as a fuzzing engine, you should define
-# export CFLAGS="-fsanitize=address,fuzzer-no-link"
+# export CFLAGS="-fsanitize=address,fuzzer-no-link -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION"
# export LIB_FUZZING_ENGINE="-fsanitize=address"
# export CC=clang
# before running configure && make
# export LIB_FUZZING_ENGINE="-fsanitize=address"
# export CC=clang
# before running configure && make
T_FUZZ_OBJS += t/fuzz/onefile.o
endif
T_FUZZ_PROGS = t/fuzz/fuzz_parseini
T_FUZZ_OBJS += t/fuzz/onefile.o
endif
T_FUZZ_PROGS = t/fuzz/fuzz_parseini
+else # CFLAGS includes -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
+T_FUZZ_OBJS =
+T_FUZZ_PROGS =
+endif
T_OBJS = $(T_SMALLOC_OBJS)
T_OBJS += $(T_IEEE_OBJS)
T_OBJS = $(T_SMALLOC_OBJS)
T_OBJS += $(T_IEEE_OBJS)