blob: 0385890bf044ee6f273c8ad867b83f30e8440043 [file] [log] [blame]
# **********************************************************
# Copyright (c) 2004-2007 VMware, Inc. All rights reserved.
# **********************************************************
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# * Neither the name of VMware, Inc. nor the names of its contributors may be
# used to endorse or promote products derived from this software without
# specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
# DAMAGE.
# only echo if interactive
function iecho {
if [ "$PS1" ]; then # interactive
echo $*;
fi
}
iecho "sourcing .bashrc"
# HOME should already be set up to, e.g., c:/derek, but cygwin
# will change to /c/derek, so:
export COLONHOME=`cygpath -m ${HOME}`
# USERNAME should be set up, make sure it's also the username
# on the cvs server
export CVSSERVER=menlo
export CYGSYSROOT=`cygpath -u $SYSTEMROOT`
# Once-only setup things:
# for each drive, follow example here with c:
# mkdir /c
# mount c: /c
# ln -s /usr/bin/perl /usr/bin/perl
if [ "$PS1" ]; then # interactive
# set primary prompt to put host in window title
PS1="\n\[\033]0;\h: \w\007\][\@] \u@\h \w\n% "
fi
alias l='ls -Fs'
alias ll='ls -lg'
alias m='less'
alias all='ls -a'
alias mv='mv -i'
alias cp='cp -i'
alias which='type'
alias grep='grep -d skip'
alias updatebm='pushd ..; make relink; popd; cp -f ../build-opt/*.exe .'
alias tarbak='tar czf bak.tgz --exclude src/lib/papi/libpapi.a'
alias ssh='ssh -x'
alias dclick='~/dclick.exe'
alias mapfile='/c/Program\ Files/MapFileExplorer/MapFileExplorer.exe'
export DISPLAY='localhost:0.0'
export MAKE_MODE=UNIX
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:${CYGSYSROOT}/system32:${CYGSYSROOT}:/c/program files/emacs-21.3/bin:${HOME}/dr/tools"
export CVS_RSH=ssh
export CVSROOT=:ext:${USERNAME}@${CVSSERVER}:/mnt/data/cvseast
export EDITOR=/usr/bin/emacs
# get around problem of not having a common ancestor running under ssh-agent
# by sharing one ssh-agent
export SSH_ENV_VARS="${HOME}/.ssh/env_vars"
function ssh-setup {
if [ ${SSH_AGENT_PID} ]; then
echo "export SSH_AGENT_PID=${SSH_AGENT_PID}" > ${SSH_ENV_VARS}
echo "export SSH_AUTH_SOCK=${SSH_AUTH_SOCK}" >> ${SSH_ENV_VARS}
# add a little security
chmod go-rwx ${SSH_ENV_VARS}
echo "source ~/.ssh/env_vars in any other shell to use this agent";
# clean up on exit so no stale env vars file
trap "rm ${SSH_ENV_VARS}" EXIT
# can be re-tried, so ssh-add success independent of env var file
ssh-add
else
echo "error: no ssh-agent ancestor is running"
fi
}
if [ -f ${SSH_ENV_VARS} ]; then
source ${SSH_ENV_VARS}
iecho "ssh agent is ${SSH_AGENT_PID}"
fi
###########################################################################
# DYNAMORIO
export DYNAMORIO_TOOLS=${COLONHOME}/dr/tools
export DYNAMORIO_SHARE=${COLONHOME}/dr/share
export DYNAMORIO_BENCHMARKS=${COLONHOME}/dr/benchmarks
export DYNAMORIO_TREEROOT=${COLONHOME}/dr/trees
export DYNAMORIO_HOME=${DYNAMORIO_TREEROOT}/tot
export DYNAMORIO_LOGDIR=${COLONHOME}/dr/logs
export DYNAMORIO_OPTIONS=''
alias dhome='echo $DYNAMORIO_HOME'
alias dops='echo $DYNAMORIO_OPTIONS'
function usetree {
export DYNAMORIO_HOME=$DYNAMORIO_TREEROOT/$1;
iecho "DYNAMORIO_HOME=$DYNAMORIO_HOME";
}
function useops {
export DYNAMORIO_OPTIONS="$*";
iecho "DYNAMORIO_OPTIONS=$DYNAMORIO_OPTIONS";
}
function synchin {
mkdir -p $DYNAMORIO_TREEROOT/$1/src/;
rsync -auzv ${USERNAME}@${CVSSERVER}:~/dr/trees/$1/src/ $DYNAMORIO_TREEROOT/$1/src/;
cdt $1;
}
function synchout {
cdt $1;
rsync -auzv . ${USERNAME}@${CVSSERVER}:~/dr/trees/$1/src/;
}
function runreg {
synchin $1;
cd ${HOME}/dr/suite;
usetree $1;
./runregression ${DYNAMORIO_BENCHMARKS} $2;
}
function cdt { cd $DYNAMORIO_TREEROOT/$1/src; }
function cdb { cd ${DYNAMORIO_BENCHMARKS}/spec2000/*/$1; }
function cdlog { cd `ls -1dt ${DYNAMORIO_LOGDIR}/*[0-9] | head -1`; }
function dtail {
echo `ls -1dt ${DYNAMORIO_LOGDIR}/*[0-9] | head -1`;
tail -$1 `ls -1dt ${DYNAMORIO_LOGDIR}/*[0-9] | head -1`/*[Ee][Xx][Ee]*;
}
function diag2line {
dhome;
grep -E 'Call stack|frame ptr|Unrecoverable' $1 | grep -B 50 'the application' | grep -v 'Call stack' | awk '{print $NF}' | xargs address_query.pl $DYNAMORIO_HOME/exports/lib32/debug/dynamorio.dll;
}
function diag2linelast { diag2line `ls -t1 ${DYNAMORIO_LOGDIR}/*.html | head -1`; }
function cvslatest {
one=`cvs log $1 | grep '^revision' | head -1 | awk '{print $2}'`;
two=`cvs log $1 | grep '^revision' | head -2 | tail -1 | awk '{print $2}'`;
cvs diff -r $two -r $one $1;
}
function cvslatestr {
one=`cvs log -r$1 $2 | grep '^revision' | head -1 | awk '{print $2}'`;
two=`cvs log -r$1 $2 | grep '^revision' | head -2 | tail -1 | awk '{print $2}'`;
cvs diff -r $two -r $one $2;
}
function ldump { ldmp $1 `cygpath -w "${DYNAMORIO_TOOLS}/dummy.exe"`; }
alias injector='echo "DYNAMORIO_HOME=$DYNAMORIO_HOME"; time $DYNAMORIO_HOME/exports/lib32/debug/drinject.exe ${DYNAMORIO_HOME//\//\\\\}\\exports\\lib32/debug\\dynamorio.dll'
alias relinjector='echo "DYNAMORIO_HOME=$DYNAMORIO_HOME"; time $DYNAMORIO_HOME/exports/lib32/release/drinject.exe ${DYNAMORIO_HOME//\//\\\\}\\exports\\lib32/release\\dynamorio.dll'
# match linux aliases
alias rio=relinjector
alias drio=injector
alias meminjector='echo "DYNAMORIO_HOME=$DYNAMORIO_HOME"; time $DYNAMORIO_HOME/exports/lib32/debug/drinject.exe -mem ${DYNAMORIO_HOME//\//\\\\}\\exports\\lib32/debug\\dynamorio.dll'
alias memrelinjector='echo "DYNAMORIO_HOME=$DYNAMORIO_HOME"; time $DYNAMORIO_HOME/exports/lib32/release/drinject.exe -mem ${DYNAMORIO_HOME//\//\\\\}\\exports\\lib32/release\\dynamorio.dll'
alias straceops='usetree strace; useops -stats -loglevel 2 -logmask 0x1201f -stracelibname c:\\derek\\dr\\trees\\strace\\exports\\lib32/debug\\stracedr.dll'
alias drsynch='\cp $DYNAMORIO_HOME/exports/lib32/debug/dynamorio.* /c/Progra~1/Determina/SecureCore/lib/debug; chmod ogu+rwx /c/Progra~1/Determina/SecureCore/lib/debug/dynamorio.dll'
alias drrelsynch='\cp $DYNAMORIO_HOME/exports/lib32/release/dynamorio.* /c/Progra~1/Determina/SecureCore/lib/release; chmod ogu+rwx /c/Progra~1/Determina/SecureCore/lib/release/dynamorio.dll'
function setkey {
if [ -z $2 ]; then
debug="debug";
else
debug=$2;
fi
# stop agent and set to not restart on reboot
if ( svccntrl scnodemgr -show | grep -iq node ) then
net stop scnodemgr;
svccntrl scnodemgr -manual;
fi
drcontrol -app $1 -drlib `cygpath -w "${DYNAMORIO_HOME}/exports/lib32/${debug}/dynamorio.dll"`;
drcontrol -app $1 -logdir `cygpath -w ${DYNAMORIO_LOGDIR}`;
drcontrol -app $1 -options "${DYNAMORIO_OPTIONS}";
# avoid double entries -- assume not testing compat w/ AppInit
drcontrol -preinject CLEAR
# "drcontrol -preinject ON" uses DYNAMORIO_HOME in SecureCore reg key,
# which is sometimes messed up from regression suite runs:
PRELIB=$DYNAMORIO_HOME/lib/drpreinject.dll
if test -e $PRELIB ; then
drcontrol -preinject `cygpath -w $PRELIB`
else
drcontrol -preinject ON
fi
echo "using preinject: "`drcontrol -preinject LIST`
}
function resetreg {
if [ -z $1 ]; then
debug="debug";
else
debug=$1;
fi
# stop agent and set to not restart on reboot
if ( svccntrl scnodemgr -show | grep -iq node ) then
net stop scnodemgr;
svccntrl scnodemgr -manual;
fi
# may as well set global key though we're setting every app key below
drcontrol -drlib `cygpath -w "${DYNAMORIO_HOME}/exports/lib32/${debug}/dynamorio.dll"`;
drcontrol -logdir `cygpath -w ${DYNAMORIO_LOGDIR}`;
drcontrol -options "${DYNAMORIO_OPTIONS}";
# drcontrol -load not implemented, and no way to remove a string value,
# so our only options are to reproduce the slist parsing and get the right
# rununder values, or set the values we want for each app, which is a pain
# to edit manually later but oh well:
for app in `drcontrol -dump | grep Group | awk '{print $NF}'`; do
drcontrol -app $app -drlib `cygpath -w "${DYNAMORIO_HOME}/exports/lib32/${debug}/dynamorio.dll"`;
drcontrol -app $app -logdir `cygpath -w ${DYNAMORIO_LOGDIR}`;
drcontrol -app $app -options "${DYNAMORIO_OPTIONS}";
done;
### if ignore RUNUNDER this will re-make reg keys from scc file:
### # now re-build reg setup
### drcontrol -reset;
### for i in `grep -i exe /c/Program\ Files/Determina/SecureCore/config/default.scc`; do
### # pull exe name out of [HKEY_LOCAL_MACHINE\<...>\inetinfo.exe]
### j=${i##*\\};
### drcontrol -add ${j/]/};
### done;
# avoid double entries -- assume not testing compat w/ AppInit
drcontrol -preinject CLEAR
# "drcontrol -preinject ON" uses DYNAMORIO_HOME in SecureCore reg key,
# which is sometimes messed up from regression suite runs:
PRELIB=$DYNAMORIO_HOME/lib/drpreinject.dll
if test -e $PRELIB ; then
drcontrol -preinject `cygpath -w $PRELIB`
else
drcontrol -preinject ON
fi
echo "using preinject: "`drcontrol -preinject LIST`
}
###########################################################################
## VC++ Environment Variables
## From C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT
##
VSBaseDirTemp=`cygpath -ms /c/Program\ Files/Microsoft\ Visual\ Studio`
VSBaseDirBASH=`cygpath -u $VSBaseDirTemp`
# Root of Visual Developer Studio Common files.
VSCommonDirBASH="${VSBaseDirBASH}/Common"
VSCommonDir=`cygpath -d ${VSCommonDirBASH}`
# Root of Visual Developer Studio installed files.
MSDevDirBASH="${VSCommonDirBASH}/MSDev98"
MSDevDir=`cygpath -d ${MSDevDirBASH}`
# Root of Visual C++ installed files.
MSVCDirBASH="${VSBaseDirBASH}/VC98"
MSVCDir=`cygpath -d ${MSVCDirBASH}`
# VcOsDir is used to help create either a Windows 95 or Windows NT specific path.
if [ "$OS" = "Windows_NT" ]; then export VcOsDir=WINNT; else export VcOsDir=WIN95; fi
# Set environment for using Microsoft Visual C++ tools.
if [ "$OS" = "Windows_NT" ]; then PATH="$PATH:$MSDevDirBASH/BIN:$MSVCDirBASH/BIN:$VSCommonDirBASH/TOOLS/$VcOsDir:$VSCommonDirBASH/TOOLS"; fi
if [ "$OS" = "" ]; then PATH="$PATH:$MSDevDirBASH/BIN:$MSVCDirBASH/BIN:$VSCommonDirBASH/TOOLS/$VcOsDir:$VSCommonDirBASH/TOOLS:$windir/SYSTEM"; fi
export INCLUDE="$MSVCDir\\ATL\\INCLUDE;$MSVCDir\\INCLUDE;$MSVCDir\\MFC\\INCLUDE;$INCLUDE"
export LIB="$MSVCDir\\LIB;$MSVCDir\\MFC\\LIB;$LIB"
unset VSBaseDirTemp
unset VSBaseDirBASH
unset VSCommonDirBASH
unset VSCommonDir
unset MSDevDirBASH
unset MSDevDir
unset MSVCDirBASH
unset MSVCDir
#
###########################################################################
###########################################################################
# quick launching of windows apps:
#
alias notepad='injector ${SYSTEMROOT}\\system32\\notepad.exe'
alias calc='injector ${SYSTEMROOT}\\system32\\calc.exe'
alias powerpoint='injector c:\\Program\ Files\\Microsoft\ Office\\Office\\POWERPNT.EXE'
alias excel='injector c:\\Program\ Files\\Microsoft\ Office\\Office\\EXCEL.EXE'
alias access='injector c:\\Program\ Files\\Microsoft\ Office\\Office\\MSACCESS.EXE'
alias frontpage='injector c:\\Program\ Files\\Microsoft\ Office\\Office\\FRONTPG.EXE'
alias word='injector c:\\Program\ Files\\Microsoft\ Office\\Office\\WINWORD.EXE'
alias photoshop='injector C:\\Program\ Files\\Adobe\\Photoshop\ 6.0\\Photoshp.exe'
alias illustrator='injector C:\\Program\ Files\\Adobe\\Illustrator\ 9.0.1\\Illustrator.exe'
alias mediaplayer='injector C:\\Program\ Files\\Windows\ Media\ Player\\mplayer2.exe'
alias photoed='injector c:\\Program\ Files\\Common\ Files\\Microsoft\ Shared\\PhotoEd\\PhotoEd.exe'
alias netscape='injector C:\\Program\ Files\\Netscape\\Communicator\\Program\\netscape.exe -browser'
alias acroread='injector C:\\Program\ Files\\Adobe\\Acrobat\ 4.0\\Reader\\AcroRd32.exe'
alias iexplore='injector C:\\Program\ Files\\Internet\ Explorer\\IEXPLORE.EXE'
alias explorer='injector ${SYSTEMROOT}\\explorer.exe'
alias paint='injector ${SYSTEMROOT}\\System32\\mspaint.exe'
alias wordpad='injector C:\\Program\ Files\\Windows\ NT\\Accessories\\wordpad.exe'
alias freecell='injector ${SYSTEMROOT}\\System32\\freecell.exe'
alias solitaire='injector ${SYSTEMROOT}\\System32\\sol.exe'
alias minesweeper='injector ${SYSTEMROOT}\\System32\\winmine.exe'
alias pinball='injector C:\\Program\ Files\\Windows\ NT\\Pinball\\PINBALL.EXE'
alias premiere='injector C:\\Program\ Files\\Adobe\\Premiere\ 6.0\\premiere.exe'
alias vstudio='injector C:\\Program\ Files\\Microsoft\ Visual\ Studio\\Common\\MSDev98\\Bin\\MSDEV.EXE'
alias eventvwr='injector ${SYSTEMROOT}\\System32\\eventvwr.exe'
alias mozilla='injector C:\\Program\ Files\\mozilla.org\\Mozilla\\mozilla.exe'
alias defrag='injector ${SYSTEMROOT}\\System32\\mmc.exe ${SYSTEMROOT}\\System32\\dfrg.msc'
alias oocalc='injector C:\\Program\ Files\\OpenOffice.org1.0.3\\program\\ooocalc.exe'
#
###########################################################################
cd ${HOME}