mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
Generate src/test/fuzz/include.am from a script
It was very error-prone to maintain this by hand.
This commit is contained in:
parent
45d008c4aa
commit
6657fe1e54
154
scripts/codegen/fuzzing_include_am.py
Executable file
154
scripts/codegen/fuzzing_include_am.py
Executable file
@ -0,0 +1,154 @@
|
||||
|
||||
|
||||
FUZZERS = """
|
||||
consensus
|
||||
descriptor
|
||||
diff
|
||||
diff-apply
|
||||
extrainfo
|
||||
hsdescv2
|
||||
http
|
||||
iptsv2
|
||||
microdesc
|
||||
vrs
|
||||
"""
|
||||
|
||||
|
||||
PREAMBLE = r"""
|
||||
FUZZING_CPPFLAGS = \
|
||||
$(src_test_AM_CPPFLAGS) $(TEST_CPPFLAGS)
|
||||
FUZZING_CFLAGS = \
|
||||
$(AM_CFLAGS) $(TEST_CFLAGS)
|
||||
FUZZING_LDFLAG = \
|
||||
@TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ @TOR_LDFLAGS_libevent@
|
||||
FUZZING_LIBS = \
|
||||
src/or/libtor-testing.a \
|
||||
src/common/libor-crypto-testing.a \
|
||||
$(LIBKECCAK_TINY) \
|
||||
$(LIBDONNA) \
|
||||
src/common/libor-testing.a \
|
||||
src/common/libor-ctime-testing.a \
|
||||
src/common/libor-event-testing.a \
|
||||
src/trunnel/libor-trunnel-testing.a \
|
||||
@TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ \
|
||||
@TOR_LIBEVENT_LIBS@ \
|
||||
@TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \
|
||||
@TOR_SYSTEMD_LIBS@
|
||||
|
||||
oss-fuzz-prereqs: \
|
||||
src/or/libtor-testing.a \
|
||||
src/common/libor-crypto-testing.a \
|
||||
$(LIBKECCAK_TINY) \
|
||||
$(LIBDONNA) \
|
||||
src/common/libor-testing.a \
|
||||
src/common/libor-ctime-testing.a \
|
||||
src/common/libor-event-testing.a \
|
||||
src/trunnel/libor-trunnel-testing.a
|
||||
|
||||
noinst_HEADERS += \
|
||||
src/test/fuzz/fuzzing.h
|
||||
|
||||
LIBFUZZER = /home/nickm/build/libfuzz/libFuzzer.a
|
||||
LIBFUZZER_CPPFLAGS = $(FUZZING_CPPFLAGS) -DLLVM_FUZZ
|
||||
LIBFUZZER_CFLAGS = $(FUZZING_CFLAGS)
|
||||
LIBFUZZER_LDFLAG = $(FUZZING_LDFLAG)
|
||||
LIBFUZZER_LIBS = $(FUZZING_LIBS) $(LIBFUZZER) -lstdc++
|
||||
|
||||
LIBOSS_FUZZ_CPPFLAGS = $(FUZZING_CPPFLAGS) -DLLVM_FUZZ
|
||||
LIBOSS_FUZZ_CFLAGS = $(FUZZING_CFLAGS)
|
||||
"""
|
||||
|
||||
POSTAMBLE = r"""
|
||||
noinst_PROGRAMS += $(FUZZERS) $(LIBFUZZER_FUZZERS)
|
||||
noinst_LIBRARIES += $(OSS_FUZZ_FUZZERS)
|
||||
oss-fuzz-fuzzers: oss-fuzz-prereqs $(OSS_FUZZ_FUZZERS)
|
||||
fuzzers: $(FUZZERS) $(LIBFUZZER_FUZZERS)
|
||||
|
||||
test-fuzz-corpora: $(FUZZERS)
|
||||
$(top_srcdir)/src/test/fuzz_static_testcases.sh
|
||||
"""
|
||||
|
||||
########### No user serviceable parts will follow.
|
||||
|
||||
PREAMBLE = PREAMBLE.strip()
|
||||
POSTAMBLE = POSTAMBLE.strip() # If I use it, it's a word!
|
||||
FUZZERS = FUZZERS.split()
|
||||
FUZZERS.sort()
|
||||
|
||||
WARNING = """
|
||||
# This file was generated by fuzzing_include_am.py; do not hand-edit unless
|
||||
# you enjoy having your changes erased.
|
||||
""".strip()
|
||||
|
||||
print(WARNING)
|
||||
|
||||
print(PREAMBLE)
|
||||
|
||||
print("\n# ===== AFL fuzzers")
|
||||
|
||||
def get_id_name(s):
|
||||
return s.replace("-", "_")
|
||||
|
||||
for fuzzer in FUZZERS:
|
||||
idname = get_id_name(fuzzer)
|
||||
print("""\
|
||||
src_test_fuzz_fuzz_{name}_SOURCES = \\
|
||||
src/test/fuzz/fuzzing_common.c \\
|
||||
src/test/fuzz/fuzz_{name}.c
|
||||
src_test_fuzz_fuzz_{name}_CPPFLAGS = $(FUZZING_CPPFLAGS)
|
||||
src_test_fuzz_fuzz_{name}_CFLAGS = $(FUZZING_CFLAGS)
|
||||
src_test_fuzz_fuzz_{name}_LDFLAGS = $(FUZZING_LDFLAG)
|
||||
src_test_fuzz_fuzz_{name}_LDADD = $(FUZZING_LIBS)
|
||||
""".format(name=idname))
|
||||
|
||||
print("FUZZERS = \\")
|
||||
print(" \\\n".join("\tsrc/test/fuzz/fuzz-{name}".format(name=fuzzer)
|
||||
for fuzzer in FUZZERS))
|
||||
|
||||
print("\n# ===== libfuzzer")
|
||||
print("\nif LIBFUZZER_ENABLED")
|
||||
|
||||
for fuzzer in FUZZERS:
|
||||
idname = get_id_name(fuzzer)
|
||||
print("""\
|
||||
src_test_fuzz_lf_fuzz_{name}_SOURCES = \\
|
||||
$(src_test_fuzz_fuzz_{name}_SOURCES)
|
||||
src_test_fuzz_lf_fuzz_{name}_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
|
||||
src_test_fuzz_lf_fuzz_{name}_CFLAGS = $(LIBFUZZER_CFLAGS)
|
||||
src_test_fuzz_lf_fuzz_{name}_LDFLAGS = $(LIBFUZZER_LDFLAG)
|
||||
src_test_fuzz_lf_fuzz_{name}_LDADD = $(LIBFUZZER_LIBS)
|
||||
""".format(name=idname))
|
||||
|
||||
print("LIBFUZZER_FUZZERS = \\")
|
||||
print(" \\\n".join("\tsrc/test/fuzz/lf-fuzz-{name}".format(name=fuzzer)
|
||||
for fuzzer in FUZZERS))
|
||||
|
||||
print("""
|
||||
else
|
||||
LIBFUZZER_FUZZERS =
|
||||
endif""")
|
||||
|
||||
print("\n# ===== oss-fuzz\n")
|
||||
print("if OSS_FUZZ_ENABLED")
|
||||
|
||||
for fuzzer in FUZZERS:
|
||||
idname = get_id_name(fuzzer)
|
||||
print("""\
|
||||
src_test_fuzz_liboss_fuzz_{name}_a_SOURCES = \\
|
||||
$(src_test_fuzz_fuzz_{name}_SOURCES)
|
||||
src_test_fuzz_liboss_fuzz_{name}_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
|
||||
src_test_fuzz_liboss_fuzz_{name}_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
|
||||
""".format(name=idname))
|
||||
|
||||
print("OSS_FUZZ_FUZZERS = \\")
|
||||
print(" \\\n".join("\tsrc/test/fuzz/liboss-fuzz-{name}.a".format(name=fuzzer)
|
||||
for fuzzer in FUZZERS))
|
||||
|
||||
print("""
|
||||
else
|
||||
OSS_FUZZ_FUZZERS =
|
||||
endif""")
|
||||
|
||||
print("")
|
||||
|
||||
print(POSTAMBLE)
|
@ -1,4 +1,5 @@
|
||||
|
||||
# This file was generated by fuzzing_include_am.py; do not hand-edit unless
|
||||
# you enjoy having your changes erased.
|
||||
FUZZING_CPPFLAGS = \
|
||||
$(src_test_AM_CPPFLAGS) $(TEST_CPPFLAGS)
|
||||
FUZZING_CFLAGS = \
|
||||
@ -32,6 +33,16 @@ oss-fuzz-prereqs: \
|
||||
noinst_HEADERS += \
|
||||
src/test/fuzz/fuzzing.h
|
||||
|
||||
LIBFUZZER = /home/nickm/build/libfuzz/libFuzzer.a
|
||||
LIBFUZZER_CPPFLAGS = $(FUZZING_CPPFLAGS) -DLLVM_FUZZ
|
||||
LIBFUZZER_CFLAGS = $(FUZZING_CFLAGS)
|
||||
LIBFUZZER_LDFLAG = $(FUZZING_LDFLAG)
|
||||
LIBFUZZER_LIBS = $(FUZZING_LIBS) $(LIBFUZZER) -lstdc++
|
||||
|
||||
LIBOSS_FUZZ_CPPFLAGS = $(FUZZING_CPPFLAGS) -DLLVM_FUZZ
|
||||
LIBOSS_FUZZ_CFLAGS = $(FUZZING_CFLAGS)
|
||||
|
||||
# ===== AFL fuzzers
|
||||
src_test_fuzz_fuzz_consensus_SOURCES = \
|
||||
src/test/fuzz/fuzzing_common.c \
|
||||
src/test/fuzz/fuzz_consensus.c
|
||||
@ -64,13 +75,13 @@ src_test_fuzz_fuzz_diff_apply_CFLAGS = $(FUZZING_CFLAGS)
|
||||
src_test_fuzz_fuzz_diff_apply_LDFLAGS = $(FUZZING_LDFLAG)
|
||||
src_test_fuzz_fuzz_diff_apply_LDADD = $(FUZZING_LIBS)
|
||||
|
||||
src_test_fuzz_fuzz_http_SOURCES = \
|
||||
src_test_fuzz_fuzz_extrainfo_SOURCES = \
|
||||
src/test/fuzz/fuzzing_common.c \
|
||||
src/test/fuzz/fuzz_http.c
|
||||
src_test_fuzz_fuzz_http_CPPFLAGS = $(FUZZING_CPPFLAGS)
|
||||
src_test_fuzz_fuzz_http_CFLAGS = $(FUZZING_CFLAGS)
|
||||
src_test_fuzz_fuzz_http_LDFLAGS = $(FUZZING_LDFLAG)
|
||||
src_test_fuzz_fuzz_http_LDADD = $(FUZZING_LIBS)
|
||||
src/test/fuzz/fuzz_extrainfo.c
|
||||
src_test_fuzz_fuzz_extrainfo_CPPFLAGS = $(FUZZING_CPPFLAGS)
|
||||
src_test_fuzz_fuzz_extrainfo_CFLAGS = $(FUZZING_CFLAGS)
|
||||
src_test_fuzz_fuzz_extrainfo_LDFLAGS = $(FUZZING_LDFLAG)
|
||||
src_test_fuzz_fuzz_extrainfo_LDADD = $(FUZZING_LIBS)
|
||||
|
||||
src_test_fuzz_fuzz_hsdescv2_SOURCES = \
|
||||
src/test/fuzz/fuzzing_common.c \
|
||||
@ -80,6 +91,14 @@ src_test_fuzz_fuzz_hsdescv2_CFLAGS = $(FUZZING_CFLAGS)
|
||||
src_test_fuzz_fuzz_hsdescv2_LDFLAGS = $(FUZZING_LDFLAG)
|
||||
src_test_fuzz_fuzz_hsdescv2_LDADD = $(FUZZING_LIBS)
|
||||
|
||||
src_test_fuzz_fuzz_http_SOURCES = \
|
||||
src/test/fuzz/fuzzing_common.c \
|
||||
src/test/fuzz/fuzz_http.c
|
||||
src_test_fuzz_fuzz_http_CPPFLAGS = $(FUZZING_CPPFLAGS)
|
||||
src_test_fuzz_fuzz_http_CFLAGS = $(FUZZING_CFLAGS)
|
||||
src_test_fuzz_fuzz_http_LDFLAGS = $(FUZZING_LDFLAG)
|
||||
src_test_fuzz_fuzz_http_LDADD = $(FUZZING_LIBS)
|
||||
|
||||
src_test_fuzz_fuzz_iptsv2_SOURCES = \
|
||||
src/test/fuzz/fuzzing_common.c \
|
||||
src/test/fuzz/fuzz_iptsv2.c
|
||||
@ -88,14 +107,6 @@ src_test_fuzz_fuzz_iptsv2_CFLAGS = $(FUZZING_CFLAGS)
|
||||
src_test_fuzz_fuzz_iptsv2_LDFLAGS = $(FUZZING_LDFLAG)
|
||||
src_test_fuzz_fuzz_iptsv2_LDADD = $(FUZZING_LIBS)
|
||||
|
||||
src_test_fuzz_fuzz_extrainfo_SOURCES = \
|
||||
src/test/fuzz/fuzzing_common.c \
|
||||
src/test/fuzz/fuzz_extrainfo.c
|
||||
src_test_fuzz_fuzz_extrainfo_CPPFLAGS = $(FUZZING_CPPFLAGS)
|
||||
src_test_fuzz_fuzz_extrainfo_CFLAGS = $(FUZZING_CFLAGS)
|
||||
src_test_fuzz_fuzz_extrainfo_LDFLAGS = $(FUZZING_LDFLAG)
|
||||
src_test_fuzz_fuzz_extrainfo_LDADD = $(FUZZING_LIBS)
|
||||
|
||||
src_test_fuzz_fuzz_microdesc_SOURCES = \
|
||||
src/test/fuzz/fuzzing_common.c \
|
||||
src/test/fuzz/fuzz_microdesc.c
|
||||
@ -118,17 +129,13 @@ FUZZERS = \
|
||||
src/test/fuzz/fuzz-diff \
|
||||
src/test/fuzz/fuzz-diff-apply \
|
||||
src/test/fuzz/fuzz-extrainfo \
|
||||
src/test/fuzz/fuzz-http \
|
||||
src/test/fuzz/fuzz-hsdescv2 \
|
||||
src/test/fuzz/fuzz-http \
|
||||
src/test/fuzz/fuzz-iptsv2 \
|
||||
src/test/fuzz/fuzz-microdesc \
|
||||
src/test/fuzz/fuzz-vrs
|
||||
|
||||
LIBFUZZER = /home/nickm/build/libfuzz/libFuzzer.a
|
||||
LIBFUZZER_CPPFLAGS = $(FUZZING_CPPFLAGS) -DLLVM_FUZZ
|
||||
LIBFUZZER_CFLAGS = $(FUZZING_CFLAGS)
|
||||
LIBFUZZER_LDFLAG = $(FUZZING_LDFLAG)
|
||||
LIBFUZZER_LIBS = $(FUZZING_LIBS) $(LIBFUZZER) -lstdc++
|
||||
# ===== libfuzzer
|
||||
|
||||
if LIBFUZZER_ENABLED
|
||||
src_test_fuzz_lf_fuzz_consensus_SOURCES = \
|
||||
@ -166,13 +173,6 @@ src_test_fuzz_lf_fuzz_extrainfo_CFLAGS = $(LIBFUZZER_CFLAGS)
|
||||
src_test_fuzz_lf_fuzz_extrainfo_LDFLAGS = $(LIBFUZZER_LDFLAG)
|
||||
src_test_fuzz_lf_fuzz_extrainfo_LDADD = $(LIBFUZZER_LIBS)
|
||||
|
||||
src_test_fuzz_lf_fuzz_http_SOURCES = \
|
||||
$(src_test_fuzz_fuzz_http_SOURCES)
|
||||
src_test_fuzz_lf_fuzz_http_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
|
||||
src_test_fuzz_lf_fuzz_http_CFLAGS = $(LIBFUZZER_CFLAGS)
|
||||
src_test_fuzz_lf_fuzz_http_LDFLAGS = $(LIBFUZZER_LDFLAG)
|
||||
src_test_fuzz_lf_fuzz_http_LDADD = $(LIBFUZZER_LIBS)
|
||||
|
||||
src_test_fuzz_lf_fuzz_hsdescv2_SOURCES = \
|
||||
$(src_test_fuzz_fuzz_hsdescv2_SOURCES)
|
||||
src_test_fuzz_lf_fuzz_hsdescv2_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
|
||||
@ -180,6 +180,13 @@ src_test_fuzz_lf_fuzz_hsdescv2_CFLAGS = $(LIBFUZZER_CFLAGS)
|
||||
src_test_fuzz_lf_fuzz_hsdescv2_LDFLAGS = $(LIBFUZZER_LDFLAG)
|
||||
src_test_fuzz_lf_fuzz_hsdescv2_LDADD = $(LIBFUZZER_LIBS)
|
||||
|
||||
src_test_fuzz_lf_fuzz_http_SOURCES = \
|
||||
$(src_test_fuzz_fuzz_http_SOURCES)
|
||||
src_test_fuzz_lf_fuzz_http_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
|
||||
src_test_fuzz_lf_fuzz_http_CFLAGS = $(LIBFUZZER_CFLAGS)
|
||||
src_test_fuzz_lf_fuzz_http_LDFLAGS = $(LIBFUZZER_LDFLAG)
|
||||
src_test_fuzz_lf_fuzz_http_LDADD = $(LIBFUZZER_LIBS)
|
||||
|
||||
src_test_fuzz_lf_fuzz_iptsv2_SOURCES = \
|
||||
$(src_test_fuzz_fuzz_iptsv2_SOURCES)
|
||||
src_test_fuzz_lf_fuzz_iptsv2_CPPFLAGS = $(LIBFUZZER_CPPFLAGS)
|
||||
@ -203,12 +210,12 @@ src_test_fuzz_lf_fuzz_vrs_LDADD = $(LIBFUZZER_LIBS)
|
||||
|
||||
LIBFUZZER_FUZZERS = \
|
||||
src/test/fuzz/lf-fuzz-consensus \
|
||||
src/test/fuzz/lf-fuzz-descriptor \
|
||||
src/test/fuzz/lf-fuzz-diff \
|
||||
src/test/fuzz/lf-fuzz-diff-apply \
|
||||
src/test/fuzz/lf-fuzz-descriptor \
|
||||
src/test/fuzz/lf-fuzz-extrainfo \
|
||||
src/test/fuzz/lf-fuzz-http \
|
||||
src/test/fuzz/lf-fuzz-hsdescv2 \
|
||||
src/test/fuzz/lf-fuzz-http \
|
||||
src/test/fuzz/lf-fuzz-iptsv2 \
|
||||
src/test/fuzz/lf-fuzz-microdesc \
|
||||
src/test/fuzz/lf-fuzz-vrs
|
||||
@ -217,10 +224,9 @@ else
|
||||
LIBFUZZER_FUZZERS =
|
||||
endif
|
||||
|
||||
if OSS_FUZZ_ENABLED
|
||||
LIBOSS_FUZZ_CPPFLAGS = $(FUZZING_CPPFLAGS) -DLLVM_FUZZ
|
||||
LIBOSS_FUZZ_CFLAGS = $(FUZZING_CFLAGS)
|
||||
# ===== oss-fuzz
|
||||
|
||||
if OSS_FUZZ_ENABLED
|
||||
src_test_fuzz_liboss_fuzz_consensus_a_SOURCES = \
|
||||
$(src_test_fuzz_fuzz_consensus_SOURCES)
|
||||
src_test_fuzz_liboss_fuzz_consensus_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
|
||||
@ -246,16 +252,16 @@ src_test_fuzz_liboss_fuzz_extrainfo_a_SOURCES = \
|
||||
src_test_fuzz_liboss_fuzz_extrainfo_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
|
||||
src_test_fuzz_liboss_fuzz_extrainfo_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
|
||||
|
||||
src_test_fuzz_liboss_fuzz_http_a_SOURCES = \
|
||||
$(src_test_fuzz_fuzz_http_SOURCES)
|
||||
src_test_fuzz_liboss_fuzz_http_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
|
||||
src_test_fuzz_liboss_fuzz_http_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
|
||||
|
||||
src_test_fuzz_liboss_fuzz_hsdescv2_a_SOURCES = \
|
||||
$(src_test_fuzz_fuzz_hsdescv2_SOURCES)
|
||||
src_test_fuzz_liboss_fuzz_hsdescv2_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
|
||||
src_test_fuzz_liboss_fuzz_hsdescv2_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
|
||||
|
||||
src_test_fuzz_liboss_fuzz_http_a_SOURCES = \
|
||||
$(src_test_fuzz_fuzz_http_SOURCES)
|
||||
src_test_fuzz_liboss_fuzz_http_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
|
||||
src_test_fuzz_liboss_fuzz_http_a_CFLAGS = $(LIBOSS_FUZZ_CFLAGS)
|
||||
|
||||
src_test_fuzz_liboss_fuzz_iptsv2_a_SOURCES = \
|
||||
$(src_test_fuzz_fuzz_iptsv2_SOURCES)
|
||||
src_test_fuzz_liboss_fuzz_iptsv2_a_CPPFLAGS = $(LIBOSS_FUZZ_CPPFLAGS)
|
||||
@ -277,11 +283,12 @@ OSS_FUZZ_FUZZERS = \
|
||||
src/test/fuzz/liboss-fuzz-diff.a \
|
||||
src/test/fuzz/liboss-fuzz-diff-apply.a \
|
||||
src/test/fuzz/liboss-fuzz-extrainfo.a \
|
||||
src/test/fuzz/liboss-fuzz-http.a \
|
||||
src/test/fuzz/liboss-fuzz-hsdescv2.a \
|
||||
src/test/fuzz/liboss-fuzz-http.a \
|
||||
src/test/fuzz/liboss-fuzz-iptsv2.a \
|
||||
src/test/fuzz/liboss-fuzz-microdesc.a \
|
||||
src/test/fuzz/liboss-fuzz-vrs.a
|
||||
|
||||
else
|
||||
OSS_FUZZ_FUZZERS =
|
||||
endif
|
||||
|
Loading…
Reference in New Issue
Block a user