From 913a6ece4051d8773d992a84547a2efc435a5afc Mon Sep 17 00:00:00 2001 From: Alessandro Comodi Date: Thu, 28 Jan 2021 16:08:55 +0100 Subject: [PATCH] pip fuzzers: enable part specific builds Signed-off-by: Alessandro Comodi --- fuzzers/int_loop.sh | 7 ++++--- fuzzers/pip_loop.mk | 43 +++++++++++++++++++++++-------------------- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/fuzzers/int_loop.sh b/fuzzers/int_loop.sh index c6616704..0dfb9a04 100755 --- a/fuzzers/int_loop.sh +++ b/fuzzers/int_loop.sh @@ -47,17 +47,18 @@ set -ex MAKE=${MAKE:-make} echo $MAKE i=1 +BUILD_DIR=${BUILD_DIR:-build} while true; do ${MAKE} ITER=$i cleaniter - ${MAKE} ITER=$i build/todo.txt - if [ ! -s build/todo.txt -a $i -eq 1 ]; then + ${MAKE} ITER=$i $BUILD_DIR/todo.txt + if [ ! -s $BUILD_DIR/todo.txt -a $i -eq 1 ]; then echo "Empty TODO file, assuming all the ints were already solved!" exit 0 fi if python3 ${XRAY_DIR}/fuzzers/int_loop_check.py $check_args ; then break fi - if [ -f build/todo/timeout ] ; then + if [ -f $BUILD_DIR/todo/timeout ] ; then echo "ERROR: timeout" exit 1 fi diff --git a/fuzzers/pip_loop.mk b/fuzzers/pip_loop.mk index 43b6e1c1..4b5e87f9 100644 --- a/fuzzers/pip_loop.mk +++ b/fuzzers/pip_loop.mk @@ -15,10 +15,13 @@ ITER ?= 1 MAKETODO_FLAGS ?=--pip-type pips_int --seg-type int SPECIMENS_DEPS ?= +BUILD_DIR ?= ${FUZDIR}/build +RUN_OK ?= run.ok + # See int_loop_check.py # rempips took 35 iters once, so set 50 as a good start point CHECK_ARGS ?= --zero-entries --timeout-iters 50 -SPECIMENS := $(addprefix build/$(ITER)/specimen_,$(shell seq -f '%03.0f' $(N))) +SPECIMENS := $(addprefix $(BUILD_DIR)/$(ITER)/specimen_,$(shell seq -f '%03.0f' $(N))) SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS)) # Individual fuzzer directory, such as ~/prjxray/fuzzers/010-lutinit export FUZDIR=$(shell pwd) @@ -29,8 +32,8 @@ all: database SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST))) include $(SELF_DIR)/pip_list.mk -$(SPECIMENS_OK): build/todo.txt $(SPECIMENS_DEPS) - mkdir -p build/$(ITER) +$(SPECIMENS_OK): $(BUILD_DIR)/todo.txt $(SPECIMENS_DEPS) + mkdir -p $(BUILD_DIR)/$(ITER) +if [ -f ${FUZDIR}/generate.sh ] ; then \ bash ${FUZDIR}/generate.sh $(subst /OK,,$@) ; \ else \ @@ -39,37 +42,37 @@ $(SPECIMENS_OK): build/todo.txt $(SPECIMENS_DEPS) touch $@ # Used 1) to see if we are done 2) pips to try in generate.tcl -build/todo.txt: piplist $(XRAY_DIR)/fuzzers/int_maketodo.py build/database/seeded - XRAY_DATABASE_DIR=${FUZDIR}/build/database \ +$(BUILD_DIR)/todo.txt: piplist $(XRAY_DIR)/fuzzers/int_maketodo.py $(BUILD_DIR)/database/seeded + XRAY_DATABASE_DIR=$(BUILD_DIR)/database \ python3 $(XRAY_DIR)/fuzzers/int_maketodo.py \ - $(MAKETODO_FLAGS) |sort >build/todo_all.txt - cat build/todo_all.txt | sort -R | head -n$(TODO_N) > build/todo.txt.tmp - mv build/todo.txt.tmp build/todo.txt + $(MAKETODO_FLAGS) |sort >$(BUILD_DIR)/todo_all.txt + cat $(BUILD_DIR)/todo_all.txt | sort -R | head -n$(TODO_N) > $(BUILD_DIR)/todo.txt.tmp + mv $(BUILD_DIR)/todo.txt.tmp $(BUILD_DIR)/todo.txt # Per iter files - mkdir -p build/$(ITER) - cp build/todo_all.txt build/todo.txt build/$(ITER)/ + mkdir -p $(BUILD_DIR)/$(ITER) + cp $(BUILD_DIR)/todo_all.txt $(BUILD_DIR)/todo.txt $(BUILD_DIR)/$(ITER)/ # All in one dir for easier trending - mkdir -p build/todo - cp build/todo_all.txt build/todo/$(ITER)_all.txt + mkdir -p $(BUILD_DIR)/todo + cp $(BUILD_DIR)/todo_all.txt $(BUILD_DIR)/todo/$(ITER)_all.txt # Initial copy for first todo.txt # Subsequent are based on updated db -build/database/seeded: - mkdir -p build/database/${XRAY_DATABASE} - cp ${XRAY_DATABASE_DIR}/${XRAY_DATABASE}/segbits*.db build/database/${XRAY_DATABASE} - touch build/database/seeded +$(BUILD_DIR)/database/seeded: + mkdir -p $(BUILD_DIR)/database/${XRAY_DATABASE} + cp ${XRAY_DATABASE_DIR}/${XRAY_DATABASE}/segbits*.db $(BUILD_DIR)/database/${XRAY_DATABASE} + touch $(BUILD_DIR)/database/seeded # FIXME: consider moving to script run: $(MAKE) clean - +$(XRAY_DIR)/fuzzers/int_loop.sh --check-args "$(CHECK_ARGS)" - touch run.ok + +env BUILD_DIR=$(BUILD_DIR) $(XRAY_DIR)/fuzzers/int_loop.sh --check-args "$(CHECK_ARGS)" + touch $(RUN_OK) clean: - rm -rf build run.ok todo + rm -rf $(BUILD_DIR) $(RUN_OK) todo # Remove iteration specific files, but keep piplist.tcl output cleaniter: - rm -rf build/$(ITER) build/todo.txt + rm -rf $(BUILD_DIR)/$(ITER) $(BUILD_DIR)/todo.txt .PHONY: all database pushdb run clean cleaniter