diff --git a/run_tests.py b/run_tests.py
index f510c41..ebbce05 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -142,6 +142,14 @@
     return extract_build_cmds(commands, os.path.basename(target))
 
 
+def setup_test_directory():
+    """Prepares a device test directory for use by the shell user."""
+    device_dir = '/data/local/tmp/libcxx'
+    check_call(['adb', 'shell', 'rm', '-rf', device_dir])
+    check_call(['adb', 'shell', 'mkdir', '-p', device_dir])
+    check_call(['adb', 'shell', 'chown', '-R', 'shell:shell', device_dir])
+
+
 def main():
     """Program entry point."""
     logging.basicConfig(level=logging.INFO)
@@ -176,6 +184,9 @@
         have_filter_args = True
         break  # No need to keep scanning.
 
+    if not args.host:
+        setup_test_directory()
+
     lit_args = [
         '-sv', android_mode_arg, cxx_under_test_arg, cxx_template_arg,
         link_template_arg, libcxx_site_cfg_arg, libcxxabi_site_cfg_arg
diff --git a/utils/libcxx/android/executors.py b/utils/libcxx/android/executors.py
index 7bf3413..d3c5d68 100644
--- a/utils/libcxx/android/executors.py
+++ b/utils/libcxx/android/executors.py
@@ -16,7 +16,7 @@
 
     def _remote_temp(self, is_dir):
         dir_arg = '-d' if is_dir else ''
-        cmd = 'mktemp -q {} /data/local/tmp/libcxx.XXXXXXXXXX'.format(dir_arg)
+        cmd = 'mktemp -q {} /data/local/tmp/libcxx/temp.XXXXXX'.format(dir_arg)
         _, temp_path, err, exitCode = self._execute_command_remote([cmd])
         temp_path = temp_path.strip()
         if exitCode != 0:
@@ -32,7 +32,7 @@
             adb_cmd.extend(['-s', self.serial])
 
         delimiter = 'x'
-        probe_cmd = ' '.join(cmd) + '; echo {}$?'.format(delimiter)
+        probe_cmd = 'su shell {}; echo {}$?'.format(' '.join(cmd), delimiter)
 
         env_cmd = []
         if env is not None:
diff --git a/utils/libcxx/android/test/format.py b/utils/libcxx/android/test/format.py
index 228272c..e5252a8 100644
--- a/utils/libcxx/android/test/format.py
+++ b/utils/libcxx/android/test/format.py
@@ -52,32 +52,6 @@
     def _wd_path(self, test_name, file_name):
         return os.path.join(self._working_directory(test_name), file_name)
 
-    def _build(self, exec_path, source_path, compile_only=False,
-               use_verify=False):
-        # pylint: disable=protected-access
-        cmd, report, rc = libcxx.test.format.LibcxxTestFormat._build(
-            self, exec_path, source_path, compile_only, use_verify)
-        if rc != 0:
-            return cmd, report, rc
-
-        try:
-            exec_file = os.path.basename(exec_path)
-
-            adb.mkdir(self._working_directory(exec_file))
-            adb.push(exec_path, self._wd_path(exec_file, exec_file))
-
-            # Push any .dat files in the same directory as the source to the
-            # working directory.
-            src_dir = os.path.dirname(source_path)
-            data_files = [f for f in os.listdir(src_dir) if f.endswith('.dat')]
-            for data_file in data_files:
-                df_path = os.path.join(src_dir, data_file)
-                df_dev_path = self._wd_path(exec_file, data_file)
-                adb.push(df_path, df_dev_path)
-            return cmd, report, rc
-        except adb.AdbError as ex:
-            return self._make_report(ex.cmd, ex.out, ex.err, ex.exit_code)
-
     def _clean(self, exec_path):
         exec_file = os.path.basename(exec_path)
         cmd = ['adb', 'shell', 'rm', '-rf', self._working_directory(exec_file)]
