Don't give the libFuzzer version of fuzzpuzz a special name

I've changed my mind already.  The other versions of fuzzpuzz all have
different command-line interfaces anyway, so I think the best approach
is to just accept that and decide that precisely how fuzzpuzz works
isn't a defined API.  Fuzzing is inherently not an end-user activity, so
I think it's acceptable to make it a bit inconsistent.

This means that in Clang builds you get the non-libFuzzer version of
fuzzpuzz by default (so you can use it with other fuzzers), but if you
turn on WITH_LIBFUZZER then you'll get the libFuzzer version instead.
This commit is contained in:
Ben Harris
2023-02-21 21:04:58 +00:00
parent 80de73a6aa
commit 015bd14474
2 changed files with 11 additions and 14 deletions

View File

@ -279,18 +279,15 @@ if(build_cli_programs)
write_generated_games_header() write_generated_games_header()
include(CheckFunctionExists) include(CheckFunctionExists)
check_function_exists(HF_ITER HAVE_HF_ITER) check_function_exists(HF_ITER HAVE_HF_ITER)
set(WITH_LIBFUZZER OFF
CACHE BOOL "Build fuzzpuzz using Clang's libFuzzer")
cliprogram(fuzzpuzz fuzzpuzz.c list.c ${puzzle_sources} cliprogram(fuzzpuzz fuzzpuzz.c list.c ${puzzle_sources}
COMPILE_DEFINITIONS COMBINED $<$<BOOL:${HAVE_HF_ITER}>:HAVE_HF_ITER>) COMPILE_DEFINITIONS COMBINED $<$<BOOL:${WITH_LIBFUZZER}>:OMIT_MAIN>
$<$<BOOL:${HAVE_HF_ITER}>:HAVE_HF_ITER>)
target_include_directories(fuzzpuzz PRIVATE ${generated_include_dir}) target_include_directories(fuzzpuzz PRIVATE ${generated_include_dir})
if(WITH_LIBFUZZER)
if(CMAKE_C_COMPILER_ID MATCHES "Clang") target_compile_options(fuzzpuzz PRIVATE -fsanitize=fuzzer)
cliprogram(fuzzpuzz-libfuzzer fuzzpuzz.c list.c ${puzzle_sources} set_target_properties(fuzzpuzz PROPERTIES LINK_FLAGS -fsanitize=fuzzer)
COMPILE_DEFINITIONS COMBINED OMIT_MAIN)
target_include_directories(fuzzpuzz-libfuzzer
PRIVATE ${generated_include_dir})
target_compile_options(fuzzpuzz-libfuzzer PRIVATE -fsanitize=fuzzer)
set_target_properties(fuzzpuzz-libfuzzer
PROPERTIES LINK_FLAGS -fsanitize=fuzzer)
endif() endif()
endif() endif()

View File

@ -27,11 +27,11 @@
* You can also use libFuzzer, though it's not really a good fit for * You can also use libFuzzer, though it's not really a good fit for
* Puzzles. The experimental forking mode seems to work OK: * Puzzles. The experimental forking mode seems to work OK:
* *
* CC=clang cmake -B build-clang * CC=clang cmake -B build-clang -DWITH_LIBFUZZER=Y
* cmake --build build-clang --target fuzzpuzz-libfuzzer * cmake --build build-clang --target fuzzpuzz
* mkdir fuzz-corpus && ln icons/''*.sav fuzz-corpus * mkdir fuzz-corpus && ln icons/''*.sav fuzz-corpus
* build-clang/fuzzpuzz-libfuzzer -fork=1 -ignore_crashes=1 \ * build-clang/fuzzpuzz -fork=1 -ignore_crashes=1 -dict=fuzzpuzz.dict \
* -dict=fuzzpuzz.dict fuzz-corpus * fuzz-corpus
*/ */
#include <stdbool.h> #include <stdbool.h>