#!/bin/bash DYNAMORIO_ROOT=${DYNAMORIO_ROOT:=$HOME/DynamoRIO} TS_ROOT=${TS_ROOT:-`dirname $0`} TS_VARIANT=-debug TS_FLAGS=" " for arg in "$@"; do case $arg in --opt) TS_VARIANT="";; --dbg) TS_VARIANT="-debug";; --) shift; break;; -64) ARCH="amd64"; BITNESS="64";; -32) ARCH="x86"; BITNESS="32";; -*) TS_FLAGS="$TS_FLAGS $arg";; *) break;; esac shift done PROGRAM="$1" shift PARAMS="$@" # detect bitness if not given explicitly. if [ "$BITNESS" == "" ]; then file_format=`objdump -f $PROGRAM | grep -o 'file format elf.*'` echo $file_format if [ "$file_format" == "file format elf64-x86-64" ]; then BITNESS=64 ARCH=amd64 else BITNESS=32 ARCH=x86 fi fi SYMBOLS_FILE="$(mktemp symbols.XXXXXX)" nm $PROGRAM > $SYMBOLS_FILE TS_FLAGS="$TS_FLAGS --symbols=$SYMBOLS_FILE" $DYNAMORIO_ROOT/bin$BITNESS/drdeploy \ -client $TS_ROOT/bin/$ARCH-linux-debug-ts_dynamorio.so 0 "$TS_FLAGS" \ $PROGRAM $PARAMS rm $SYMBOLS_FILE