diff --git a/benchmarks/README.md b/benchmarks/README.md
index 2616a51..fe447d1 100644
--- a/benchmarks/README.md
+++ b/benchmarks/README.md
@@ -1,48 +1,44 @@
-Bionic Benchmarks
-=================
+# Bionic Benchmarks
 
-Bionic benchmarks is a command line tool for measuring the runtimes of libc functions. It is built
-on top of [Google benchmarks](https://github.com/google/benchmark) with some additions to organize
+[TOC]
+
+## libc benchmarks (bionic-benchmarks)
+
+`bionic-benchmarks` is a command line tool for measuring the runtimes of libc functions. It is built
+on top of [Google Benchmark](https://github.com/google/benchmark) with some additions to organize
 tests into suites.
 
-Running the benchmarks
-----------------------
-
 ### Device benchmarks
 
-    $ mma
-    $ adb remount
-    $ adb sync
+    $ mmma bionic/benchmarks
+    $ adb root
+    $ adb sync data
     $ adb shell /data/benchmarktest/bionic-benchmarks/bionic-benchmarks
     $ adb shell /data/benchmarktest64/bionic-benchmarks/bionic-benchmarks
 
-When operated without specifying an xml file, the default is to run all
-of the benchmarks in alphabetical order.
-
-You can use `--benchmark_filter=getpid` to just run benchmarks with "getpid"
-in their name.
+By default, `bionic-benchmarks` runs all of the benchmarks in alphabetical order. Pass
+`--benchmark_filter=getpid` to run just the benchmarks with "getpid" in their name.
 
 ### Host benchmarks
 
-See the benchmarks/run-on-host.sh script. The host benchmarks can be run
-with 32 bit or 64 bit bionic, or the host glibc.
+See the `benchmarks/run-on-host.sh` script. The host benchmarks can be run with 32-bit or 64-bit
+Bionic, or the host glibc.
 
-## Suites
+### XML suites
 
 Suites are stored in the `suites/` directory and can be chosen with the command line flag
-'--bionic_xml'.
+`--bionic_xml`.
 
-To choose a specific xml file, use the `--bionic_xml=FILE.XML` option. By default, this
-option searches for the xml file in the `suites/` directory. If it doesn't exist
-in that directory then the file will be found as relative to the current
-directory. If the option specifies the full path to an xml file such as
-`/data/nativetest/suites/example.xml`, it will be used as is.
+To choose a specific XML file, use the `--bionic_xml=FILE.XML` option. By default, this option
+searches for the XML file in the `suites/` directory. If it doesn't exist in that directory, then
+the file will be found as relative to the current directory. If the option specifies the full path
+to an XML file such as `/data/nativetest/suites/example.xml`, it will be used as-is.
 
-If no xml file is specified through the command-line option, the default is to use `suites/full.xml`.
-However, for the host bionic benchmarks (bionic-benchmarks-glibc), the default
-is to use `suites/host.xml`.
+If no XML file is specified through the command-line option, the default is to use `suites/full.xml`.
+However, for the host bionic benchmarks (`bionic-benchmarks-glibc`), the default is to use
+`suites/host.xml`.
 
-### Format
+### XML suite format
 
 The format for a benchmark is:
 
@@ -55,19 +51,19 @@
 </fn>
 ```
 
-xml-specified values for iterations and cpu take precedence over those specified via command line
-(via '--bionic_iterations' and '--bionic_cpu', respectively.)
+XML-specified values for iterations and cpu take precedence over those specified via command line
+(via `--bionic_iterations` and `--bionic_cpu`, respectively.)
 
 To make small changes in runs, you can also schedule benchmarks by passing in their name and a
-space-separated list of arguments via the 'bionic_extra' command line flag, e.g.
-'--bionic_extra="BM_string_memcpy AT_COMMON_SIZES"' or '--bionic_extra="BM_string_memcmp 32 8 8"'
+space-separated list of arguments via the `--bionic_extra` command line flag, e.g.
+`--bionic_extra="BM_string_memcpy AT_COMMON_SIZES"` or `--bionic_extra="BM_string_memcmp 32 8 8"`
 
 Note that benchmarks will run normally if extra arguments are passed in, and it will fail
 with a segfault if too few are passed in.
 
 ### Shorthand
 
-For the sake of brevity, multiple runs can be scheduled in one xml element by putting one of the
+For the sake of brevity, multiple runs can be scheduled in one XML element by putting one of the
 following in the args field:
 
     NUM_PROPS
@@ -81,5 +77,112 @@
 
 ### Unit Tests
 
-Bionic benchmarks also has its own set of unit tests, which can be run from the binary in
+`bionic-benchmarks` also has its own set of unit tests, which can be run from the binary in
 `/data/nativetest[64]/bionic-benchmarks-tests`
+
+## Process startup time (bionic-spawn-benchmarks)
+
+The `spawn/` subdirectory has a few benchmarks measuring the time used to start simple programs
+(e.g. Toybox's `true` and `sh -c true`). Run it on a device like so:
+
+    m bionic-spawn-benchmarks
+    adb root
+    adb sync data
+    adb shell /data/benchmarktest/bionic-spawn-benchmarks/bionic-spawn-benchmarks
+    adb shell /data/benchmarktest64/bionic-spawn-benchmarks/bionic-spawn-benchmarks
+
+Google Benchmark reports both a real-time figure ("Time") and a CPU usage figure. For these
+benchmarks, the CPU measurement only counts time spent in the thread calling `posix_spawn`, not that
+spent in the spawned process. The real-time is probably more useful, and it is the figure used to
+determine the iteration count.
+
+Locking the CPU frequency seems to improve the results of these benchmarks significantly, and it
+reduces variability.
+
+## Google Benchmark notes
+
+### Repetitions
+
+Google Benchmark uses two settings to control how many times to run each benchmark, "iterations" and
+"repetitions". By default, the repetition count is one. Google Benchmark runs the benchmark a few
+times to determine a sufficiently-large iteration count.
+
+Google Benchmark can optionally run a benchmark run repeatedly and report statistics (median, mean,
+standard deviation) for the runs. To do so, pass the `--benchmark_repetitions` option, e.g.:
+
+    # ./bionic-benchmarks --benchmark_filter=BM_stdlib_strtoll --benchmark_repetitions=4
+    ...
+    -------------------------------------------------------------------
+    Benchmark                         Time             CPU   Iterations
+    -------------------------------------------------------------------
+    BM_stdlib_strtoll              27.7 ns         27.7 ns     25290525
+    BM_stdlib_strtoll              27.7 ns         27.7 ns     25290525
+    BM_stdlib_strtoll              27.7 ns         27.7 ns     25290525
+    BM_stdlib_strtoll              27.8 ns         27.7 ns     25290525
+    BM_stdlib_strtoll_mean         27.7 ns         27.7 ns            4
+    BM_stdlib_strtoll_median       27.7 ns         27.7 ns            4
+    BM_stdlib_strtoll_stddev      0.023 ns        0.023 ns            4
+
+There are 4 runs, each with 25290525 iterations. Measurements for the individual runs can be
+suppressed if they aren't needed:
+
+    # ./bionic-benchmarks --benchmark_filter=BM_stdlib_strtoll --benchmark_repetitions=4 --benchmark_report_aggregates_only
+    ...
+    -------------------------------------------------------------------
+    Benchmark                         Time             CPU   Iterations
+    -------------------------------------------------------------------
+    BM_stdlib_strtoll_mean         27.8 ns         27.7 ns            4
+    BM_stdlib_strtoll_median       27.7 ns         27.7 ns            4
+    BM_stdlib_strtoll_stddev      0.043 ns        0.043 ns            4
+
+### CPU frequencies
+
+To get consistent results between runs, it can sometimes be helpful to restrict a benchmark to
+specific cores, or to lock cores at specific frequencies. Some phones have a big.LITTLE core setup,
+or at least allow some cores to run at higher frequencies than others.
+
+A core can be selected for `bionic-benchmarks` using the `--bionic_cpu` option or using the
+`taskset` utility. e.g. A Pixel 3 device has 4 Kryo 385 Silver cores followed by 4 Gold cores:
+
+    blueline:/ # /data/benchmarktest64/bionic-benchmarks/bionic-benchmarks --benchmark_filter=BM_stdlib_strtoll --bionic_cpu=0
+    ...
+    ------------------------------------------------------------
+    Benchmark                  Time             CPU   Iterations
+    ------------------------------------------------------------
+    BM_stdlib_strtoll       64.2 ns         63.6 ns     11017493
+
+    blueline:/ # /data/benchmarktest64/bionic-benchmarks/bionic-benchmarks --benchmark_filter=BM_stdlib_strtoll --bionic_cpu=4
+    ...
+    ------------------------------------------------------------
+    Benchmark                  Time             CPU   Iterations
+    ------------------------------------------------------------
+    BM_stdlib_strtoll       21.8 ns         21.7 ns     33167103
+
+A similar result can be achieved using `taskset`. The first parameter is a bitmask of core numbers
+to pass to `sched_setaffinity`:
+
+    blueline:/ # taskset f /data/benchmarktest64/bionic-benchmarks/bionic-benchmarks --benchmark_filter=BM_stdlib_strtoll
+    ...
+    ------------------------------------------------------------
+    Benchmark                  Time             CPU   Iterations
+    ------------------------------------------------------------
+    BM_stdlib_strtoll       64.3 ns         63.6 ns     10998697
+
+    blueline:/ # taskset f0 /data/benchmarktest64/bionic-benchmarks/bionic-benchmarks --benchmark_filter=BM_stdlib_strtoll
+    ...
+    ------------------------------------------------------------
+    Benchmark                  Time             CPU   Iterations
+    ------------------------------------------------------------
+    BM_stdlib_strtoll       21.3 ns         21.2 ns     33094801
+
+To lock the CPU frequency, use the sysfs interface at `/sys/devices/system/cpu/cpu*/cpufreq/`.
+Changing the scaling governor to `performance` suppresses the warning that Google Benchmark
+otherwise prints:
+
+    ***WARNING*** CPU scaling is enabled, the benchmark real time measurements may be noisy and will incur extra overhead.
+
+Some devices have a `perf-setup.sh` script that locks CPU and GPU frequencies. Some TradeFed
+benchmarks appear to be using the script. For more information:
+ * run `get_build_var BOARD_PERFSETUP_SCRIPT`
+ * run `m perf-setup.sh` to install the script into `${OUT}/data/local/tmp/perf-setup.sh`
+ * see: https://android.googlesource.com/platform/platform_testing/+/refs/heads/master/scripts/perf-setup/
diff --git a/benchmarks/spawn/Android.bp b/benchmarks/spawn/Android.bp
new file mode 100644
index 0000000..1295e2b
--- /dev/null
+++ b/benchmarks/spawn/Android.bp
@@ -0,0 +1,99 @@
+//
+// Copyright (C) 2019 The Android Open Source Project
+// 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.
+//
+// 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 THE
+// COPYRIGHT OWNER 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.
+//
+
+cc_benchmark {
+    name: "bionic-spawn-benchmarks",
+    srcs: ["spawn_benchmarks.cpp"],
+    static_libs: ["libbase"],
+
+    // Install these binaries in the same directory as the main benchmark binary.
+    data: [
+        ":bench_noop",
+        ":bench_noop_nostl",
+        ":bench_noop_static",
+    ],
+
+    host_supported: true,
+    target: {
+        darwin: { enabled: false },
+        windows: { enabled: false },
+    },
+}
+
+cc_defaults {
+    name: "noop_binary_defaults",
+
+    compile_multilib: "both",
+    multilib: {
+        lib32: { suffix: "32" },
+        lib64: { suffix: "64" },
+    },
+
+    host_supported: true,
+    target: {
+        darwin: { enabled: false },
+        windows: { enabled: false },
+    },
+}
+
+cc_binary {
+    defaults: ["noop_binary_defaults"],
+    name: "bench_noop",
+    srcs: ["noop.cpp"],
+
+    // When this binary is installed to host/linux-x86/bin, its runpath is ${ORIGIN}/../lib[64],
+    // which is fine for finding host/linux-x86/lib[64]/libc++.so. When it's installed to
+    // host/linux-x86/benchmarktest[64]/bionic-spawn-benchmarks, the runpath needs an extra "..".
+    target: {
+        linux_glibc_x86: {
+            ldflags: [
+                "-Wl,--rpath,${ORIGIN}/../../lib",
+            ],
+        },
+        linux_glibc_x86_64: {
+            ldflags: [
+                "-Wl,--rpath,${ORIGIN}/../../lib64",
+            ],
+        },
+    }
+}
+
+cc_binary {
+    defaults: ["noop_binary_defaults"],
+    name: "bench_noop_nostl",
+    srcs: ["noop.cpp"],
+    stl: "none",
+}
+
+cc_binary {
+    defaults: ["noop_binary_defaults"],
+    name: "bench_noop_static",
+    srcs: ["noop.cpp"],
+    static_executable: true,
+    stl: "libc++_static",
+}
diff --git a/benchmarks/spawn/AndroidTest.xml b/benchmarks/spawn/AndroidTest.xml
new file mode 100644
index 0000000..9331675
--- /dev/null
+++ b/benchmarks/spawn/AndroidTest.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+     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.
+
+     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 THE
+     COPYRIGHT OWNER 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.
+-->
+<configuration description="Runs bionic-spawn-benchmarks.">
+    <option name="test-suite-tag" value="apct" />
+
+    <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
+        <option name="cleanup" value="true" />
+        <option name="push" value="bionic-spawn-benchmarks->/data/local/tmp/bionic-spawn-benchmarks" />
+    </target_preparer>
+
+    <!-- TODO(b/120549168): This seems necessary for consistent results on a walleye, but it's not working with atest
+    <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
+        <option name="push" value="perf-setup.sh->/data/local/tmp/perf-setup.sh" />
+        <option name="post-push" value="chmod 755 /data/local/tmp/perf-setup.sh;/data/local/tmp/perf-setup.sh" />
+    </target_preparer>
+    -->
+
+    <test class="com.android.tradefed.testtype.GoogleBenchmarkTest" >
+        <option name="native-benchmark-device-path" value="/data/local/tmp" />
+        <option name="benchmark-module-name" value="bionic-spawn-benchmarks" />
+
+        <!-- The GoogleBenchmarkTest class ordinarily expects every file in the benchmark's
+             directory (recursively) to be a google-benchmark binary, so we need this setting to
+             avoid failing on the bench_* noop programs, which don't output benchmark results. -->
+        <option name="file-exclusion-filter-regex" value=".*/bench_[^/]*$"  />
+    </test>
+
+</configuration>
diff --git a/benchmarks/spawn/noop.cpp b/benchmarks/spawn/noop.cpp
new file mode 100644
index 0000000..1f1cac0
--- /dev/null
+++ b/benchmarks/spawn/noop.cpp
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ * 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.
+ *
+ * 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 THE
+ * COPYRIGHT OWNER 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.
+ */
+
+int main() {
+  return 0;
+}
diff --git a/benchmarks/spawn/spawn_benchmarks.cpp b/benchmarks/spawn/spawn_benchmarks.cpp
new file mode 100644
index 0000000..e8f7c17
--- /dev/null
+++ b/benchmarks/spawn/spawn_benchmarks.cpp
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ * 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.
+ *
+ * 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 THE
+ * COPYRIGHT OWNER 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.
+ */
+
+#include <errno.h>
+#include <spawn.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+#include <android-base/file.h>
+#include <android-base/stringprintf.h>
+#include <benchmark/benchmark.h>
+
+static std::string test_program(const char* name) {
+#if defined(__LP64__)
+  return android::base::GetExecutableDirectory() + "/" + name + "64";
+#else
+  return android::base::GetExecutableDirectory() + "/" + name + "32";
+#endif
+}
+
+extern char** environ;
+
+static void BM_spawn_test(benchmark::State& state, const char* const* argv) {
+  for (auto _ : state) {
+    pid_t child = 0;
+    if (int spawn_err = posix_spawn(&child, argv[0], nullptr, nullptr, const_cast<char**>(argv),
+                                    environ)) {
+      state.SkipWithError(android::base::StringPrintf(
+          "posix_spawn of %s failed: %s", argv[0], strerror(spawn_err)).c_str());
+      break;
+    }
+
+    int wstatus = 0;
+    const pid_t wait_result = TEMP_FAILURE_RETRY(waitpid(child, &wstatus, 0));
+    if (wait_result != child) {
+      state.SkipWithError(android::base::StringPrintf(
+          "waitpid on pid %d for %s failed: %s",
+          static_cast<int>(child), argv[0], strerror(errno)).c_str());
+      break;
+    }
+    if (WIFEXITED(wstatus) && WEXITSTATUS(wstatus) == 127) {
+      state.SkipWithError(android::base::StringPrintf("could not exec %s", argv[0]).c_str());
+      break;
+    }
+  }
+}
+
+#define SPAWN_BENCHMARK(name, ...)                                                    \
+    BENCHMARK_CAPTURE(BM_spawn_test, name, (const char*[]) { __VA_ARGS__, nullptr })  \
+        ->UseRealTime()                                                               \
+        ->Unit(benchmark::kMicrosecond)                                               \
+
+SPAWN_BENCHMARK(noop, test_program("bench_noop").c_str());
+SPAWN_BENCHMARK(noop_nostl, test_program("bench_noop_nostl").c_str());
+SPAWN_BENCHMARK(noop_static, test_program("bench_noop_static").c_str());
+
+// Android has a /bin -> /system/bin symlink, but use /system/bin explicitly so we can more easily
+// compare Bionic-vs-glibc on a Linux desktop machine.
+#if defined(__GLIBC__)
+
+SPAWN_BENCHMARK(bin_true, "/bin/true");
+SPAWN_BENCHMARK(sh_true, "/bin/sh", "-c", "true");
+
+#elif defined(__ANDROID__)
+
+SPAWN_BENCHMARK(system_bin_true, "/system/bin/true");
+SPAWN_BENCHMARK(vendor_bin_true, "/vendor/bin/true");
+SPAWN_BENCHMARK(system_sh_true, "/system/bin/sh", "-c", "true");
+SPAWN_BENCHMARK(vendor_sh_true, "/vendor/bin/sh", "-c", "true");
+
+#endif
+
+BENCHMARK_MAIN();
