Merge "Add method to run fortified versions of funcs."
diff --git a/tests/Android.mk b/tests/Android.mk
index 3a0d6ee..af8283f 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -86,11 +86,14 @@
     stack_unwinding_test.cpp \
     stdatomic_test.cpp \
     stdint_test.cpp \
+    stdio_nofortify_test.cpp \
     stdio_test.cpp \
     stdio_ext_test.cpp \
     stdlib_test.cpp \
+    string_nofortify_test.cpp \
     string_test.cpp \
     string_posix_strerror_r_test.cpp \
+    strings_nofortify_test.cpp \
     strings_test.cpp \
     stubs_test.cpp \
     sstream_test.cpp \
@@ -117,6 +120,7 @@
     time_test.cpp \
     uchar_test.cpp \
     uniqueptr_test.cpp \
+    unistd_nofortify_test.cpp \
     unistd_test.cpp \
     utmp_test.cpp \
     wchar_test.cpp \
diff --git a/tests/stdio_nofortify_test.cpp b/tests/stdio_nofortify_test.cpp
new file mode 100644
index 0000000..9bdcb03
--- /dev/null
+++ b/tests/stdio_nofortify_test.cpp
@@ -0,0 +1,12 @@
+
+#ifdef _FORTIFY_SOURCE
+#undef _FORTIFY_SOURCE
+#endif
+
+#define NOFORTIFY
+
+#include "stdio_test.cpp"
+
+#if defined(_FORTIFY_SOURCE)
+#error "_FORTIFY_SOURCE has been redefined, fix the code to remove this redefinition."
+#endif
diff --git a/tests/stdio_test.cpp b/tests/stdio_test.cpp
index afb1511..58109a9 100644
--- a/tests/stdio_test.cpp
+++ b/tests/stdio_test.cpp
@@ -31,14 +31,20 @@
 
 #include "TemporaryFile.h"
 
-TEST(stdio, flockfile_18208568_stderr) {
+#if defined(NOFORTIFY)
+#define STDIO_TEST stdio_nofortify
+#else
+#define STDIO_TEST stdio
+#endif
+
+TEST(STDIO_TEST, flockfile_18208568_stderr) {
   // Check that we have a _recursive_ mutex for flockfile.
   flockfile(stderr);
   feof(stderr); // We don't care about the result, but this needs to take the lock.
   funlockfile(stderr);
 }
 
-TEST(stdio, flockfile_18208568_regular) {
+TEST(STDIO_TEST, flockfile_18208568_regular) {
   // We never had a bug for streams other than stdin/stdout/stderr, but test anyway.
   FILE* fp = fopen("/dev/null", "w");
   ASSERT_TRUE(fp != NULL);
@@ -48,7 +54,7 @@
   fclose(fp);
 }
 
-TEST(stdio, tmpfile_fileno_fprintf_rewind_fgets) {
+TEST(STDIO_TEST, tmpfile_fileno_fprintf_rewind_fgets) {
   FILE* fp = tmpfile();
   ASSERT_TRUE(fp != NULL);
 
@@ -73,7 +79,7 @@
   fclose(fp);
 }
 
-TEST(stdio, dprintf) {
+TEST(STDIO_TEST, dprintf) {
   TemporaryFile tf;
 
   int rc = dprintf(tf.fd, "hello\n");
@@ -91,7 +97,7 @@
   fclose(tfile);
 }
 
-TEST(stdio, getdelim) {
+TEST(STDIO_TEST, getdelim) {
   FILE* fp = tmpfile();
   ASSERT_TRUE(fp != NULL);
 
@@ -126,7 +132,7 @@
   fclose(fp);
 }
 
-TEST(stdio, getdelim_invalid) {
+TEST(STDIO_TEST, getdelim_invalid) {
   FILE* fp = tmpfile();
   ASSERT_TRUE(fp != NULL);
 
@@ -151,7 +157,7 @@
   fclose(fp);
 }
 
-TEST(stdio, getdelim_directory) {
+TEST(STDIO_TEST, getdelim_directory) {
   FILE* fp = fopen("/proc", "r");
   ASSERT_TRUE(fp != NULL);
   char* word_read;
@@ -160,7 +166,7 @@
   fclose(fp);
 }
 
-TEST(stdio, getline) {
+TEST(STDIO_TEST, getline) {
   FILE* fp = tmpfile();
   ASSERT_TRUE(fp != NULL);
 
@@ -202,7 +208,7 @@
   fclose(fp);
 }
 
-TEST(stdio, getline_invalid) {
+TEST(STDIO_TEST, getline_invalid) {
   FILE* fp = tmpfile();
   ASSERT_TRUE(fp != NULL);
 
@@ -227,7 +233,7 @@
   fclose(fp);
 }
 
-TEST(stdio, printf_ssize_t) {
+TEST(STDIO_TEST, printf_ssize_t) {
   // http://b/8253769
   ASSERT_EQ(sizeof(ssize_t), sizeof(long int));
   ASSERT_EQ(sizeof(ssize_t), sizeof(size_t));
@@ -240,20 +246,20 @@
 }
 
 // https://code.google.com/p/android/issues/detail?id=64886
-TEST(stdio, snprintf_a) {
+TEST(STDIO_TEST, snprintf_a) {
   char buf[BUFSIZ];
   EXPECT_EQ(23, snprintf(buf, sizeof(buf), "<%a>", 9990.235));
   EXPECT_STREQ("<0x1.3831e147ae148p+13>", buf);
 }
 
-TEST(stdio, snprintf_lc) {
+TEST(STDIO_TEST, snprintf_lc) {
   char buf[BUFSIZ];
   wint_t wc = L'a';
   EXPECT_EQ(3, snprintf(buf, sizeof(buf), "<%lc>", wc));
   EXPECT_STREQ("<a>", buf);
 }
 
-TEST(stdio, snprintf_ls) {
+TEST(STDIO_TEST, snprintf_ls) {
   char buf[BUFSIZ];
   wchar_t* ws = NULL;
   EXPECT_EQ(8, snprintf(buf, sizeof(buf), "<%ls>", ws));
@@ -265,7 +271,7 @@
   EXPECT_STREQ("<hi>", buf);
 }
 
-TEST(stdio, snprintf_n) {
+TEST(STDIO_TEST, snprintf_n) {
 #if defined(__BIONIC__)
   // http://b/14492135
   char buf[32];
@@ -278,7 +284,7 @@
 #endif
 }
 
-TEST(stdio, snprintf_smoke) {
+TEST(STDIO_TEST, snprintf_smoke) {
   char buf[BUFSIZ];
 
   snprintf(buf, sizeof(buf), "a");
@@ -401,7 +407,7 @@
   EXPECT_STREQ(minus_inf, buf) << fmt_plus;
 }
 
-TEST(stdio, snprintf_inf_nan) {
+TEST(STDIO_TEST, snprintf_inf_nan) {
   CheckInfNan(snprintf, "%a", "%+a", "-inf", "inf", "+inf", "-nan", "nan", "+nan");
   CheckInfNan(snprintf, "%A", "%+A", "-INF", "INF", "+INF", "-NAN", "NAN", "+NAN");
   CheckInfNan(snprintf, "%e", "%+e", "-inf", "inf", "+inf", "-nan", "nan", "+nan");
@@ -412,7 +418,7 @@
   CheckInfNan(snprintf, "%G", "%+G", "-INF", "INF", "+INF", "-NAN", "NAN", "+NAN");
 }
 
-TEST(stdio, wsprintf_inf_nan) {
+TEST(STDIO_TEST, wsprintf_inf_nan) {
   CheckInfNan(swprintf, L"%a", L"%+a", L"-inf", L"inf", L"+inf", L"-nan", L"nan", L"+nan");
   CheckInfNan(swprintf, L"%A", L"%+A", L"-INF", L"INF", L"+INF", L"-NAN", L"NAN", L"+NAN");
   CheckInfNan(swprintf, L"%e", L"%+e", L"-inf", L"inf", L"+inf", L"-nan", L"nan", L"+nan");
@@ -423,19 +429,19 @@
   CheckInfNan(swprintf, L"%G", L"%+G", L"-INF", L"INF", L"+INF", L"-NAN", L"NAN", L"+NAN");
 }
 
-TEST(stdio, snprintf_d_INT_MAX) {
+TEST(STDIO_TEST, snprintf_d_INT_MAX) {
   char buf[BUFSIZ];
   snprintf(buf, sizeof(buf), "%d", INT_MAX);
   EXPECT_STREQ("2147483647", buf);
 }
 
-TEST(stdio, snprintf_d_INT_MIN) {
+TEST(STDIO_TEST, snprintf_d_INT_MIN) {
   char buf[BUFSIZ];
   snprintf(buf, sizeof(buf), "%d", INT_MIN);
   EXPECT_STREQ("-2147483648", buf);
 }
 
-TEST(stdio, snprintf_ld_LONG_MAX) {
+TEST(STDIO_TEST, snprintf_ld_LONG_MAX) {
   char buf[BUFSIZ];
   snprintf(buf, sizeof(buf), "%ld", LONG_MAX);
 #if __LP64__
@@ -445,7 +451,7 @@
 #endif
 }
 
-TEST(stdio, snprintf_ld_LONG_MIN) {
+TEST(STDIO_TEST, snprintf_ld_LONG_MIN) {
   char buf[BUFSIZ];
   snprintf(buf, sizeof(buf), "%ld", LONG_MIN);
 #if __LP64__
@@ -455,19 +461,19 @@
 #endif
 }
 
-TEST(stdio, snprintf_lld_LLONG_MAX) {
+TEST(STDIO_TEST, snprintf_lld_LLONG_MAX) {
   char buf[BUFSIZ];
   snprintf(buf, sizeof(buf), "%lld", LLONG_MAX);
   EXPECT_STREQ("9223372036854775807", buf);
 }
 
-TEST(stdio, snprintf_lld_LLONG_MIN) {
+TEST(STDIO_TEST, snprintf_lld_LLONG_MIN) {
   char buf[BUFSIZ];
   snprintf(buf, sizeof(buf), "%lld", LLONG_MIN);
   EXPECT_STREQ("-9223372036854775808", buf);
 }
 
-TEST(stdio, snprintf_e) {
+TEST(STDIO_TEST, snprintf_e) {
   char buf[BUFSIZ];
 
   snprintf(buf, sizeof(buf), "%e", 1.5);
@@ -477,7 +483,7 @@
   EXPECT_STREQ("1.500000e+00", buf);
 }
 
-TEST(stdio, snprintf_negative_zero_5084292) {
+TEST(STDIO_TEST, snprintf_negative_zero_5084292) {
   char buf[BUFSIZ];
 
   snprintf(buf, sizeof(buf), "%e", -0.0);
@@ -498,7 +504,7 @@
   EXPECT_STREQ("-0X0P+0", buf);
 }
 
-TEST(stdio, snprintf_utf8_15439554) {
+TEST(STDIO_TEST, snprintf_utf8_15439554) {
   locale_t cloc = newlocale(LC_ALL, "C.UTF-8", 0);
   locale_t old_locale = uselocale(cloc);
 
@@ -522,7 +528,7 @@
   freelocale(cloc);
 }
 
-TEST(stdio, fprintf_failures_7229520) {
+TEST(STDIO_TEST, fprintf_failures_7229520) {
   // http://b/7229520
   FILE* fp;
 
@@ -545,7 +551,7 @@
   ASSERT_EQ(-1, fclose(fp));
 }
 
-TEST(stdio, popen) {
+TEST(STDIO_TEST, popen) {
   FILE* fp = popen("cat /proc/version", "r");
   ASSERT_TRUE(fp != NULL);
 
@@ -557,7 +563,7 @@
   ASSERT_EQ(0, pclose(fp));
 }
 
-TEST(stdio, getc) {
+TEST(STDIO_TEST, getc) {
   FILE* fp = fopen("/proc/version", "r");
   ASSERT_TRUE(fp != NULL);
   ASSERT_EQ('L', getc(fp));
@@ -568,14 +574,14 @@
   fclose(fp);
 }
 
-TEST(stdio, putc) {
+TEST(STDIO_TEST, putc) {
   FILE* fp = fopen("/proc/version", "r");
   ASSERT_TRUE(fp != NULL);
   ASSERT_EQ(EOF, putc('x', fp));
   fclose(fp);
 }
 
-TEST(stdio, sscanf) {
+TEST(STDIO_TEST, sscanf) {
   char s1[123];
   int i1;
   double d1;
@@ -586,7 +592,7 @@
   ASSERT_DOUBLE_EQ(1.23, d1);
 }
 
-TEST(stdio, cantwrite_EBADF) {
+TEST(STDIO_TEST, cantwrite_EBADF) {
   // If we open a file read-only...
   FILE* fp = fopen("/proc/version", "r");
 
@@ -626,7 +632,7 @@
 
 // Tests that we can only have a consistent and correct fpos_t when using
 // f*pos functions (i.e. fpos doesn't get inside a multi byte character).
-TEST(stdio, consistent_fpos_t) {
+TEST(STDIO_TEST, consistent_fpos_t) {
   ASSERT_STREQ("C.UTF-8", setlocale(LC_CTYPE, "C.UTF-8"));
   uselocale(LC_GLOBAL_LOCALE);
 
@@ -690,7 +696,7 @@
 }
 
 // Exercise the interaction between fpos and seek.
-TEST(stdio, fpos_t_and_seek) {
+TEST(STDIO_TEST, fpos_t_and_seek) {
   ASSERT_STREQ("C.UTF-8", setlocale(LC_CTYPE, "C.UTF-8"));
   uselocale(LC_GLOBAL_LOCALE);
 
@@ -750,7 +756,7 @@
   fclose(fp);
 }
 
-TEST(stdio, fmemopen) {
+TEST(STDIO_TEST, fmemopen) {
   char buf[16];
   memset(buf, 0, sizeof(buf));
   FILE* fp = fmemopen(buf, sizeof(buf), "r+");
@@ -770,7 +776,7 @@
   fclose(fp);
 }
 
-TEST(stdio, fmemopen_NULL) {
+TEST(STDIO_TEST, fmemopen_NULL) {
   FILE* fp = fmemopen(nullptr, 128, "r+");
   ASSERT_NE(EOF, fputs("xyz\n", fp));
 
@@ -784,7 +790,7 @@
   fclose(fp);
 }
 
-TEST(stdio, fmemopen_EINVAL) {
+TEST(STDIO_TEST, fmemopen_EINVAL) {
   char buf[16];
 
   // Invalid size.
@@ -798,7 +804,7 @@
   ASSERT_EQ(EINVAL, errno);
 }
 
-TEST(stdio, open_memstream) {
+TEST(STDIO_TEST, open_memstream) {
   char* p = nullptr;
   size_t size = 0;
   FILE* fp = open_memstream(&p, &size);
@@ -810,7 +816,7 @@
   free(p);
 }
 
-TEST(stdio, open_memstream_EINVAL) {
+TEST(STDIO_TEST, open_memstream_EINVAL) {
 #if defined(__BIONIC__)
   char* p;
   size_t size;
@@ -829,7 +835,7 @@
 #endif
 }
 
-TEST(stdio, fdopen_CLOEXEC) {
+TEST(STDIO_TEST, fdopen_CLOEXEC) {
   int fd = open("/proc/version", O_RDONLY);
   ASSERT_TRUE(fd != -1);
 
@@ -850,7 +856,7 @@
   close(fd);
 }
 
-TEST(stdio, freopen_CLOEXEC) {
+TEST(STDIO_TEST, freopen_CLOEXEC) {
   FILE* fp = fopen("/proc/version", "r");
   ASSERT_TRUE(fp != NULL);
 
@@ -871,7 +877,7 @@
 
 // https://code.google.com/p/android/issues/detail?id=81155
 // http://b/18556607
-TEST(stdio, fread_unbuffered_pathological_performance) {
+TEST(STDIO_TEST, fread_unbuffered_pathological_performance) {
   FILE* fp = fopen("/dev/zero", "r");
   ASSERT_TRUE(fp != NULL);
 
@@ -900,7 +906,7 @@
   }
 }
 
-TEST(stdio, fread_EOF) {
+TEST(STDIO_TEST, fread_EOF) {
   std::string digits("0123456789");
   FILE* fp = fmemopen(&digits[0], digits.size(), "r");
 
@@ -934,11 +940,11 @@
   fclose(fp);
 }
 
-TEST(stdio, fread_from_write_only_stream_slow_path) {
+TEST(STDIO_TEST, fread_from_write_only_stream_slow_path) {
   test_fread_from_write_only_stream(1);
 }
 
-TEST(stdio, fread_from_write_only_stream_fast_path) {
+TEST(STDIO_TEST, fread_from_write_only_stream_fast_path) {
   test_fread_from_write_only_stream(64*1024);
 }
 
@@ -967,16 +973,16 @@
   fclose(fp);
 }
 
-TEST(stdio, fwrite_after_fread_slow_path) {
+TEST(STDIO_TEST, fwrite_after_fread_slow_path) {
   test_fwrite_after_fread(16);
 }
 
-TEST(stdio, fwrite_after_fread_fast_path) {
+TEST(STDIO_TEST, fwrite_after_fread_fast_path) {
   test_fwrite_after_fread(64*1024);
 }
 
 // http://b/19172514
-TEST(stdio, fread_after_fseek) {
+TEST(STDIO_TEST, fread_after_fseek) {
   TemporaryFile tf;
 
   FILE* fp = fopen(tf.filename, "w+");
@@ -1014,7 +1020,7 @@
 }
 
 // https://code.google.com/p/android/issues/detail?id=184847
-TEST(stdio, fread_EOF_184847) {
+TEST(STDIO_TEST, fread_EOF_184847) {
   TemporaryFile tf;
   char buf[6] = {0};
 
diff --git a/tests/string_nofortify_test.cpp b/tests/string_nofortify_test.cpp
new file mode 100644
index 0000000..1c0be35
--- /dev/null
+++ b/tests/string_nofortify_test.cpp
@@ -0,0 +1,12 @@
+
+#ifdef _FORTIFY_SOURCE
+#undef _FORTIFY_SOURCE
+#endif
+
+#define NOFORTIFY
+
+#include "string_test.cpp"
+
+#if defined(_FORTIFY_SOURCE)
+#error "_FORTIFY_SOURCE has been redefined, fix the code to remove this redefinition."
+#endif
diff --git a/tests/string_test.cpp b/tests/string_test.cpp
index 842e1c7..96b4143 100644
--- a/tests/string_test.cpp
+++ b/tests/string_test.cpp
@@ -26,6 +26,12 @@
 
 #include "buffer_tests.h"
 
+#if defined(NOFORTIFY)
+#define STRING_TEST string_nofortify
+#else
+#define STRING_TEST string
+#endif
+
 #if defined(__BIONIC__)
 #define STRLCPY_SUPPORTED
 #define STRLCAT_SUPPORTED
@@ -45,7 +51,7 @@
   return 0;
 }
 
-TEST(string, strerror) {
+TEST(STRING_TEST, strerror) {
   // Valid.
   ASSERT_STREQ("Success", strerror(0));
   ASSERT_STREQ("Operation not permitted", strerror(1));
@@ -63,7 +69,7 @@
 #endif // __BIONIC__
 
 // glibc's strerror isn't thread safe, only its strsignal.
-TEST(string, strerror_concurrent) {
+TEST(STRING_TEST, strerror_concurrent) {
 #if defined(__BIONIC__)
   const char* strerror1001 = strerror(1001);
   ASSERT_STREQ("Unknown error 1001", strerror1001);
@@ -80,7 +86,7 @@
 #endif // __BIONIC__
 }
 
-TEST(string, gnu_strerror_r) {
+TEST(STRING_TEST, gnu_strerror_r) {
   char buf[256];
 
   // Note that glibc doesn't necessarily write into the buffer.
@@ -110,7 +116,7 @@
   ASSERT_EQ(0, errno);
 }
 
-TEST(string, strsignal) {
+TEST(STRING_TEST, strsignal) {
   // A regular signal.
   ASSERT_STREQ("Hangup", strsignal(1));
 
@@ -130,7 +136,7 @@
   return reinterpret_cast<void*>(equal);
 }
 
-TEST(string, strsignal_concurrent) {
+TEST(STRING_TEST, strsignal_concurrent) {
   const char* strsignal1001 = strsignal(1001);
   ASSERT_STREQ("Unknown signal 1001", strsignal1001);
 
@@ -243,7 +249,7 @@
 template<class Character>
 size_t StringTestState<Character>::alignments_size = sizeof(alignments)/sizeof(size_t);
 
-TEST(string, strcat) {
+TEST(STRING_TEST, strcat) {
   StringTestState<char> state(SMALL);
   for (size_t i = 1; i < state.n; i++) {
     for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
@@ -264,7 +270,7 @@
 }
 
 // one byte target with "\0" source
-TEST(string, strcpy2) {
+TEST(STRING_TEST, strcpy2) {
   char buf[1];
   char* orig = strdup("");
   ASSERT_EQ(buf, strcpy(buf, orig));
@@ -273,7 +279,7 @@
 }
 
 // multibyte target where we under fill target
-TEST(string, strcpy3) {
+TEST(STRING_TEST, strcpy3) {
   char buf[10];
   char* orig = strdup("12345");
   memset(buf, 'A', sizeof(buf));
@@ -287,7 +293,7 @@
 }
 
 // multibyte target where we fill target exactly
-TEST(string, strcpy4) {
+TEST(STRING_TEST, strcpy4) {
   char buf[10];
   char* orig = strdup("123456789");
   memset(buf, 'A', sizeof(buf));
@@ -297,7 +303,7 @@
 }
 
 // one byte target with "\0" source
-TEST(string, stpcpy2) {
+TEST(STRING_TEST, stpcpy2) {
   char buf[1];
   char* orig = strdup("");
   ASSERT_EQ(buf, stpcpy(buf, orig));
@@ -306,7 +312,7 @@
 }
 
 // multibyte target where we under fill target
-TEST(string, stpcpy3) {
+TEST(STRING_TEST, stpcpy3) {
   char buf[10];
   char* orig = strdup("12345");
   memset(buf, 'A', sizeof(buf));
@@ -320,7 +326,7 @@
 }
 
 // multibyte target where we fill target exactly
-TEST(string, stpcpy4) {
+TEST(STRING_TEST, stpcpy4) {
   char buf[10];
   char* orig = strdup("123456789");
   memset(buf, 'A', sizeof(buf));
@@ -329,7 +335,7 @@
   free(orig);
 }
 
-TEST(string, strcat2) {
+TEST(STRING_TEST, strcat2) {
   char buf[10];
   memset(buf, 'A', sizeof(buf));
   buf[0] = 'a';
@@ -342,7 +348,7 @@
   ASSERT_EQ('A',  buf[9]);
 }
 
-TEST(string, strcat3) {
+TEST(STRING_TEST, strcat3) {
   char buf[10];
   memset(buf, 'A', sizeof(buf));
   buf[0] = 'a';
@@ -352,7 +358,7 @@
   ASSERT_STREQ("a01234567", buf);
 }
 
-TEST(string, strncat2) {
+TEST(STRING_TEST, strncat2) {
   char buf[10];
   memset(buf, 'A', sizeof(buf));
   buf[0] = 'a';
@@ -365,7 +371,7 @@
   ASSERT_EQ('A',  buf[9]);
 }
 
-TEST(string, strncat3) {
+TEST(STRING_TEST, strncat3) {
   char buf[10];
   memset(buf, 'A', sizeof(buf));
   buf[0] = 'a';
@@ -378,7 +384,7 @@
   ASSERT_EQ('A',  buf[9]);
 }
 
-TEST(string, strncat4) {
+TEST(STRING_TEST, strncat4) {
   char buf[10];
   memset(buf, 'A', sizeof(buf));
   buf[0] = 'a';
@@ -388,7 +394,7 @@
   ASSERT_STREQ("a01234567", buf);
 }
 
-TEST(string, strncat5) {
+TEST(STRING_TEST, strncat5) {
   char buf[10];
   memset(buf, 'A', sizeof(buf));
   buf[0] = 'a';
@@ -398,14 +404,14 @@
   ASSERT_STREQ("a01234567", buf);
 }
 
-TEST(string, strchr_with_0) {
+TEST(STRING_TEST, strchr_with_0) {
   char buf[10];
   const char* s = "01234";
   memcpy(buf, s, strlen(s) + 1);
   EXPECT_TRUE(strchr(buf, '\0') == (buf + strlen(s)));
 }
 
-TEST(string, strchr_multiple) {
+TEST(STRING_TEST, strchr_multiple) {
   char str[128];
   memset(str, 'a', sizeof(str) - 1);
   str[sizeof(str)-1] = '\0';
@@ -423,7 +429,7 @@
   }
 }
 
-TEST(string, strchr) {
+TEST(STRING_TEST, strchr) {
   int seek_char = 'R';
 
   StringTestState<char> state(SMALL);
@@ -454,14 +460,14 @@
   }
 }
 
-TEST(string, strchrnul) {
+TEST(STRING_TEST, strchrnul) {
   const char* s = "01234222";
   EXPECT_TRUE(strchrnul(s, '2') == &s[2]);
   EXPECT_TRUE(strchrnul(s, '8') == (s + strlen(s)));
   EXPECT_TRUE(strchrnul(s, '\0') == (s + strlen(s)));
 }
 
-TEST(string, strcmp) {
+TEST(STRING_TEST, strcmp) {
   StringTestState<char> state(SMALL);
   for (size_t i = 1; i < state.n; i++) {
     for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
@@ -496,7 +502,7 @@
   }
 }
 
-TEST(string, stpcpy) {
+TEST(STRING_TEST, stpcpy) {
   StringTestState<char> state(SMALL);
   for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
     size_t pos = random() % state.MAX_LEN;
@@ -520,7 +526,7 @@
   }
 }
 
-TEST(string, strcpy) {
+TEST(STRING_TEST, strcpy) {
   StringTestState<char> state(SMALL);
   for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
     size_t pos = random() % state.MAX_LEN;
@@ -544,7 +550,7 @@
   }
 }
 
-TEST(string, strlcat) {
+TEST(STRING_TEST, strlcat) {
 #if defined(STRLCAT_SUPPORTED)
   StringTestState<char> state(SMALL);
   for (size_t i = 0; i < state.n; i++) {
@@ -573,7 +579,7 @@
 #endif
 }
 
-TEST(string, strlcpy) {
+TEST(STRING_TEST, strlcpy) {
 #if defined(STRLCPY_SUPPORTED)
   StringTestState<char> state(SMALL);
   for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
@@ -605,7 +611,7 @@
 #endif
 }
 
-TEST(string, strncat) {
+TEST(STRING_TEST, strncat) {
   StringTestState<char> state(SMALL);
   for (size_t i = 1; i < state.n; i++) {
     for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
@@ -629,7 +635,7 @@
   }
 }
 
-TEST(string, strncmp) {
+TEST(STRING_TEST, strncmp) {
   StringTestState<char> state(SMALL);
   for (size_t i = 1; i < state.n; i++) {
     for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
@@ -664,7 +670,7 @@
   }
 }
 
-TEST(string, stpncpy) {
+TEST(STRING_TEST, stpncpy) {
   StringTestState<char> state(SMALL);
   for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
     memset(state.ptr1, 'J', state.MAX_LEN);
@@ -699,7 +705,7 @@
   }
 }
 
-TEST(string, strncpy) {
+TEST(STRING_TEST, strncpy) {
   StringTestState<char> state(SMALL);
   for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
     // Choose a random value to fill the string, except \0 (string terminator),
@@ -736,7 +742,7 @@
   }
 }
 
-TEST(string, strrchr) {
+TEST(STRING_TEST, strrchr) {
   int seek_char = 'M';
   StringTestState<char> state(SMALL);
   for (size_t i = 1; i < state.n; i++) {
@@ -766,7 +772,7 @@
   }
 }
 
-TEST(string, memchr) {
+TEST(STRING_TEST, memchr) {
   int seek_char = 'N';
   StringTestState<char> state(SMALL);
   for (size_t i = 0; i < state.n; i++) {
@@ -787,7 +793,7 @@
   }
 }
 
-TEST(string, memchr_zero) {
+TEST(STRING_TEST, memchr_zero) {
   uint8_t* buffer;
   ASSERT_EQ(0, posix_memalign(reinterpret_cast<void**>(&buffer), 64, 64));
   memset(buffer, 10, 64);
@@ -795,7 +801,7 @@
   ASSERT_TRUE(NULL == memchr(buffer, 10, 0));
 }
 
-TEST(string, memrchr) {
+TEST(STRING_TEST, memrchr) {
   int seek_char = 'P';
   StringTestState<char> state(SMALL);
   for (size_t i = 0; i < state.n; i++) {
@@ -816,7 +822,7 @@
   }
 }
 
-TEST(string, memcmp) {
+TEST(STRING_TEST, memcmp) {
   StringTestState<char> state(SMALL);
   for (size_t i = 0; i < state.n; i++) {
     for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
@@ -836,7 +842,7 @@
   }
 }
 
-TEST(string, wmemcmp) {
+TEST(STRING_TEST, wmemcmp) {
   StringTestState<wchar_t> state(SMALL);
 
   for (size_t i = 0; i < state.n; i++) {
@@ -858,7 +864,7 @@
   }
 }
 
-TEST(string, memcpy) {
+TEST(STRING_TEST, memcpy) {
   StringTestState<char> state(LARGE);
   int rand = 4;
   for (size_t i = 0; i < state.n - 1; i++) {
@@ -878,7 +884,7 @@
   }
 }
 
-TEST(string, memset) {
+TEST(STRING_TEST, memset) {
   StringTestState<char> state(LARGE);
   char ch = 'P';
   for (size_t i = 0; i < state.n - 1; i++) {
@@ -898,7 +904,7 @@
   }
 }
 
-TEST(string, memmove) {
+TEST(STRING_TEST, memmove) {
   StringTestState<char> state(LARGE);
   for (size_t i = 0; i < state.n - 1; i++) {
     for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
@@ -917,7 +923,7 @@
   }
 }
 
-TEST(string, memmove_cache_size) {
+TEST(STRING_TEST, memmove_cache_size) {
   size_t len = 600000;
   int max_alignment = 31;
   int alignments[] = {0, 5, 11, 29, 30};
@@ -955,7 +961,7 @@
 
 #define MEMMOVE_DATA_SIZE (1024*1024*3)
 
-TEST(string, memmove_check) {
+TEST(STRING_TEST, memmove_check) {
   char* buffer = reinterpret_cast<char*>(malloc(MEMMOVE_DATA_SIZE));
   ASSERT_TRUE(buffer != NULL);
 
@@ -996,7 +1002,7 @@
   }
 }
 
-TEST(string, bcopy) {
+TEST(STRING_TEST, bcopy) {
   StringTestState<char> state(LARGE);
   for (size_t i = 0; i < state.n; i++) {
     for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
@@ -1013,7 +1019,7 @@
   }
 }
 
-TEST(string, bzero) {
+TEST(STRING_TEST, bzero) {
   StringTestState<char> state(LARGE);
   for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
     memset(state.ptr1, 'R', state.MAX_LEN);
@@ -1039,11 +1045,11 @@
   ASSERT_TRUE(memcmp(src, dst, len) == 0);
 }
 
-TEST(string, memcpy_align) {
+TEST(STRING_TEST, memcpy_align) {
   RunSrcDstBufferAlignTest(LARGE, DoMemcpyTest);
 }
 
-TEST(string, memcpy_overread) {
+TEST(STRING_TEST, memcpy_overread) {
   RunSrcDstBufferOverreadTest(DoMemcpyTest);
 }
 
@@ -1055,11 +1061,11 @@
   ASSERT_TRUE(memcmp(src, dst, len) == 0);
 }
 
-TEST(string, memmove_align) {
+TEST(STRING_TEST, memmove_align) {
   RunSrcDstBufferAlignTest(LARGE, DoMemmoveTest);
 }
 
-TEST(string, memmove_overread) {
+TEST(STRING_TEST, memmove_overread) {
   RunSrcDstBufferOverreadTest(DoMemmoveTest);
 }
 
@@ -1074,7 +1080,7 @@
   }
 }
 
-TEST(string, memset_align) {
+TEST(STRING_TEST, memset_align) {
   RunSingleBufferAlignTest(LARGE, DoMemsetTest);
 }
 
@@ -1086,11 +1092,11 @@
   }
 }
 
-TEST(string, strlen_align) {
+TEST(STRING_TEST, strlen_align) {
   RunSingleBufferAlignTest(LARGE, DoStrlenTest);
 }
 
-TEST(string, strlen_overread) {
+TEST(STRING_TEST, strlen_overread) {
   RunSingleBufferOverreadTest(DoStrlenTest);
 }
 
@@ -1105,11 +1111,11 @@
   }
 }
 
-TEST(string, strcpy_align) {
+TEST(STRING_TEST, strcpy_align) {
   RunSrcDstBufferAlignTest(LARGE, DoStrcpyTest);
 }
 
-TEST(string, strcpy_overread) {
+TEST(STRING_TEST, strcpy_overread) {
   RunSrcDstBufferOverreadTest(DoStrcpyTest);
 }
 
@@ -1126,7 +1132,7 @@
 }
 #endif
 
-TEST(string, strlcpy_align) {
+TEST(STRING_TEST, strlcpy_align) {
 #if defined(STRLCPY_SUPPORTED)
   RunSrcDstBufferAlignTest(LARGE, DoStrlcpyTest);
 #else
@@ -1134,7 +1140,7 @@
 #endif
 }
 
-TEST(string, strlcpy_overread) {
+TEST(STRING_TEST, strlcpy_overread) {
 #if defined(STRLCPY_SUPPORTED)
   RunSrcDstBufferOverreadTest(DoStrlcpyTest);
 #else
@@ -1154,11 +1160,11 @@
   }
 }
 
-TEST(string, stpcpy_align) {
+TEST(STRING_TEST, stpcpy_align) {
   RunSrcDstBufferAlignTest(LARGE, DoStpcpyTest);
 }
 
-TEST(string, stpcpy_overread) {
+TEST(STRING_TEST, stpcpy_overread) {
   RunSrcDstBufferOverreadTest(DoStpcpyTest);
 }
 
@@ -1214,11 +1220,11 @@
   }
 }
 
-TEST(string, strcat_align) {
+TEST(STRING_TEST, strcat_align) {
   RunSrcDstBufferAlignTest(MEDIUM, DoStrcatTest, LargeSetIncrement);
 }
 
-TEST(string, strcat_overread) {
+TEST(STRING_TEST, strcat_overread) {
   RunSrcDstBufferOverreadTest(DoStrcatTest);
 }
 
@@ -1262,7 +1268,7 @@
 }
 #endif
 
-TEST(string, strlcat_align) {
+TEST(STRING_TEST, strlcat_align) {
 #if defined(STRLCAT_SUPPORTED)
   RunSrcDstBufferAlignTest(MEDIUM, DoStrlcatTest, LargeSetIncrement);
 #else
@@ -1270,7 +1276,7 @@
 #endif
 }
 
-TEST(string, strlcat_overread) {
+TEST(STRING_TEST, strlcat_overread) {
 #if defined(STRLCAT_SUPPORTED)
   RunSrcDstBufferOverreadTest(DoStrlcatTest);
 #else
@@ -1323,11 +1329,11 @@
   }
 }
 
-TEST(string, strcmp_align) {
+TEST(STRING_TEST, strcmp_align) {
   RunCmpBufferAlignTest(MEDIUM, DoStrcmpTest, DoStrcmpFailTest, LargeSetIncrement);
 }
 
-TEST(string, strcmp_overread) {
+TEST(STRING_TEST, strcmp_overread) {
   RunCmpBufferOverreadTest(DoStrcmpTest, DoStrcmpFailTest);
 }
 
@@ -1355,11 +1361,11 @@
   ASSERT_NE(0, memcmp(buf1, buf2, len));
 }
 
-TEST(string, memcmp_align) {
+TEST(STRING_TEST, memcmp_align) {
   RunCmpBufferAlignTest(MEDIUM, DoMemcmpTest, DoMemcmpFailTest, LargeSetIncrement);
 }
 
-TEST(string, memcmp_overread) {
+TEST(STRING_TEST, memcmp_overread) {
   RunCmpBufferOverreadTest(DoMemcmpTest, DoMemcmpFailTest);
 }
 
@@ -1381,11 +1387,11 @@
   }
 }
 
-TEST(string, strchr_align) {
+TEST(STRING_TEST, strchr_align) {
   RunSingleBufferAlignTest(MEDIUM, DoStrchrTest);
 }
 
-TEST(string, strchr_overread) {
+TEST(STRING_TEST, strchr_overread) {
   RunSingleBufferOverreadTest(DoStrchrTest);
 }
 
@@ -1396,7 +1402,7 @@
   ASSERT_EQ(0, errno) << in;
 }
 
-TEST(string, __gnu_basename) {
+TEST(STRING_TEST, __gnu_basename) {
   TestBasename("", "");
   TestBasename("/usr/lib", "lib");
   TestBasename("/usr/", "");
@@ -1408,7 +1414,7 @@
   TestBasename("//usr//lib//", "");
 }
 
-TEST(string, strnlen_147048) {
+TEST(STRING_TEST, strnlen_147048) {
   // https://code.google.com/p/android/issues/detail?id=147048
   char stack_src[64] = {0};
   EXPECT_EQ(0U, strnlen(stack_src, 1024*1024*1024));
@@ -1418,11 +1424,11 @@
   delete[] heap_src;
 }
 
-TEST(string, strnlen_74741) {
+TEST(STRING_TEST, strnlen_74741) {
   ASSERT_EQ(4U, strnlen("test", SIZE_MAX));
 }
 
-TEST(string, mempcpy) {
+TEST(STRING_TEST, mempcpy) {
   char dst[6];
   ASSERT_EQ(&dst[4], reinterpret_cast<char*>(mempcpy(dst, "hello", 4)));
 }
diff --git a/tests/strings_nofortify_test.cpp b/tests/strings_nofortify_test.cpp
new file mode 100644
index 0000000..36eee75
--- /dev/null
+++ b/tests/strings_nofortify_test.cpp
@@ -0,0 +1,12 @@
+
+#ifdef _FORTIFY_SOURCE
+#undef _FORTIFY_SOURCE
+#endif
+
+#define NOFORTIFY
+
+#include "strings_test.cpp"
+
+#if defined(_FORTIFY_SOURCE)
+#error "_FORTIFY_SOURCE has been redefined, fix the code to remove this redefinition."
+#endif
diff --git a/tests/strings_test.cpp b/tests/strings_test.cpp
index 823aa4f..1716843 100644
--- a/tests/strings_test.cpp
+++ b/tests/strings_test.cpp
@@ -20,7 +20,13 @@
 #include <locale.h>
 #include <strings.h>
 
-TEST(strings, ffs) {
+#if defined(NOFORTIFY)
+#define STRINGS_TEST strings_nofortify
+#else
+#define STRINGS_TEST strings
+#endif
+
+TEST(STRINGS_TEST, ffs) {
   ASSERT_EQ( 0, ffs(0x00000000));
   ASSERT_EQ( 1, ffs(0x00000001));
   ASSERT_EQ( 6, ffs(0x00000020));
@@ -32,13 +38,13 @@
   ASSERT_EQ(32, ffs(0x80000000));
 }
 
-TEST(strings, strcasecmp) {
+TEST(STRINGS_TEST, strcasecmp) {
   ASSERT_EQ(0, strcasecmp("hello", "HELLO"));
   ASSERT_LT(strcasecmp("hello1", "hello2"), 0);
   ASSERT_GT(strcasecmp("hello2", "hello1"), 0);
 }
 
-TEST(strings, strcasecmp_l) {
+TEST(STRINGS_TEST, strcasecmp_l) {
   locale_t l = newlocale(LC_ALL, "C", 0);
   ASSERT_EQ(0, strcasecmp_l("hello", "HELLO", l));
   ASSERT_LT(strcasecmp_l("hello1", "hello2", l), 0);
@@ -46,14 +52,14 @@
   freelocale(l);
 }
 
-TEST(strings, strncasecmp) {
+TEST(STRINGS_TEST, strncasecmp) {
   ASSERT_EQ(0, strncasecmp("hello", "HELLO", 3));
   ASSERT_EQ(0, strncasecmp("abcXX", "ABCYY", 3));
   ASSERT_LT(strncasecmp("hello1", "hello2", 6), 0);
   ASSERT_GT(strncasecmp("hello2", "hello1", 6), 0);
 }
 
-TEST(strings, strncasecmp_l) {
+TEST(STRINGS_TEST, strncasecmp_l) {
   locale_t l = newlocale(LC_ALL, "C", 0);
   ASSERT_EQ(0, strncasecmp_l("hello", "HELLO", 3, l));
   ASSERT_EQ(0, strncasecmp_l("abcXX", "ABCYY", 3, l));
diff --git a/tests/unistd_nofortify_test.cpp b/tests/unistd_nofortify_test.cpp
new file mode 100644
index 0000000..29966e9
--- /dev/null
+++ b/tests/unistd_nofortify_test.cpp
@@ -0,0 +1,12 @@
+
+#ifdef _FORTIFY_SOURCE
+#undef _FORTIFY_SOURCE
+#endif
+
+#define NOFORTIFY
+
+#include "unistd_test.cpp"
+
+#if defined(_FORTIFY_SOURCE)
+#error "_FORTIFY_SOURCE has been redefined, fix the code to remove this redefinition."
+#endif
diff --git a/tests/unistd_test.cpp b/tests/unistd_test.cpp
index 5e06b1f..5f412ce 100644
--- a/tests/unistd_test.cpp
+++ b/tests/unistd_test.cpp
@@ -35,6 +35,14 @@
 
 #include "private/get_cpu_count_from_string.h"
 
+#if defined(NOFORTIFY)
+#define UNISTD_TEST unistd_nofortify
+#define UNISTD_DEATHTEST unistd_nofortify_DeathTest
+#else
+#define UNISTD_TEST unistd
+#define UNISTD_DEATHTEST unistd_DeathTest
+#endif
+
 static void* get_brk() {
   return sbrk(0);
 }
@@ -44,7 +52,7 @@
   return reinterpret_cast<void*>((addr + mask) & ~mask);
 }
 
-TEST(unistd, brk) {
+TEST(UNISTD_TEST, brk) {
   void* initial_break = get_brk();
 
   // The kernel aligns the break to a page.
@@ -57,7 +65,7 @@
   ASSERT_EQ(get_brk(), new_break);
 }
 
-TEST(unistd, brk_ENOMEM) {
+TEST(UNISTD_TEST, brk_ENOMEM) {
   ASSERT_EQ(-1, brk(reinterpret_cast<void*>(-1)));
   ASSERT_EQ(ENOMEM, errno);
 }
@@ -70,7 +78,7 @@
 #define SBRK_MAX PTRDIFF_MAX
 #endif
 
-TEST(unistd, sbrk_ENOMEM) {
+TEST(UNISTD_TEST, sbrk_ENOMEM) {
 #if defined(__BIONIC__) && !defined(__LP64__)
   // There is no way to guarantee that all overflow conditions can be tested
   // without manipulating the underlying values of the current break.
@@ -141,7 +149,7 @@
 #endif
 }
 
-TEST(unistd, truncate) {
+TEST(UNISTD_TEST, truncate) {
   TemporaryFile tf;
   ASSERT_EQ(0, close(tf.fd));
   ASSERT_EQ(0, truncate(tf.filename, 123));
@@ -151,7 +159,7 @@
   ASSERT_EQ(123, sb.st_size);
 }
 
-TEST(unistd, truncate64) {
+TEST(UNISTD_TEST, truncate64) {
   TemporaryFile tf;
   ASSERT_EQ(0, close(tf.fd));
   ASSERT_EQ(0, truncate64(tf.filename, 123));
@@ -161,7 +169,7 @@
   ASSERT_EQ(123, sb.st_size);
 }
 
-TEST(unistd, ftruncate) {
+TEST(UNISTD_TEST, ftruncate) {
   TemporaryFile tf;
   ASSERT_EQ(0, ftruncate(tf.fd, 123));
   ASSERT_EQ(0, close(tf.fd));
@@ -171,7 +179,7 @@
   ASSERT_EQ(123, sb.st_size);
 }
 
-TEST(unistd, ftruncate64) {
+TEST(UNISTD_TEST, ftruncate64) {
   TemporaryFile tf;
   ASSERT_EQ(0, ftruncate64(tf.fd, 123));
   ASSERT_EQ(0, close(tf.fd));
@@ -181,7 +189,7 @@
   ASSERT_EQ(123, sb.st_size);
 }
 
-TEST(unistd, ftruncate_negative) {
+TEST(UNISTD_TEST, ftruncate_negative) {
   TemporaryFile tf;
   errno = 0;
   ASSERT_EQ(-1, ftruncate(tf.fd, -123));
@@ -193,7 +201,7 @@
   g_pause_test_flag = true;
 }
 
-TEST(unistd, pause) {
+TEST(UNISTD_TEST, pause) {
   ScopedSignalHandler handler(SIGALRM, PauseTestSignalHandler);
 
   alarm(1);
@@ -202,7 +210,7 @@
   ASSERT_TRUE(g_pause_test_flag);
 }
 
-TEST(unistd, read) {
+TEST(UNISTD_TEST, read) {
   int fd = open("/proc/version", O_RDONLY);
   ASSERT_TRUE(fd != -1);
 
@@ -216,7 +224,7 @@
   close(fd);
 }
 
-TEST(unistd, read_EBADF) {
+TEST(UNISTD_TEST, read_EBADF) {
   // read returns ssize_t which is 64-bits on LP64, so it's worth explicitly checking that
   // our syscall stubs correctly return a 64-bit -1.
   char buf[1];
@@ -224,7 +232,7 @@
   ASSERT_EQ(EBADF, errno);
 }
 
-TEST(unistd, syscall_long) {
+TEST(UNISTD_TEST, syscall_long) {
   // Check that syscall(3) correctly returns long results.
   // https://code.google.com/p/android/issues/detail?id=73952
   // We assume that the break is > 4GiB, but this is potentially flaky.
@@ -232,11 +240,11 @@
   ASSERT_EQ(p, static_cast<uintptr_t>(syscall(__NR_brk, 0)));
 }
 
-TEST(unistd, alarm) {
+TEST(UNISTD_TEST, alarm) {
   ASSERT_EQ(0U, alarm(0));
 }
 
-TEST(unistd, _exit) {
+TEST(UNISTD_TEST, _exit) {
   int pid = fork();
   ASSERT_NE(-1, pid) << strerror(errno);
 
@@ -250,21 +258,21 @@
   ASSERT_EQ(99, WEXITSTATUS(status));
 }
 
-TEST(unistd, getenv_unsetenv) {
+TEST(UNISTD_TEST, getenv_unsetenv) {
   ASSERT_EQ(0, setenv("test-variable", "hello", 1));
   ASSERT_STREQ("hello", getenv("test-variable"));
   ASSERT_EQ(0, unsetenv("test-variable"));
   ASSERT_TRUE(getenv("test-variable") == NULL);
 }
 
-TEST(unistd, unsetenv_EINVAL) {
+TEST(UNISTD_TEST, unsetenv_EINVAL) {
   EXPECT_EQ(-1, unsetenv(""));
   EXPECT_EQ(EINVAL, errno);
   EXPECT_EQ(-1, unsetenv("a=b"));
   EXPECT_EQ(EINVAL, errno);
 }
 
-TEST(unistd, setenv_EINVAL) {
+TEST(UNISTD_TEST, setenv_EINVAL) {
   EXPECT_EQ(-1, setenv(NULL, "value", 0));
   EXPECT_EQ(EINVAL, errno);
   EXPECT_EQ(-1, setenv(NULL, "value", 1));
@@ -279,7 +287,7 @@
   EXPECT_EQ(EINVAL, errno);
 }
 
-TEST(unistd, setenv) {
+TEST(UNISTD_TEST, setenv) {
   ASSERT_EQ(0, unsetenv("test-variable"));
 
   char a[] = "a";
@@ -305,7 +313,7 @@
   ASSERT_EQ(0, unsetenv("test-variable"));
 }
 
-TEST(unistd, putenv) {
+TEST(UNISTD_TEST, putenv) {
   ASSERT_EQ(0, unsetenv("a"));
 
   char* s1 = strdup("a=b");
@@ -326,7 +334,7 @@
   free(s2);
 }
 
-TEST(unistd, clearenv) {
+TEST(UNISTD_TEST, clearenv) {
   extern char** environ;
 
   // Guarantee that environ is not initially empty...
@@ -391,11 +399,11 @@
   close(fd);
 }
 
-TEST(unistd, fdatasync) {
+TEST(UNISTD_TEST, fdatasync) {
   TestFsyncFunction(fdatasync);
 }
 
-TEST(unistd, fsync) {
+TEST(UNISTD_TEST, fsync) {
   TestFsyncFunction(fsync);
 }
 
@@ -429,11 +437,11 @@
   }
 }
 
-TEST(unistd, getpid_caching_and_fork) {
+TEST(UNISTD_TEST, getpid_caching_and_fork) {
   TestGetPidCachingWithFork(fork);
 }
 
-TEST(unistd, getpid_caching_and_vfork) {
+TEST(UNISTD_TEST, getpid_caching_and_vfork) {
   TestGetPidCachingWithFork(vfork);
 }
 
@@ -442,7 +450,7 @@
   return 123;
 }
 
-TEST(unistd, getpid_caching_and_clone) {
+TEST(UNISTD_TEST, getpid_caching_and_clone) {
   pid_t parent_pid = getpid();
   ASSERT_EQ(syscall(__NR_getpid), parent_pid);
 
@@ -467,7 +475,7 @@
   return NULL;
 }
 
-TEST(unistd, getpid_caching_and_pthread_create) {
+TEST(UNISTD_TEST, getpid_caching_and_pthread_create) {
   pid_t parent_pid = getpid();
 
   pthread_t t;
@@ -480,13 +488,13 @@
   ASSERT_EQ(NULL, result);
 }
 
-class unistd_DeathTest : public BionicDeathTest {};
+class UNISTD_DEATHTEST : public BionicDeathTest {};
 
-TEST_F(unistd_DeathTest, abort) {
+TEST_F(UNISTD_DEATHTEST, abort) {
   ASSERT_EXIT(abort(), testing::KilledBySignal(SIGABRT), "");
 }
 
-TEST(unistd, sethostname) {
+TEST(UNISTD_TEST, sethostname) {
   // The permissions check happens before the argument check, so this will
   // fail for a different reason if you're running as root than if you're
   // not, but it'll fail either way. Checking that we have the symbol is about
@@ -494,7 +502,7 @@
   ASSERT_EQ(-1, sethostname("", -1));
 }
 
-TEST(unistd, gethostname) {
+TEST(UNISTD_TEST, gethostname) {
   char hostname[HOST_NAME_MAX + 1];
   memset(hostname, 0, sizeof(hostname));
 
@@ -517,7 +525,7 @@
   ASSERT_EQ(ENAMETOOLONG, errno);
 }
 
-TEST(unistd, pathconf_fpathconf) {
+TEST(UNISTD_TEST, pathconf_fpathconf) {
   TemporaryFile tf;
   long rc = 0L;
   // As a file system's block size is always power of 2, the configure values
@@ -538,7 +546,7 @@
 }
 
 
-TEST(unistd, _POSIX_macros_smoke) {
+TEST(UNISTD_TEST, _POSIX_macros_smoke) {
   // Make a tight verification of _POSIX_* / _POSIX2_* / _XOPEN_* macros, to prevent change by mistake.
   // Verify according to POSIX.1-2008.
   EXPECT_EQ(200809L, _POSIX_VERSION);
@@ -677,7 +685,7 @@
       << ret <<", Error Message: " << strerror(errno);
 }
 
-TEST(unistd, sysconf) {
+TEST(UNISTD_TEST, sysconf) {
   VERIFY_SYSCONF_POSIX_VERSION(_SC_ADVISORY_INFO);
   VERIFY_SYSCONF_POSITIVE(_SC_ARG_MAX);
   VERIFY_SYSCONF_POSITIVE(_SC_BC_BASE_MAX);
@@ -824,14 +832,14 @@
 #endif // defined(__BIONIC__)
 }
 
-TEST(unistd, get_cpu_count_from_string) {
+TEST(UNISTD_TEST, get_cpu_count_from_string) {
   ASSERT_EQ(0, GetCpuCountFromString(" "));
   ASSERT_EQ(1, GetCpuCountFromString("0"));
   ASSERT_EQ(40, GetCpuCountFromString("0-39"));
   ASSERT_EQ(4, GetCpuCountFromString("0, 1-2, 4\n"));
 }
 
-TEST(unistd, sysconf_SC_NPROCESSORS_ONLN) {
+TEST(UNISTD_TEST, sysconf_SC_NPROCESSORS_ONLN) {
   std::string line;
   ASSERT_TRUE(android::base::ReadFileToString("/sys/devices/system/cpu/online", &line));
   long online_cpus = 0;
@@ -846,7 +854,7 @@
   ASSERT_EQ(online_cpus, sysconf(_SC_NPROCESSORS_ONLN));
 }
 
-TEST(unistd, dup2_same) {
+TEST(UNISTD_TEST, dup2_same) {
   // POSIX says of dup2:
   // If fildes2 is already a valid open file descriptor ...
   // [and] fildes is equal to fildes2 ... dup2() shall return