xref: /aosp_15_r20/external/AFLplusplus/test/checkcommit.sh (revision 08b48e0b10e97b33e7b60c5b6e2243bd915777f2)
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