contrib/fuzz/Makefile
author Gregory Szorc <gregory.szorc@gmail.com>
Mon, 05 Mar 2018 14:09:23 -0500
changeset 37109 a532b2f54f95
parent 36765 04d64163039a
child 38173 fa0ddd5e8fff
permissions -rw-r--r--
merge: use constants for merge state record types merge.py is using multiple discrete sets of 1 and 2 letter constants to define types and behavior. To the uninitiated, the code is very difficult to reason about. I didn't even realize there were multiple sets of constants in play initially! We begin our sanity injection with merge state records. The record types (which are serialized to disk) are now defined in RECORD_* constants. Differential Revision: https://phab.mercurial-scm.org/D2698

bdiff.o: ../../mercurial/bdiff.c
	clang -g -O1 -fsanitize=fuzzer-no-link,address -c -o bdiff.o \
	  ../../mercurial/bdiff.c

bdiff: bdiff.cc bdiff.o
	clang -DHG_FUZZER_INCLUDE_MAIN=1 -g -O1 -fsanitize=fuzzer-no-link,address \
	  -I../../mercurial bdiff.cc bdiff.o -o bdiff

bdiff-oss-fuzz.o: ../../mercurial/bdiff.c
	$$CC $$CFLAGS -c -o bdiff-oss-fuzz.o ../../mercurial/bdiff.c

bdiff_fuzzer: bdiff.cc bdiff-oss-fuzz.o
	$$CXX $$CXXFLAGS -std=c++11 -I../../mercurial bdiff.cc \
	  bdiff-oss-fuzz.o -lFuzzingEngine -o $$OUT/bdiff_fuzzer

x%.o: ../../mercurial/thirdparty/xdiff/x%.c ../../mercurial/thirdparty/xdiff/*.h
	clang -g -O1 -fsanitize=fuzzer-no-link,address -c \
	  -o $@ \
	  $<

xdiff: xdiff.cc xdiffi.o xprepare.o  xutils.o
	clang -DHG_FUZZER_INCLUDE_MAIN=1 -g -O1 -fsanitize=fuzzer-no-link,address \
	  -I../../mercurial xdiff.cc \
	  xdiffi.o xprepare.o xutils.o -o xdiff

fuzz-x%.o: ../../mercurial/thirdparty/xdiff/x%.c ../../mercurial/thirdparty/xdiff/*.h
	$$CC $$CFLAGS -c \
	  -o $@ \
	  $<

xdiff_fuzzer: xdiff.cc fuzz-xdiffi.o fuzz-xprepare.o  fuzz-xutils.o
	$$CXX $$CXXFLAGS -std=c++11 -I../../mercurial xdiff.cc \
	  fuzz-xdiffi.o fuzz-xprepare.o fuzz-xutils.o \
	  -lFuzzingEngine -o $$OUT/xdiff_fuzzer

all: bdiff xdiff

oss-fuzz: bdiff_fuzzer xdiff_fuzzer

.PHONY: all oss-fuzz