1 #!/bin/bash 2 3 PIN_ROOT=${PIN_ROOT:-$HOME/pin} 4 TS_ROOT=${TS_ROOT:-`dirname $0`} 5 TS_VARIANT=-debug 6 MT= 7 8 UNAME_OS=`uname -o` 9 if [ "$UNAME_OS" == "GNU/Linux" ]; then 10 PIN_BINARY=${PIN_BINARY:-pin} 11 DLL=so 12 OS=linux 13 elif [ "$UNAME_OS" == "Cygwin" ]; then 14 PIN_BINARY=${PIN_BINARY:-pin.bat} 15 DLL=dll 16 OS=windows 17 fi 18 19 export MSM_THREAD_SANITIZER=1 20 export INSTRUMENTATION_FRAMEWORK=PIN_LINUX 21 22 23 FOLLOW=-follow_execv 24 PIN_FLAGS=${PIN_FLAGS:-""} 25 26 TS_FLAGS="-short_name" 27 PIN_FLAGS="" 28 29 VERBOZE=0 30 31 for arg in "$@"; do 32 case $arg in 33 --opt) TS_VARIANT="";; 34 --dbg) TS_VARIANT="-debug";; 35 --mt) MT=mt;; 36 --v=[1-9]) VERBOZE=1; TS_FLAGS="$TS_FLAGS $arg";; 37 --) shift; break;; 38 -*) TS_FLAGS="$TS_FLAGS $arg";; 39 *) break;; 40 esac 41 shift 42 done 43 44 45 ulimit -c 0 # core make very little sense here 46 47 if [ $VERBOZE == "1" ] ; then 48 printf "PIN_ROOT : %s\n" "$PIN_ROOT" 49 printf "PIN_BINARY : %s\n" "$PIN_BINARY" 50 printf "PIN_FLAGS : %s\n" "$PIN_FLAGS" 51 printf "TS_ROOT : %s\n" "$TS_ROOT" 52 printf "TS_VARIANT : %s\n" "$TS_VARIANT" 53 printf "TS_FLAGS : %s\n" "$TS_FLAGS" 54 printf "PARAMS : %s\n" "$*" 55 fi 56 57 if [ "$TS_VARIANT" == "-debug" ] ; then 58 TS_FLAGS="$TS_FLAGS -slow_asserts" 59 fi 60 61 TS_PARAMS="$@" 62 63 run() { 64 echo $@ 65 $@ 66 } 67 68 run $PIN_ROOT/$PIN_BINARY $PIN_FLAGS $FOLLOW \ 69 -t64 $TS_ROOT/bin/amd64-$OS${TS_VARIANT}-ts_pin$MT.$DLL \ 70 -t $TS_ROOT/bin/x86-$OS${TS_VARIANT}-ts_pin$MT.$DLL \ 71 $TS_FLAGS -- $TS_PARAMS 72 73