chiark / gitweb /
changelog: Document changes in 1.6.0 and finalise version number
[adns.git] / regress / Makefile.in
index 67f867c3b78e2b5ed6de4fab3d69ab04c989e088..993c1af66e2fbda331aee965ac2bfc8d3665c43e 100644 (file)
@@ -27,20 +27,23 @@ PROGS_SYSDEP=       @PROGS_HAVE_TSEARCH@
 
 CLIENTS=       adnstest adnshost adnslogres $(PROGS_SYSDEP)
 AUTOCHDRS=     harness.h hsyscalls.h hredirect.h
-AUTOCSRCS=     hrecord.c hplayback.c hcommon.c
+AUTOCSRCS=     hrecord.c hplayback.c hcommon.c hfuzzraw.c
 include                ../settings.make
 include                $(srcdir)/../src/adns.make
 
 DIRCFLAGS=     -I../src -I$(srcdir) -I$(srcdir)/../src
 
 HCPPFLAGS=     -DADNS_REGRESS_TEST -I.
+#HCPPFLAGS+=   -DFUZZRAW_SYNC
 
 REDIRLIBOBJS=  $(addsuffix _d.o, $(basename $(LIBOBJS)))
 HARNLOBJS=     hcommon.o $(REDIRLIBOBJS)
 TARGETS=       $(addsuffix _record, $(CLIENTS)) \
-               $(addsuffix _playback, $(CLIENTS))
+               $(addsuffix _playback, $(CLIENTS)) \
+               $(addsuffix _fuzz, $(CLIENTS)) \
+               $(addsuffix _fuzzraw, $(CLIENTS))
 ADH_OBJS=      adh-main_c.o adh-opts_c.o adh-query_c.o
-ALL_OBJS=      $(HARNLOBJS) dtest.o hrecord.o hplayback.o hnonfuzz.o
+ALL_OBJS=      $(HARNLOBJS) dtest.o hrecord.o hplayback.o hnonfuzz.o hfuzz.o
 
 .PRECIOUS:     $(AUTOCSRCS) $(AUTOCHDRS)
 
@@ -52,8 +55,40 @@ check:               $(TARGETS) $(addprefix check-,$(ALL_TESTS))
                @echo
                @echo 'all tests passed or maybe skipped.'
 
+checkfuzz:             $(TARGETS) \
+                       $(addprefix checkfuzz-,$(ALL_TESTS)) \
+                       $(addprefix checkfuzzraw-,$(ALL_TESTS))
+               @echo
+               @echo 'all fuzzes passed or maybe skipped.'
+# this target is mostly useful as prep work for running the fuzzer;
+# it doesn't really test any of adns
+
+fuzzcat.d:     checkfuzz
+               $(srcdir)/categorisefuzz $(ALL_TESTS)
+               perl -ne 'print $$1,"\n" while m/\"([^"% ]{2,})\"/g' \
+                       $(srcdir)/../src/*.[ch] $(srcdir)/../client/*.[ch] \
+               | sort -u >fuzzcat.d/dictionary
+               perl -p -e 'chomp;' \
+                       -e 's/[^0-9a-z-_]/sprintf "\\x%02x", ord $$&/ige;' \
+                       -e 's/^/l$$.="/; ' \
+                       -e 's/$$/"\n/;' \
+                       fuzzcat.d/dictionary >fuzzcat.d/dictionary.afl
+
 check-%:       case-%.sys
-               @srcdir=$(srcdir) $(srcdir)/r1test $* || test $? = 5
+               @srcdir=$(srcdir) $(srcdir)/r1test $* || test $$? = 5
+
+fuzz-%:                case-%.sys $(TARGETS) make1fuzz shlib
+               srcdir=$(srcdir) $(srcdir)/make1fuzz $*
+
+fuzzraw-%:     fuzz-%
+
+.PRECIOUS: fuzz-%
+
+checkfuzz-%:   fuzz-% $(TARGETS)
+               @srcdir=$(srcdir) $(srcdir)/check1fuzz $<
+
+checkfuzzraw-%:        fuzz-% $(TARGETS)
+               @srcdir=$(srcdir) $(srcdir)/check1fuzz $<
 
 LINK_CMD=      $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@
 
@@ -63,6 +98,12 @@ LINK_CMD=    $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@
 %_playback:    %_c.o hplayback.o hnonfuzz.o $(HARNLOBJS)
                $(LINK_CMD)
 
+%_fuzz:                %_c.o hplayback.o hfuzz.o $(HARNLOBJS)
+               $(LINK_CMD)
+
+%_fuzzraw:     %_c.o hfuzzraw.o hfuzz.o $(HARNLOBJS)
+               $(LINK_CMD)
+
 .SECONDARY: $(addsuffix _c.o, $(filter-out adnshost, $(CLIENTS)))
 # Without this, make will remove <client>_c.o after building <client>.
 # This wastes effort.  (Debian bug #4073.)
@@ -76,6 +117,12 @@ LINK_CMD=   $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@
 adnshost_%:    $(ADH_OBJS) h%.o hnonfuzz.o $(HARNLOBJS)
                $(LINK_CMD)
 
+adnshost_fuzz: $(ADH_OBJS) hplayback.o hfuzz.o $(HARNLOBJS)
+               $(LINK_CMD)
+
+adnshost_fuzzraw: $(ADH_OBJS) hfuzzraw.o hfuzz.o $(HARNLOBJS)
+               $(LINK_CMD)
+
 %_d.o:         $(srcdir)/../src/%.c hredirect.h
                $(CC) $(CFLAGS) $(HCPPFLAGS) -c -g -o $@ $<