##// END OF EJS Templates
tests: finally fix up test-fuzz-targets.t...
tests: finally fix up test-fuzz-targets.t It's been failing on my workstation for a while, since I have a new enough LLVM that I had the fuzzer goo, but not so new that I actually had FuzzedDataProvider. This is a better solution all around in my opinion. I _believe_ this should let us run these tests on most systems, even those using GCC instead of clang. That said, my one attempt to test this on my macOS laptop failed miserably, and I don't feel like doing more work on this right now. Differential Revision: https://phab.mercurial-scm.org/D7566

File last commit:

r44256:ceeff2d9 default
r44267:19da643d default
Show More
Makefile
190 lines | 7.1 KiB | text/x-makefile | MakefileLexer
Yuya Nishihara
fuzz: expand variables by make...
r38232 CC = clang
CXX = clang++
Augie Fackler
fuzz: use a more standard approach to allow local builds of fuzzers...
r44265 # By default, use our own standalone_fuzz_target_runner.
# This runner does no fuzzing, but simply executes the inputs
# provided via parameters.
# Run e.g. "make all LIB_FUZZING_ENGINE=/path/to/libFuzzer.a"
# to link the fuzzer(s) against a real fuzzing engine.
#
# OSS-Fuzz will define its own value for LIB_FUZZING_ENGINE.
LIB_FUZZING_ENGINE ?= standalone_fuzz_target_runner.o
Augie Fackler
fuzz: follow modern guidelines and use LIB_FUZZING_ENGINE...
r44262
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 PYTHON_CONFIG ?= $$OUT/sanpy/bin/python-config
Augie Fackler
fuzz: suppress deprecated-register warnings in our compile...
r44263 CXXFLAGS += -Wno-deprecated-register
Augie Fackler
tests: finally fix up test-fuzz-targets.t...
r44267 all: standalone_fuzz_target_runner.o oss-fuzz
Yuya Nishihara
fuzz: fix the default make target
r38233
Augie Fackler
fuzz: use a more standard approach to allow local builds of fuzzers...
r44265 standalone_fuzz_target_runner.o: standalone_fuzz_target_runner.cc
Augie Fackler
fuzz: extract Python initialization to utility package...
r41049 pyutil.o: pyutil.cc pyutil.h
$(CXX) $(CXXFLAGS) -g -O1 \
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 `$(PYTHON_CONFIG) --cflags` \
Augie Fackler
fuzz: extract Python initialization to utility package...
r41049 -I../../mercurial -c -o pyutil.o pyutil.cc
Augie Fackler
contrib: add some basic scaffolding for some fuzz test targets...
r35688 bdiff.o: ../../mercurial/bdiff.c
Yuya Nishihara
fuzz: expand variables by make...
r38232 $(CC) $(CFLAGS) -fsanitize=fuzzer-no-link,address -c -o bdiff.o \
Augie Fackler
contrib: add some basic scaffolding for some fuzz test targets...
r35688 ../../mercurial/bdiff.c
Augie Fackler
fuzz: clean out most of fuzzutil...
r44013 bdiff: bdiff.cc bdiff.o
Yuya Nishihara
fuzz: expand variables by make...
r38232 $(CXX) $(CXXFLAGS) -DHG_FUZZER_INCLUDE_MAIN=1 -g -O1 -fsanitize=fuzzer-no-link,address \
Augie Fackler
fuzz: extract some common utilities and use modern C++ idioms...
r38191 -std=c++17 \
Augie Fackler
fuzz: clean out most of fuzzutil...
r44013 -I../../mercurial bdiff.cc bdiff.o -o bdiff
Augie Fackler
contrib: add some basic scaffolding for some fuzz test targets...
r35688
bdiff-oss-fuzz.o: ../../mercurial/bdiff.c
Yuya Nishihara
fuzz: expand variables by make...
r38232 $(CC) $(CFLAGS) -c -o bdiff-oss-fuzz.o ../../mercurial/bdiff.c
Augie Fackler
contrib: add some basic scaffolding for some fuzz test targets...
r35688
Augie Fackler
fuzz: clean out most of fuzzutil...
r44013 bdiff_fuzzer: bdiff.cc bdiff-oss-fuzz.o
Yuya Nishihara
fuzz: expand variables by make...
r38232 $(CXX) $(CXXFLAGS) -std=c++17 -I../../mercurial bdiff.cc \
Augie Fackler
fuzz: follow modern guidelines and use LIB_FUZZING_ENGINE...
r44262 bdiff-oss-fuzz.o $(LIB_FUZZING_ENGINE) -o \
Augie Fackler
fuzzutil: make it possible to use absl when C++17 isn't supported...
r38192 $$OUT/bdiff_fuzzer
Augie Fackler
contrib: add some basic scaffolding for some fuzz test targets...
r35688
Augie Fackler
fuzz: new fuzzer for the mpatch code...
r38264 mpatch.o: ../../mercurial/mpatch.c
$(CC) -g -O1 -fsanitize=fuzzer-no-link,address -c -o mpatch.o \
../../mercurial/mpatch.c
mpatch: CXXFLAGS += -std=c++17
Augie Fackler
fuzz: clean out most of fuzzutil...
r44013 mpatch: mpatch.cc mpatch.o
Augie Fackler
fuzz: new fuzzer for the mpatch code...
r38264 $(CXX) $(CXXFLAGS) -DHG_FUZZER_INCLUDE_MAIN=1 -g -O1 -fsanitize=fuzzer-no-link,address \
Augie Fackler
fuzz: clean out most of fuzzutil...
r44013 -I../../mercurial mpatch.cc mpatch.o -o mpatch
Augie Fackler
fuzz: new fuzzer for the mpatch code...
r38264
mpatch-oss-fuzz.o: ../../mercurial/mpatch.c
$(CC) $(CFLAGS) -c -o mpatch-oss-fuzz.o ../../mercurial/mpatch.c
Augie Fackler
fuzz: clean out most of fuzzutil...
r44013 mpatch_fuzzer: mpatch.cc mpatch-oss-fuzz.o
Augie Fackler
fuzz: new fuzzer for the mpatch code...
r38264 $(CXX) $(CXXFLAGS) -std=c++17 -I../../mercurial mpatch.cc \
Augie Fackler
fuzz: follow modern guidelines and use LIB_FUZZING_ENGINE...
r44262 mpatch-oss-fuzz.o $(LIB_FUZZING_ENGINE) -o \
Augie Fackler
fuzz: new fuzzer for the mpatch code...
r38264 $$OUT/mpatch_fuzzer
mpatch_corpus.zip:
python mpatch_corpus.py $$OUT/mpatch_fuzzer_seed_corpus.zip
Augie Fackler
fuzz: add a fuzzer for xdiff...
r36697 x%.o: ../../mercurial/thirdparty/xdiff/x%.c ../../mercurial/thirdparty/xdiff/*.h
Yuya Nishihara
fuzz: expand variables by make...
r38232 $(CC) -g -O1 -fsanitize=fuzzer-no-link,address -c \
Augie Fackler
fuzz: add a fuzzer for xdiff...
r36697 -o $@ \
$<
Yuya Nishihara
fuzz: compile xdiff.cc with -std=c++17...
r38235 xdiff: CXXFLAGS += -std=c++17
Augie Fackler
fuzz: clean out most of fuzzutil...
r44013 xdiff: xdiff.cc xdiffi.o xprepare.o xutils.o
Yuya Nishihara
fuzz: expand variables by make...
r38232 $(CXX) $(CXXFLAGS) -DHG_FUZZER_INCLUDE_MAIN=1 -g -O1 -fsanitize=fuzzer-no-link,address \
Augie Fackler
fuzz: add a fuzzer for xdiff...
r36697 -I../../mercurial xdiff.cc \
Augie Fackler
fuzz: clean out most of fuzzutil...
r44013 xdiffi.o xprepare.o xutils.o -o xdiff
Augie Fackler
contrib: add some basic scaffolding for some fuzz test targets...
r35688
Augie Fackler
fuzz: add a fuzzer for xdiff...
r36697 fuzz-x%.o: ../../mercurial/thirdparty/xdiff/x%.c ../../mercurial/thirdparty/xdiff/*.h
Yuya Nishihara
fuzz: expand variables by make...
r38232 $(CC) $(CFLAGS) -c \
Augie Fackler
fuzz: add a fuzzer for xdiff...
r36697 -o $@ \
$<
Augie Fackler
fuzz: clean out most of fuzzutil...
r44013 xdiff_fuzzer: xdiff.cc fuzz-xdiffi.o fuzz-xprepare.o fuzz-xutils.o
Yuya Nishihara
fuzz: expand variables by make...
r38232 $(CXX) $(CXXFLAGS) -std=c++17 -I../../mercurial xdiff.cc \
Augie Fackler
fuzz: clean out most of fuzzutil...
r44013 fuzz-xdiffi.o fuzz-xprepare.o fuzz-xutils.o \
Augie Fackler
fuzz: follow modern guidelines and use LIB_FUZZING_ENGINE...
r44262 $(LIB_FUZZING_ENGINE) -o $$OUT/xdiff_fuzzer
Augie Fackler
fuzz: add a fuzzer for xdiff...
r36697
Augie Fackler
fuzz: stop building Python in the Makefile...
r41219 manifest.o: ../../mercurial/cext/manifest.c
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(CC) $(CFLAGS) `$(PYTHON_CONFIG) --cflags` \
Augie Fackler
fuzz: new fuzzer for cext/manifest.c...
r40089 -I../../mercurial \
-c -o manifest.o ../../mercurial/cext/manifest.c
Augie Fackler
fuzz: stop building Python in the Makefile...
r41219 charencode.o: ../../mercurial/cext/charencode.c
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(CC) $(CFLAGS) `$(PYTHON_CONFIG) --cflags` \
Augie Fackler
fuzz: new fuzzer for cext/manifest.c...
r40089 -I../../mercurial \
-c -o charencode.o ../../mercurial/cext/charencode.c
Augie Fackler
fuzz: stop building Python in the Makefile...
r41219 parsers.o: ../../mercurial/cext/parsers.c
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(CC) $(CFLAGS) `$(PYTHON_CONFIG) --cflags` \
Augie Fackler
fuzz: new fuzzer for cext/manifest.c...
r40089 -I../../mercurial \
-c -o parsers.o ../../mercurial/cext/parsers.c
Augie Fackler
fuzz: stop building Python in the Makefile...
r41219 dirs.o: ../../mercurial/cext/dirs.c
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(CC) $(CFLAGS) `$(PYTHON_CONFIG) --cflags` \
Augie Fackler
fuzz: new fuzzer for cext/manifest.c...
r40089 -I../../mercurial \
-c -o dirs.o ../../mercurial/cext/dirs.c
Augie Fackler
fuzz: stop building Python in the Makefile...
r41219 pathencode.o: ../../mercurial/cext/pathencode.c
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(CC) $(CFLAGS) `$(PYTHON_CONFIG) --cflags` \
Augie Fackler
fuzz: new fuzzer for cext/manifest.c...
r40089 -I../../mercurial \
-c -o pathencode.o ../../mercurial/cext/pathencode.c
Augie Fackler
fuzz: stop building Python in the Makefile...
r41219 revlog.o: ../../mercurial/cext/revlog.c
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(CC) $(CFLAGS) `$(PYTHON_CONFIG) --cflags` \
Augie Fackler
fuzz: new fuzzer for cext/manifest.c...
r40089 -I../../mercurial \
-c -o revlog.o ../../mercurial/cext/revlog.c
Augie Fackler
fuzz: new fuzzer for dirs.c...
r43420 dirs_fuzzer: dirs.cc manifest.o charencode.o parsers.o dirs.o pathencode.o revlog.o pyutil.o
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(CXX) $(CXXFLAGS) `$(PYTHON_CONFIG) --cflags` \
Augie Fackler
fuzz: new fuzzer for dirs.c...
r43420 -Wno-register -Wno-macro-redefined \
-I../../mercurial dirs.cc \
manifest.o charencode.o parsers.o dirs.o pathencode.o revlog.o pyutil.o \
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(LIB_FUZZING_ENGINE) `$(PYTHON_CONFIG) --ldflags` \
Augie Fackler
fuzz: new fuzzer for dirs.c...
r43420 -o $$OUT/dirs_fuzzer
Augie Fackler
fuzz: new fuzzer for fncache-related functions...
r43422 fncache_fuzzer: fncache.cc manifest.o charencode.o parsers.o dirs.o pathencode.o revlog.o pyutil.o
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(CXX) $(CXXFLAGS) `$(PYTHON_CONFIG) --cflags` \
Augie Fackler
fuzz: new fuzzer for fncache-related functions...
r43422 -Wno-register -Wno-macro-redefined \
-I../../mercurial fncache.cc \
manifest.o charencode.o parsers.o dirs.o pathencode.o revlog.o pyutil.o \
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(LIB_FUZZING_ENGINE) `$(PYTHON_CONFIG) --ldflags` \
Augie Fackler
fuzz: new fuzzer for fncache-related functions...
r43422 -o $$OUT/fncache_fuzzer
Augie Fackler
fuzz: new target to fuzz jsonescapeu8fast...
r43423 jsonescapeu8fast_fuzzer: jsonescapeu8fast.cc manifest.o charencode.o parsers.o dirs.o pathencode.o revlog.o pyutil.o
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(CXX) $(CXXFLAGS) `$(PYTHON_CONFIG) --cflags` \
Augie Fackler
fuzz: new target to fuzz jsonescapeu8fast...
r43423 -Wno-register -Wno-macro-redefined \
-I../../mercurial jsonescapeu8fast.cc \
manifest.o charencode.o parsers.o dirs.o pathencode.o revlog.o pyutil.o \
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(LIB_FUZZING_ENGINE) `$(PYTHON_CONFIG) --ldflags` \
Augie Fackler
fuzz: new target to fuzz jsonescapeu8fast...
r43423 -o $$OUT/jsonescapeu8fast_fuzzer
Augie Fackler
fuzz: new fuzzer for dirs.c...
r43420 manifest_corpus.zip:
python manifest_corpus.py $$OUT/manifest_fuzzer_seed_corpus.zip
Augie Fackler
fuzz: stop building Python in the Makefile...
r41219 manifest_fuzzer: manifest.cc manifest.o charencode.o parsers.o dirs.o pathencode.o revlog.o pyutil.o
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(CXX) $(CXXFLAGS) `$(PYTHON_CONFIG) --cflags` \
Augie Fackler
fuzz: new fuzzer for cext/manifest.c...
r40089 -Wno-register -Wno-macro-redefined \
-I../../mercurial manifest.cc \
Augie Fackler
fuzz: extract Python initialization to utility package...
r41049 manifest.o charencode.o parsers.o dirs.o pathencode.o revlog.o pyutil.o \
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(LIB_FUZZING_ENGINE) `$(PYTHON_CONFIG) --ldflags` \
Augie Fackler
fuzz: new fuzzer for cext/manifest.c...
r40089 -o $$OUT/manifest_fuzzer
Augie Fackler
fuzz: stop building Python in the Makefile...
r41219 revlog_fuzzer: revlog.cc manifest.o charencode.o parsers.o dirs.o pathencode.o revlog.o pyutil.o
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(CXX) $(CXXFLAGS) `$(PYTHON_CONFIG) --cflags` \
Augie Fackler
fuzz: new fuzzer for revlog's parse_index2 method...
r41050 -Wno-register -Wno-macro-redefined \
-I../../mercurial revlog.cc \
manifest.o charencode.o parsers.o dirs.o pathencode.o revlog.o pyutil.o \
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(LIB_FUZZING_ENGINE) `$(PYTHON_CONFIG) --ldflags` \
Augie Fackler
fuzz: new fuzzer for revlog's parse_index2 method...
r41050 -o $$OUT/revlog_fuzzer
revlog_corpus.zip:
python revlog_corpus.py $$OUT/revlog_fuzzer_seed_corpus.zip
Augie Fackler
fuzz: stop building Python in the Makefile...
r41219 dirstate_fuzzer: dirstate.cc manifest.o charencode.o parsers.o dirs.o pathencode.o revlog.o pyutil.o
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(CXX) $(CXXFLAGS) `$(PYTHON_CONFIG) --cflags` \
Augie Fackler
fuzz: new fuzzer for dirstate parser...
r41051 -Wno-register -Wno-macro-redefined \
-I../../mercurial dirstate.cc \
manifest.o charencode.o parsers.o dirs.o pathencode.o revlog.o pyutil.o \
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(LIB_FUZZING_ENGINE) `$(PYTHON_CONFIG) --ldflags` \
Augie Fackler
fuzz: new fuzzer for dirstate parser...
r41051 -o $$OUT/dirstate_fuzzer
dirstate_corpus.zip:
python dirstate_corpus.py $$OUT/dirstate_fuzzer_seed_corpus.zip
Augie Fackler
fuzz: stop building Python in the Makefile...
r41219 fm1readmarkers_fuzzer: fm1readmarkers.cc manifest.o charencode.o parsers.o dirs.o pathencode.o revlog.o pyutil.o
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(CXX) $(CXXFLAGS) `$(PYTHON_CONFIG) --cflags` \
Augie Fackler
fuzz: new fuzzer for parsers.fm1readmarkers...
r41053 -Wno-register -Wno-macro-redefined \
-I../../mercurial fm1readmarkers.cc \
manifest.o charencode.o parsers.o dirs.o pathencode.o revlog.o pyutil.o \
Augie Fackler
fuzz: use a variable to allow specifying python-config to use...
r44264 $(LIB_FUZZING_ENGINE) `$(PYTHON_CONFIG) --ldflags` \
Augie Fackler
fuzz: new fuzzer for parsers.fm1readmarkers...
r41053 -o $$OUT/fm1readmarkers_fuzzer
fm1readmarkers_corpus.zip:
python fm1readmarkers_corpus.py $$OUT/fm1readmarkers_fuzzer_seed_corpus.zip
Augie Fackler
fuzz: add clean target...
r38193 clean:
Yuya Nishihara
fuzz: fix "make clean" to pass even if no binaries built yet
r38236 $(RM) *.o *_fuzzer \
Augie Fackler
fuzz: add clean target...
r38193 bdiff \
Augie Fackler
fuzz: new fuzzer for the mpatch code...
r38264 mpatch \
Augie Fackler
fuzz: add clean target...
r38193 xdiff
Augie Fackler
fuzz: new target to fuzz jsonescapeu8fast...
r43423 oss-fuzz: bdiff_fuzzer mpatch_fuzzer mpatch_corpus.zip xdiff_fuzzer dirs_fuzzer fncache_fuzzer jsonescapeu8fast_fuzzer manifest_fuzzer manifest_corpus.zip revlog_fuzzer revlog_corpus.zip dirstate_fuzzer dirstate_corpus.zip fm1readmarkers_fuzzer fm1readmarkers_corpus.zip
Augie Fackler
contrib: add some basic scaffolding for some fuzz test targets...
r35688
Augie Fackler
fuzz: stop building Python in the Makefile...
r41219 .PHONY: all clean oss-fuzz