#!/bin/bash # This script is a helper to bisect GCC regressions. # Inputs (as env. variables): # EXP: name of .exp file to run # TESTNAME: name of test to run # TARGET # CPU # FPU # MODE # SIMU # TARGETBOARD: additional test flags # Check if the variable NAME is set check_set() { name=$1 eval val=\$${name} [ x$val = x ] && echo $1 not set && exit 1 } check_set EXP check_set TESTNAME check_set TARGET #check_set CPU #check_set FPU #check_set MODE #check_set SIMU REV=$(git show --format=%H -s BISECT_HEAD) echo AT `date` BISECT TRYING: ${REV} git --no-pager show $REV set -x cd ${RUNDIR} ${ABE}/abe.sh --target ${TARGET} gcc=gcc.git@${REV} --set runtestflags="${EXP}=${TESTNAME}" --build all --check gcc --excludecheck gdb >& gcc-${REV}.log [ $? -ne 0 ] && exit 125 sums=`find builds/*/${TARGET}/gcc.git~master_rev_${REV}-stage2/ -name "*.sum"` nb_fail=$(grep ${TESTNAME} $sums | grep -c FAIL) [ ${nb_fail} -gt ${GOODFAIL} ] && exit 1 # More failures than GOOD, this is a bad one nb_pass=$(grep ${TESTNAME} $sums | grep -c PASS) [ ${nb_pass} -ge ${GOODPASS} ] && exit 0 # At least as many passes as GOOD, this is a good one exit 125 # something went wrong