1*08b48e0bSAndroid Build Coastguard Worker#!/bin/sh 2*08b48e0bSAndroid Build Coastguard WorkerCMDLINE="/prg/tests/normal/tiff-4.0.4/tools/thumbnail @@ /dev/null" 3*08b48e0bSAndroid Build Coastguard WorkerINDIR="/prg/tests/normal/tiff-4.0.4/in-small" 4*08b48e0bSAndroid Build Coastguard Worker 5*08b48e0bSAndroid Build Coastguard Workertest -z "$1" -o -n "$4" && { 6*08b48e0bSAndroid Build Coastguard Worker echo "Syntax: $0 commit-id <indir> \"<cmdline>\"" 7*08b48e0bSAndroid Build Coastguard Worker echo 8*08b48e0bSAndroid Build Coastguard Worker echo "Switches to the defined commit ID, compiles with profiling and runs" 9*08b48e0bSAndroid Build Coastguard Worker echo "afl-fuzz on a defind target and input directory, saving timing," 10*08b48e0bSAndroid Build Coastguard Worker echo "fuzzer_stats and profiling output to \"<commit-id>.out\"" 11*08b48e0bSAndroid Build Coastguard Worker echo "Honors CFLAGS and LDFLAGS" 12*08b48e0bSAndroid Build Coastguard Worker echo 13*08b48e0bSAndroid Build Coastguard Worker echo "Defaults:" 14*08b48e0bSAndroid Build Coastguard Worker echo " indir: \"$INDIR\"" 15*08b48e0bSAndroid Build Coastguard Worker echo " cmdline: \"$CMDLINE\"" 16*08b48e0bSAndroid Build Coastguard Worker exit 1 17*08b48e0bSAndroid Build Coastguard Worker} 18*08b48e0bSAndroid Build Coastguard Worker 19*08b48e0bSAndroid Build Coastguard WorkerC=$1 20*08b48e0bSAndroid Build Coastguard Workertest -n "$2" && INDIR=$2 21*08b48e0bSAndroid Build Coastguard Workertest -n "$3" && CMDLINE=$3 22*08b48e0bSAndroid Build Coastguard Worker 23*08b48e0bSAndroid Build Coastguard Workergit checkout "$C" || { echo "CHECKOUT FAIL $C" > $C.out ; exit 1 ; } 24*08b48e0bSAndroid Build Coastguard Workerexport AFL_BENCH_JUST_ONE=1 25*08b48e0bSAndroid Build Coastguard Workertest -z "$CFLAGS" && CFLAGS="-O3 -funroll-loops" 26*08b48e0bSAndroid Build Coastguard Workerexport CFLAGS="$CFLAGS -pg" 27*08b48e0bSAndroid Build Coastguard Workerexport LDFLAGS="$LDFLAGS -pg" 28*08b48e0bSAndroid Build Coastguard Workermake >/dev/null 2>&1 || echo ERROR: BUILD FAILURE 29*08b48e0bSAndroid Build Coastguard Workertest -x ./afl-fuzz || { echo "BUILD FAIL $C" > $C.out ; make clean ; exit 1 ; } 30*08b48e0bSAndroid Build Coastguard Worker 31*08b48e0bSAndroid Build Coastguard WorkerSTART=`date +%s` 32*08b48e0bSAndroid Build Coastguard Workerecho $START > $C.out 33*08b48e0bSAndroid Build Coastguard Workertime nice -n -20 ./afl-fuzz -i "$INDIR" -s 123 -o out-profile -- $CMDLINE 2>> $C.out 34*08b48e0bSAndroid Build Coastguard WorkerSTOP=`date +%s` 35*08b48e0bSAndroid Build Coastguard Workerecho $STOP >> $C.out 36*08b48e0bSAndroid Build Coastguard Workerecho RUNTIME: `expr $STOP - $START` >> $C.out 37*08b48e0bSAndroid Build Coastguard Workercat out-profile/default/fuzzer_stats >> $C.out 38*08b48e0bSAndroid Build Coastguard Workergprof ./afl-fuzz gmon.out >> $C.out 39*08b48e0bSAndroid Build Coastguard Worker 40*08b48e0bSAndroid Build Coastguard Workermake clean >/dev/null 2>&1 41*08b48e0bSAndroid Build Coastguard Workerrm -rf out-profile gmon.out 42