#!/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