diff --git a/utils/llvmdo b/utils/llvmdo
index 9b1179b44e3..02013ba8b07 100755
--- a/utils/llvmdo
+++ b/utils/llvmdo
@@ -27,8 +27,8 @@
 ##===----------------------------------------------------------------------===##
 
 if test $# -lt 1 ; then
-  echo "Usage: llvmdo [-dirs "DIRNAMES..."] PROGRAM ARGS...";
-  exit 1;
+  echo "Usage: llvmdo [-dirs "DIRNAMES..."] PROGRAM ARGS..."
+  exit 1
 fi
 
 if test "$1" = "-dirs" ; then
@@ -37,13 +37,20 @@ if test "$1" = "-dirs" ; then
 elif test -z "$LLVMDO_DIRS" ; then
   LLVMDO_DIRS="include lib tools utils runtime autoconf docs test examples projects"
 fi
+if test "$1" = "" ; then
+  echo "Missing program name to run"
+  exit 1
+fi
+
 PROGRAM=`which $1`
 if test ! -x "$PROGRAM" ; then
   echo "Can't execute $1"
   exit 1
 fi
 shift;
-TOPDIR=`pwd | sed -e 's#\(.*/llvm[0-9]*\).*#\1#'`
+
+TOPDIR=`llvm-config --src-root`
+
 if test -d "$TOPDIR" ; then
   cd $TOPDIR
   case `uname -s` in
diff --git a/utils/llvmgrep b/utils/llvmgrep
index e5a08ad0051..d4369c7d764 100755
--- a/utils/llvmgrep
+++ b/utils/llvmgrep
@@ -18,8 +18,7 @@
 # details.
 ##===----------------------------------------------------------------------===##
 
-TOPDIR=`pwd | sed -e 's#\(.*/llvm[0-9]*\).*#\1#'`
-echo $TOPDIR
+TOPDIR=`llvm-config --src-root`
 if test -d "$TOPDIR" ; then
   cd $TOPDIR
   case `uname -s` in