diff --git a/SMP-analyze.sh b/SMP-analyze.sh index 365c5b9f60a04961c8fd2b2610995e1cefc6ead4..0537ff37a3b4e479e01462811509c5ff75c32b50 100755 --- a/SMP-analyze.sh +++ b/SMP-analyze.sh @@ -77,74 +77,32 @@ rm -f ${IDALOG} old_stty=`stty -g` || true -if [ -n "$SMPSA_PLUGIN" ]; then - OVERRIDE_PLUGIN=$GRACE_HOME/concolic/bin/liboverride_smpsa_plugin.so -fi - - # we can always use idal64, as it analyzes 32-bit binaries just fine. May use a bit more space, but isn't typically a problem. -myidal=idal64 # if LANG is set, ida can core dump unset LANG -# -# if TVHEADLESS is set, call idal on the idapro server -# -echo TVHEADLESS is $TVHEADLESS -if [ $TVHEADLESS"X" != "X" ]; then - case "$IDAROOT" in - *idapro5* ) +case "$IDAROOT" in + *idapro5* ) echo "IDAPro 5.* support depreciated" exit 1 - echo attempting server IDA - if [ ! -n $STRATA ]; then - echo Please set \$STRATA - exit -1 - fi - echo connecting... - $STRATA/tools/idaprod/idaprod_client $SMPSA_HOME $IDAROOT $PWD $STARS_ROOT_FILENAME `ulimit -t` - echo did server IDA - ;; - *idapro6*) - echo "Trying TVHEADLESS IDA" - TVHEADLESS=1 yes | LD_PRELOAD=$OVERRIDE_PLUGIN time ${IDAROOT}/$myidal -A -SSMP.idc -L${IDALOG} $STARS_OPTIONS $STARS_ROOT_FILENAME > $STARS_ROOT_FILENAME.idaoutput 2>&1 - echo "Finished TVHEADLESS IDA" - grep "FATAL ERROR: Memory exhausted." ${STARS_ROOT_FILENAME}.log > /dev/null 2>/dev/null - res=$? - if [ $res = 0 ]; then - echo "OOM Failure detected -- trying reduced mode." - rm *.id? *.i64 $STARS_ROOT_FILENAME.log - - TVHEADLESS=1 yes | LD_PRELOAD=$OVERRIDE_PLUGIN time ${IDAROOT}/$myidal -A -SSMP.idc -L${IDALOG} $STARS_OPTIONS -OSMPStaticAnalyzer:Reduced $STARS_ROOT_FILENAME > $STARS_ROOT_FILENAME.idaoutput 2>&1 - fi - - ;; - *idapro7* | *idaproCur*) + ;; + *idapro6*) + echo "Trying TVHEADLESS IDA6" + myidal=idal64 + ;; + *idapro7* | *idaproCur*) + echo "Trying TVHEADLESS IDA7" myidal=idat64 - echo "Trying TVHEADLESS IDA" - TVHEADLESS=1 LD_PRELOAD=$OVERRIDE_PLUGIN time ${IDAROOT}/$myidal -A -SSMP.idc -L${IDALOG} $STARS_OPTIONS -OSMPStaticAnalyzer:Reduced $STARS_ROOT_FILENAME > $STARS_ROOT_FILENAME.idaoutput 2>&1 - ;; + ;; *) echo Cannot determine idapro version: $IDAROOT exit 1 ;; - esac -else - LD_PRELOAD=$OVERRIDE_PLUGIN /usr/bin/time ${IDAROOT}/$myidal -A -SSMP.idc $STARS_OPTIONS $STARS_ROOT_FILENAME - grep "FATAL ERROR: Memory exhausted." ${STARS_ROOT_FILENAME}.log > /dev/null 2>/dev/null - res=$? - if [ $res = 0 ]; then - echo "OOM Failure detected -- trying reduced mode." - rm *.id? *.i64 ${STARS_ROOT_FILENAME}.log - LD_PRELOAD=$OVERRIDE_PLUGIN /usr/bin/time ${IDAROOT}/$myidal -A -SSMP.idc $STARS_OPTIONS -OSMPStaticAnalyzer:Reduced $STARS_ROOT_FILENAME - fi +esac - # SMP seems to mess up the terminal, using this to fix it. - /usr/bin/reset || true - stty $old_stty || true -fi +TVHEADLESS=1 time ${IDAROOT}/$myidal -A -SSMP.idc -L${IDALOG} $STARS_OPTIONS -OSMPStaticAnalyzer:Reduced $STARS_ROOT_FILENAME > $STARS_ROOT_FILENAME.idaoutput 2>&1 if [ -f $PEASOUP_HOME/tools/add_ifunc_attr.sh ]; then $PEASOUP_HOME/tools/add_ifunc_attr.sh ${STARS_ROOT_FILENAME} ${STARS_ROOT_FILENAME}.annot