#!/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 local val 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} || exit # Build list of gcc configure options depending on cpu/fpu/mode GCC_OVERRIDE_CONFIGURE= if [ x"${CPU}" != x ]; then GCC_OVERRIDE_CONFIGURE="${GCC_OVERRIDE_CONFIGURE} --set gcc_override_configure=--with-cpu=${CPU}" fi if [ x"${FPU}" != x ]; then GCC_OVERRIDE_CONFIGURE="${GCC_OVERRIDE_CONFIGURE} --set gcc_override_configure=--with-fpu=${FPU}" fi if [ x"${MODE}" != x ]; then GCC_OVERRIDE_CONFIGURE="${GCC_OVERRIDE_CONFIGURE} --set gcc_override_configure=--with-mode=${MODE}" fi ${ABE}/abe.sh --target ${TARGET} \ gcc=gcc.git@${REV} \ --set runtestflags="${EXP}=${TESTNAME}" \ ${GCC_OVERRIDE_CONFIGURE} \ --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=$(cat $sums | grep -wc FAIL) [ ${nb_fail} -gt ${GOODFAIL} ] && exit 1 # More failures than GOOD, this is a bad one nb_pass=$(cat $sums | grep -wc PASS) [ ${nb_pass} -ge ${GOODPASS} ] && exit 0 # At least as many passes as GOOD, this is a good one exit 125 # something went wrong