diff --git a/tools/ps_analyze.sh b/tools/ps_analyze.sh
index ca171a076026d9e8770c0f601f75e01b1cfdfe67..65a684e6b5b9dd5b26b847199e76a3c768d018e8 100755
--- a/tools/ps_analyze.sh
+++ b/tools/ps_analyze.sh
@@ -904,10 +904,25 @@ perform_step zipr clone,fill_in_indtargs,fill_in_cfg,meds2pdb $ZIPR_HOME/bin/zip
 is_step_on toctou
 if [[ $? -eq 1 && -e $GRACE_HOME/ps_concurrency/toctou_tool/libtoctou_tool.so ]];
 then
+	echo Performing step toctou ...
     cp $GRACE_HOME/ps_concurrency/toctou_tool/libtoctou_tool.so libtoctou_tool.so
     $PEASOUP_HOME/tools/update_env_var.sh DO_TOCTOU 1
+else
+    echo Skipping step toctou.
+fi
+
+# copy deadlock tool here if it exists
+is_step_on deadlock
+if [[ $? -eq 1 && -e $GRACE_HOME/ps_concurrency/deadlock/libdeadlock_tool.so ]];
+then
+	echo Performing step deadlock ...
+    cp $GRACE_HOME/ps_concurrency/deadlock/libdeadlock_tool.so libdeadlock_tool.so
+    $PEASOUP_HOME/tools/update_env_var.sh DO_DEADLOCK 1
+else
+    echo Skipping step deadlock
 fi
 
+
 #
 # create a report for all of ps_analyze.
 #
diff --git a/tools/ps_run.sh b/tools/ps_run.sh
index 2c396112e1ddfa6f44bcb10b6825d3bb42457a5c..614046ac49e215688c0d6d3280403edb5c1c5a2c 100755
--- a/tools/ps_run.sh
+++ b/tools/ps_run.sh
@@ -57,6 +57,16 @@ if [ "$DO_TOCTOU" = "1" ]; then
 	APP_LD_PRELOAD="$datapath/libtoctou_tool.so:$APP_LD_PRELOAD"
 fi
 
+DO_DEADLOCK=0
+if [ "$DO_DEADLOCK" = "1" ]; then
+	if [ -z $DEADLOCK_LOG ]; then
+		DEADLOCK_LOG=$datapath/deadlock.log
+	fi
+	command="$command DEADLOCK_LOG=$DEADLOCK_LOG
+	"
+	APP_LD_PRELOAD="$datapath/libdeadlock_tool.so:$APP_LD_PRELOAD"
+fi
+
 
 # these are now defaulted nicely by strata for x86-32 and x86-64.
 #STRATA_IBTC=1