Home | History | Annotate | Line # | Download | only in fuzz
      1      1.1  christos # ################################################################
      2      1.1  christos # Copyright (c) Meta Platforms, Inc. and affiliates.
      3      1.1  christos # All rights reserved.
      4      1.1  christos #
      5      1.1  christos # This source code is licensed under both the BSD-style license (found in the
      6      1.1  christos # LICENSE file in the root directory of this source tree) and the GPLv2 (found
      7      1.1  christos # in the COPYING file in the root directory of this source tree).
      8      1.1  christos # You may select, at your option, one of the above-listed licenses.
      9      1.1  christos # ################################################################
     10      1.1  christos 
     11      1.1  christos # Optionally user defined flags
     12      1.1  christos CFLAGS ?= -O3
     13      1.1  christos CXXFLAGS ?= -O3
     14      1.1  christos CPPFLAGS ?=
     15      1.1  christos ASFLAGS ?=
     16      1.1  christos LDFLAGS ?=
     17      1.1  christos ARFLAGS ?=
     18      1.1  christos LIB_FUZZING_ENGINE ?= libregression.a
     19      1.1  christos PYTHON ?= python
     20  1.1.1.2  christos ifeq ($(shell sh -c 'MSYSTEM="MSYS" uname') , Darwin)
     21      1.1  christos 	DOWNLOAD?=curl -L -o
     22      1.1  christos else
     23      1.1  christos 	DOWNLOAD?=wget -O
     24      1.1  christos endif
     25      1.1  christos CORPORA_URL_PREFIX:=https://github.com/facebook/zstd/releases/download/fuzz-corpora/
     26      1.1  christos 
     27      1.1  christos LIBZSTD_MK_DIR = ../../lib
     28      1.1  christos DEBUGLEVEL ?= 2
     29      1.1  christos ZSTD_LEGACY_SUPPORT ?= 1
     30      1.1  christos 
     31  1.1.1.2  christos .PHONY: default
     32  1.1.1.2  christos default: all
     33  1.1.1.2  christos 
     34      1.1  christos include $(LIBZSTD_MK_DIR)/libzstd.mk
     35      1.1  christos 
     36      1.1  christos PRGDIR = ../../programs
     37      1.1  christos CONTRIBDIR = ../../contrib
     38      1.1  christos 
     39      1.1  christos DEFAULT_SEQ_PROD_DIR = $(CONTRIBDIR)/externalSequenceProducer
     40      1.1  christos DEFAULT_SEQ_PROD_SRC = $(DEFAULT_SEQ_PROD_DIR)/sequence_producer.c
     41      1.1  christos THIRD_PARTY_SEQ_PROD_OBJ ?=
     42      1.1  christos 
     43      1.1  christos FUZZ_CPPFLAGS := -I$(LIB_SRCDIR) -I$(LIB_SRCDIR)/common -I$(LIB_SRCDIR)/compress \
     44      1.1  christos 	-I$(LIB_SRCDIR)/dictBuilder -I$(LIB_SRCDIR)/deprecated -I$(LIB_SRCDIR)/legacy \
     45      1.1  christos 	-I$(CONTRIBDIR)/seekable_format -I$(PRGDIR) -I$(DEFAULT_SEQ_PROD_DIR) \
     46      1.1  christos 	-DZSTD_MULTITHREAD -DZSTD_LEGACY_SUPPORT=1 $(CPPFLAGS)
     47      1.1  christos FUZZ_EXTRA_FLAGS := -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
     48      1.1  christos 	-Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement \
     49      1.1  christos 	-Wstrict-prototypes -Wundef \
     50      1.1  christos 	-Wvla -Wformat=2 -Winit-self -Wfloat-equal -Wwrite-strings \
     51      1.1  christos 	-Wredundant-decls -Wno-deprecated-declarations \
     52      1.1  christos 	-g -fno-omit-frame-pointer
     53      1.1  christos FUZZ_CFLAGS := $(FUZZ_EXTRA_FLAGS) $(CFLAGS)
     54      1.1  christos FUZZ_ASFLAGS := $(FUZZ_EXTRA_FLAGS) $(ASFLAGS)
     55      1.1  christos FUZZ_CXXFLAGS := $(FUZZ_EXTRA_FLAGS) -std=c++11 $(CXXFLAGS)
     56      1.1  christos FUZZ_LDFLAGS := -pthread $(LDFLAGS)
     57      1.1  christos FUZZ_ARFLAGS := $(ARFLAGS)
     58      1.1  christos FUZZ_TARGET_FLAGS = $(FUZZ_CPPFLAGS) $(FUZZ_CXXFLAGS) $(FUZZ_LDFLAGS)
     59      1.1  christos 
     60      1.1  christos FUZZ_ROUND_TRIP_FLAGS := -DFUZZING_ASSERT_VALID_SEQUENCE
     61      1.1  christos 
     62      1.1  christos FUZZ_HEADERS := fuzz_helpers.h fuzz.h zstd_helpers.h fuzz_data_producer.h
     63      1.1  christos FUZZ_SRC := $(PRGDIR)/util.c ./fuzz_helpers.c ./zstd_helpers.c ./fuzz_data_producer.c
     64      1.1  christos 
     65      1.1  christos SEEKABLE_HEADERS = $(CONTRIBDIR)/seekable_format/zstd_seekable.h
     66      1.1  christos SEEKABLE_OBJS = $(CONTRIBDIR)/seekable_format/zstdseek_compress.c $(CONTRIBDIR)/seekable_format/zstdseek_decompress.c
     67      1.1  christos 
     68      1.1  christos ZSTDCOMMON_SRC := $(ZSTD_COMMON_FILES)
     69      1.1  christos ZSTDCOMP_SRC   := $(ZSTD_COMPRESS_FILES)
     70      1.1  christos ZSTDDECOMP_SRC := $(ZSTD_DECOMPRESS_FILES)
     71      1.1  christos ZSTDDICT_SRC := $(ZSTD_DICTBUILDER_FILES)
     72      1.1  christos ZSTDLEGACY_SRC := $(ZSTD_LEGACY_FILES)
     73      1.1  christos FUZZ_SRC       := \
     74      1.1  christos 	$(FUZZ_SRC) \
     75      1.1  christos 	$(ZSTDDECOMP_SRC) \
     76      1.1  christos 	$(ZSTDCOMMON_SRC) \
     77      1.1  christos 	$(ZSTDCOMP_SRC) \
     78      1.1  christos 	$(ZSTDDICT_SRC) \
     79      1.1  christos 	$(ZSTDLEGACY_SRC) \
     80      1.1  christos 	$(DEFAULT_SEQ_PROD_SRC)
     81      1.1  christos FUZZ_SRC := $(sort $(wildcard $(FUZZ_SRC)))
     82      1.1  christos 
     83      1.1  christos FUZZ_D_OBJ1 := $(subst $(LIB_SRCDIR)/common/,d_lib_common_,$(FUZZ_SRC))
     84      1.1  christos FUZZ_D_OBJ2 := $(subst $(LIB_SRCDIR)/compress/,d_lib_compress_,$(FUZZ_D_OBJ1))
     85      1.1  christos FUZZ_D_OBJ3 := $(subst $(LIB_SRCDIR)/decompress/,d_lib_decompress_,$(FUZZ_D_OBJ2))
     86      1.1  christos FUZZ_D_OBJ4 := $(subst $(LIB_SRCDIR)/dictBuilder/,d_lib_dictBuilder_,$(FUZZ_D_OBJ3))
     87      1.1  christos FUZZ_D_OBJ5 := $(subst $(LIB_SRCDIR)/legacy/,d_lib_legacy_,$(FUZZ_D_OBJ4))
     88      1.1  christos FUZZ_D_OBJ6 := $(subst $(PRGDIR)/,d_prg_,$(FUZZ_D_OBJ5))
     89      1.1  christos FUZZ_D_OBJ7 := $(subst $(DEFAULT_SEQ_PROD_DIR)/,d_default_seq_prod_,$(FUZZ_D_OBJ6))
     90      1.1  christos FUZZ_D_OBJ8 := $(subst $\./,d_fuzz_,$(FUZZ_D_OBJ7))
     91      1.1  christos FUZZ_D_OBJ9 := $(FUZZ_D_OBJ8:.c=.o)
     92      1.1  christos FUZZ_D_OBJ10 := $(THIRD_PARTY_SEQ_PROD_OBJ) $(FUZZ_D_OBJ9)
     93      1.1  christos FUZZ_DECOMPRESS_OBJ := $(FUZZ_D_OBJ10:.S=.o)
     94      1.1  christos 
     95      1.1  christos FUZZ_RT_OBJ1 := $(subst $(LIB_SRCDIR)/common/,rt_lib_common_,$(FUZZ_SRC))
     96      1.1  christos FUZZ_RT_OBJ2 := $(subst $(LIB_SRCDIR)/compress/,rt_lib_compress_,$(FUZZ_RT_OBJ1))
     97      1.1  christos FUZZ_RT_OBJ3 := $(subst $(LIB_SRCDIR)/decompress/,rt_lib_decompress_,$(FUZZ_RT_OBJ2))
     98      1.1  christos FUZZ_RT_OBJ4 := $(subst $(LIB_SRCDIR)/dictBuilder/,rt_lib_dictBuilder_,$(FUZZ_RT_OBJ3))
     99      1.1  christos FUZZ_RT_OBJ5 := $(subst $(LIB_SRCDIR)/legacy/,rt_lib_legacy_,$(FUZZ_RT_OBJ4))
    100      1.1  christos FUZZ_RT_OBJ6 := $(subst $(PRGDIR)/,rt_prg_,$(FUZZ_RT_OBJ5))
    101      1.1  christos FUZZ_RT_OBJ7 := $(subst $(DEFAULT_SEQ_PROD_DIR)/,rt_default_seq_prod_,$(FUZZ_RT_OBJ6))
    102      1.1  christos FUZZ_RT_OBJ8 := $(subst $\./,rt_fuzz_,$(FUZZ_RT_OBJ7))
    103      1.1  christos FUZZ_RT_OBJ9 := $(FUZZ_RT_OBJ8:.c=.o)
    104      1.1  christos FUZZ_RT_OBJ10 := $(THIRD_PARTY_SEQ_PROD_OBJ) $(FUZZ_RT_OBJ9)
    105      1.1  christos FUZZ_ROUND_TRIP_OBJ := $(FUZZ_RT_OBJ10:.S=.o)
    106      1.1  christos 
    107      1.1  christos FUZZ_TARGETS :=       \
    108      1.1  christos 	simple_round_trip \
    109      1.1  christos 	stream_round_trip \
    110      1.1  christos 	block_round_trip  \
    111      1.1  christos 	simple_decompress \
    112      1.1  christos 	stream_decompress \
    113      1.1  christos 	block_decompress  \
    114      1.1  christos 	dictionary_round_trip \
    115      1.1  christos 	dictionary_decompress \
    116      1.1  christos 	zstd_frame_info \
    117      1.1  christos 	simple_compress \
    118      1.1  christos 	dictionary_loader \
    119      1.1  christos 	raw_dictionary_round_trip \
    120      1.1  christos 	dictionary_stream_round_trip \
    121      1.1  christos 	decompress_dstSize_tooSmall \
    122      1.1  christos 	fse_read_ncount \
    123      1.1  christos 	sequence_compression_api \
    124      1.1  christos 	seekable_roundtrip \
    125      1.1  christos 	huf_round_trip \
    126      1.1  christos 	huf_decompress \
    127      1.1  christos 	decompress_cross_format \
    128      1.1  christos 	generate_sequences
    129      1.1  christos 
    130  1.1.1.2  christos .PHONY: all clean cleanall
    131      1.1  christos all: libregression.a $(FUZZ_TARGETS)
    132      1.1  christos 
    133      1.1  christos rt_lib_common_%.o: $(LIB_SRCDIR)/common/%.c
    134      1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $(FUZZ_ROUND_TRIP_FLAGS) $< -c -o $@
    135      1.1  christos 
    136      1.1  christos rt_lib_compress_%.o: $(LIB_SRCDIR)/compress/%.c
    137      1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $(FUZZ_ROUND_TRIP_FLAGS) $< -c -o $@
    138      1.1  christos 
    139      1.1  christos rt_lib_decompress_%.o: $(LIB_SRCDIR)/decompress/%.c
    140      1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $(FUZZ_ROUND_TRIP_FLAGS) $< -c -o $@
    141      1.1  christos 
    142      1.1  christos rt_lib_decompress_%.o: $(LIB_SRCDIR)/decompress/%.S
    143      1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_ASFLAGS) $(FUZZ_ROUND_TRIP_FLAGS) $< -c -o $@
    144      1.1  christos 
    145      1.1  christos rt_lib_dictBuilder_%.o: $(LIB_SRCDIR)/dictBuilder/%.c
    146      1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $(FUZZ_ROUND_TRIP_FLAGS) $< -c -o $@
    147      1.1  christos 
    148      1.1  christos rt_lib_legacy_%.o: $(LIB_SRCDIR)/legacy/%.c
    149      1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $(FUZZ_ROUND_TRIP_FLAGS) $< -c -o $@
    150      1.1  christos 
    151      1.1  christos rt_prg_%.o: $(PRGDIR)/%.c
    152      1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $(FUZZ_ROUND_TRIP_FLAGS) $< -c -o $@
    153      1.1  christos 
    154      1.1  christos rt_fuzz_%.o: %.c
    155      1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $(FUZZ_ROUND_TRIP_FLAGS) $< -c -o $@
    156      1.1  christos 
    157      1.1  christos rt_default_seq_prod_%.o: $(DEFAULT_SEQ_PROD_DIR)/%.c
    158      1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $(FUZZ_ROUND_TRIP_FLAGS) $< -c -o $@
    159      1.1  christos 
    160      1.1  christos d_lib_common_%.o: $(LIB_SRCDIR)/common/%.c
    161      1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $< -c -o $@
    162      1.1  christos 
    163      1.1  christos d_lib_compress_%.o: $(LIB_SRCDIR)/compress/%.c
    164      1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $< -c -o $@
    165      1.1  christos 
    166      1.1  christos d_lib_decompress_%.o: $(LIB_SRCDIR)/decompress/%.c
    167      1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $< -c -o $@
    168      1.1  christos 
    169      1.1  christos d_lib_decompress_%.o: $(LIB_SRCDIR)/decompress/%.S
    170      1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_ASFLAGS) $< -c -o $@
    171      1.1  christos 
    172      1.1  christos d_lib_dictBuilder_%.o: $(LIB_SRCDIR)/dictBuilder/%.c
    173      1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $< -c -o $@
    174      1.1  christos 
    175      1.1  christos d_lib_legacy_%.o: $(LIB_SRCDIR)/legacy/%.c
    176      1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $< -c -o $@
    177      1.1  christos 
    178      1.1  christos d_prg_%.o: $(PRGDIR)/%.c
    179      1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $< -c -o $@
    180      1.1  christos 
    181      1.1  christos d_fuzz_%.o: %.c
    182      1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $< -c -o $@
    183      1.1  christos 
    184      1.1  christos d_default_seq_prod_%.o: $(DEFAULT_SEQ_PROD_DIR)/%.c
    185      1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $< -c -o $@
    186      1.1  christos 
    187      1.1  christos simple_round_trip: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_simple_round_trip.o
    188      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_simple_round_trip.o $(LIB_FUZZING_ENGINE) -o $@
    189      1.1  christos 
    190      1.1  christos stream_round_trip: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_stream_round_trip.o
    191      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_stream_round_trip.o $(LIB_FUZZING_ENGINE) -o $@
    192      1.1  christos 
    193      1.1  christos block_round_trip: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_block_round_trip.o
    194      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_block_round_trip.o $(LIB_FUZZING_ENGINE) -o $@
    195      1.1  christos 
    196      1.1  christos simple_decompress: $(FUZZ_HEADERS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_simple_decompress.o
    197      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_simple_decompress.o $(LIB_FUZZING_ENGINE) -o $@
    198      1.1  christos 
    199      1.1  christos stream_decompress: $(FUZZ_HEADERS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_stream_decompress.o
    200      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_stream_decompress.o $(LIB_FUZZING_ENGINE) -o $@
    201      1.1  christos 
    202      1.1  christos block_decompress: $(FUZZ_HEADERS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_block_decompress.o
    203      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_block_decompress.o $(LIB_FUZZING_ENGINE) -o $@
    204      1.1  christos 
    205      1.1  christos dictionary_round_trip: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_dictionary_round_trip.o
    206      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_dictionary_round_trip.o $(LIB_FUZZING_ENGINE) -o $@
    207      1.1  christos 
    208      1.1  christos raw_dictionary_round_trip: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_raw_dictionary_round_trip.o
    209      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_raw_dictionary_round_trip.o $(LIB_FUZZING_ENGINE) -o $@
    210      1.1  christos 
    211      1.1  christos dictionary_stream_round_trip: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_dictionary_stream_round_trip.o
    212      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_dictionary_stream_round_trip.o $(LIB_FUZZING_ENGINE) -o $@
    213      1.1  christos 
    214      1.1  christos dictionary_decompress: $(FUZZ_HEADERS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_dictionary_decompress.o
    215      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_dictionary_decompress.o $(LIB_FUZZING_ENGINE) -o $@
    216      1.1  christos 
    217      1.1  christos simple_compress: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_simple_compress.o
    218      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_simple_compress.o $(LIB_FUZZING_ENGINE) -o $@
    219      1.1  christos 
    220      1.1  christos zstd_frame_info: $(FUZZ_HEADERS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_zstd_frame_info.o
    221      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_zstd_frame_info.o $(LIB_FUZZING_ENGINE) -o $@
    222      1.1  christos 
    223      1.1  christos dictionary_loader: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_dictionary_loader.o
    224      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_dictionary_loader.o $(LIB_FUZZING_ENGINE) -o $@
    225      1.1  christos 
    226      1.1  christos decompress_dstSize_tooSmall: $(FUZZ_HEADERS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_decompress_dstSize_tooSmall.o
    227      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_decompress_dstSize_tooSmall.o $(LIB_FUZZING_ENGINE) -o $@
    228      1.1  christos 
    229      1.1  christos fse_read_ncount: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_fse_read_ncount.o
    230      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_fse_read_ncount.o $(LIB_FUZZING_ENGINE) -o $@
    231      1.1  christos 
    232      1.1  christos sequence_compression_api: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_sequence_compression_api.o
    233      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_sequence_compression_api.o $(LIB_FUZZING_ENGINE) -o $@
    234      1.1  christos 
    235      1.1  christos seekable_roundtrip: $(FUZZ_HEADERS) $(SEEKABLE_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) $(SEEKABLE_OBJS)  rt_fuzz_seekable_roundtrip.o
    236      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) $(SEEKABLE_OBJS) rt_fuzz_seekable_roundtrip.o $(LIB_FUZZING_ENGINE) -o $@
    237      1.1  christos 
    238      1.1  christos huf_round_trip: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_huf_round_trip.o
    239      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_huf_round_trip.o $(LIB_FUZZING_ENGINE) -o $@
    240      1.1  christos 
    241      1.1  christos huf_decompress: $(FUZZ_HEADERS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_huf_decompress.o
    242      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_huf_decompress.o $(LIB_FUZZING_ENGINE) -o $@
    243      1.1  christos 
    244      1.1  christos decompress_cross_format: $(FUZZ_HEADERS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_decompress_cross_format.o
    245      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_decompress_cross_format.o $(LIB_FUZZING_ENGINE) -o $@
    246      1.1  christos 
    247      1.1  christos generate_sequences: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_generate_sequences.o
    248      1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_generate_sequences.o $(LIB_FUZZING_ENGINE) -o $@
    249      1.1  christos 
    250      1.1  christos libregression.a: $(FUZZ_HEADERS) $(PRGDIR)/util.h $(PRGDIR)/util.c d_fuzz_regression_driver.o
    251      1.1  christos 	$(AR) $(FUZZ_ARFLAGS) $@ d_fuzz_regression_driver.o
    252      1.1  christos 
    253      1.1  christos corpora/%_seed_corpus.zip:
    254      1.1  christos 	@mkdir -p corpora
    255      1.1  christos 	$(DOWNLOAD) $@ $(CORPORA_URL_PREFIX)$*_seed_corpus.zip
    256      1.1  christos 
    257      1.1  christos corpora/%: corpora/%_seed_corpus.zip
    258      1.1  christos 	unzip -q $^ -d $@
    259      1.1  christos 
    260      1.1  christos .PHONY: corpora
    261      1.1  christos corpora: $(patsubst %,corpora/%,$(FUZZ_TARGETS))
    262      1.1  christos 
    263      1.1  christos .PHONY: seedcorpora
    264      1.1  christos seedcorpora: $(patsubst %,corpora/%_seed_corpus.zip,$(FUZZ_TARGETS))
    265      1.1  christos 
    266  1.1.1.2  christos REGRESSION_TARGET ?= all
    267      1.1  christos regressiontest: corpora
    268  1.1.1.2  christos 	CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" $(PYTHON) ./fuzz.py build $(REGRESSION_TARGET) --debug=$(DEBUGLEVEL)
    269  1.1.1.2  christos 	$(PYTHON) ./fuzz.py regression $(REGRESSION_TARGET)
    270      1.1  christos 
    271      1.1  christos clean:
    272      1.1  christos 	@$(RM) *.a *.o $(FUZZ_TARGETS)
    273      1.1  christos 	@echo Cleaning completed
    274      1.1  christos 
    275      1.1  christos cleanall:
    276      1.1  christos 	@$(RM) -r Fuzzer
    277      1.1  christos 	@$(RM) -r corpora
    278      1.1  christos 	@echo Cleaning completed
    279