diff --git a/tests/Android.mk b/tests/Android.mk
index 38d85f8..3150655 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -212,19 +212,36 @@
 include $(LOCAL_PATH)/Android.build.mk
 
 # -----------------------------------------------------------------------------
+# Library of bionic customized gtest main function.
+# -----------------------------------------------------------------------------
+libBionicGtestMain_src_files := gtest_main.cpp
+
+libBionicGtestMain_cflags := $(test_cflags)
+
+libBionicGtestMain_cppflags := $(test_cppflags)
+
+module := libBionicGtestMain
+module_tag := optional
+build_type := target
+build_target := STATIC_TEST_LIBRARY
+include $(LOCAL_PATH)/Android.build.mk
+build_type := host
+include $(LOCAL_PATH)/Android.build.mk
+
+# -----------------------------------------------------------------------------
 # Tests for the device using bionic's .so. Run with:
 #   adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests32
 #   adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests64
 # -----------------------------------------------------------------------------
 bionic-unit-tests_whole_static_libraries := \
     libBionicTests \
+    libBionicGtestMain \
 
 bionic-unit-tests_static_libraries := \
     libtinyxml2 \
     liblog \
 
 bionic-unit-tests_src_files := \
-    gtest_main.cpp \
     atexit_test.cpp \
     dl_test.cpp \
     dlext_test.cpp \
@@ -268,6 +285,7 @@
 # -----------------------------------------------------------------------------
 bionic-unit-tests-static_whole_static_libraries := \
     libBionicTests \
+    libBionicGtestMain \
 
 bionic-unit-tests-static_static_libraries := \
     libm \
@@ -277,9 +295,6 @@
     libtinyxml2 \
     liblog \
 
-bionic-unit-tests-static_src_files := \
-    gtest_main.cpp \
-
 bionic-unit-tests-static_force_static_executable := true
 
 # libc and libc++ both define std::nothrow. libc's is a private symbol, but this
@@ -302,7 +317,6 @@
 ifeq ($(HOST_OS)-$(HOST_ARCH),$(filter $(HOST_OS)-$(HOST_ARCH),linux-x86 linux-x86_64))
 
 bionic-unit-tests-glibc_src_files := \
-    gtest_main.cpp \
     atexit_test.cpp \
     dlfcn_test.cpp \
     dl_test.cpp \
@@ -315,6 +329,7 @@
 
 bionic-unit-tests-glibc_whole_static_libraries := \
     libBionicStandardTests \
+    libBionicGtestMain \
 
 bionic-unit-tests-glibc_ldlibs := \
     -lrt -ldl -lutil \
diff --git a/tests/gtest_main.cpp b/tests/gtest_main.cpp
index 6c5023b..99cd4ee 100644
--- a/tests/gtest_main.cpp
+++ b/tests/gtest_main.cpp
@@ -319,18 +319,6 @@
   fflush(stdout);
 }
 
-static void TestcaseTimePrint(const TestCase& testcase) {
-  int64_t testcase_time = 0;
-  for (size_t i = 0; i < testcase.TestCount(); ++i) {
-    testcase_time += testcase.GetTestTime(i);
-  }
-  printf("%zu %s from %s (%lld ms total)\n", testcase.TestCount(),
-                                             (testcase.TestCount() == 1) ? "test" : "tests",
-                                             testcase.GetName().c_str(),
-                                             testcase_time / 1000000LL);
-  fflush(stdout);
-}
-
 static void OnTestIterationEndPrint(const std::vector<TestCase>& testcase_list, size_t /*iteration*/,
                                     int64_t elapsed_time) {
 
@@ -364,10 +352,6 @@
     }
   }
 
-  for (auto const& testcase : testcase_list) {
-    TestcaseTimePrint(testcase);
-  }
-
   ColoredPrintf(COLOR_GREEN,  "[==========] ");
   printf("%zu %s from %zu %s ran.", test_count, (test_count == 1) ? "test" : "tests",
                                     testcase_count, (testcase_count == 1) ? "test case" : "test cases");
diff --git a/tests/stdio_ext_test.cpp b/tests/stdio_ext_test.cpp
index 3dbc485..950c7ed 100644
--- a/tests/stdio_ext_test.cpp
+++ b/tests/stdio_ext_test.cpp
@@ -34,7 +34,13 @@
 TEST(stdio_ext, __fbufsize) {
   FILE* fp = fopen("/proc/version", "r");
 
+  // Initially, there's no buffer in case the first thing you do is disable buffering.
+  ASSERT_EQ(0U, __fbufsize(fp));
+
+  // A read forces a buffer to be created.
   char buf[128];
+  fgets(buf, sizeof(buf), fp);
+  ASSERT_EQ(1024U, __fbufsize(fp));
 
   ASSERT_EQ(0, setvbuf(fp, buf, _IOFBF, 1));
   ASSERT_EQ(1U, __fbufsize(fp));
