diff --git a/tests/Android.bp b/tests/Android.bp
index 1df9264..3637404 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -43,9 +43,6 @@
         linux_bionic: {
             header_libs: ["bionic_libc_platform_headers"],
         },
-        musl: {
-            cflags: ["-DMUSL"],
-        },
     },
     cflags: [
         "-fstack-protector-all",
diff --git a/tests/arpa_inet_test.cpp b/tests/arpa_inet_test.cpp
index 3ee0419..7150854 100644
--- a/tests/arpa_inet_test.cpp
+++ b/tests/arpa_inet_test.cpp
@@ -14,6 +14,8 @@
  * limitations under the License.
  */
 
+#include <sys/cdefs.h>
+
 #include <gtest/gtest.h>
 
 #include <arpa/inet.h>
@@ -160,7 +162,7 @@
 }
 
 TEST(arpa_inet, inet_nsap_addr) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   // inet_nsap_addr() doesn't seem to be documented anywhere, but it's basically
   // text to binary for arbitrarily-long strings like "0xdeadbeef". Any
   // '.', '+', or '/' characters are ignored as punctuation. The return value is
@@ -240,7 +242,7 @@
 }
 
 TEST(arpa_inet, inet_nsap_ntoa) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   // inet_nsap_ntoa() doesn't seem to be documented anywhere, but it's basically
   // binary to text for arbitrarily-long byte buffers.
   // The return value is a pointer to the buffer. No errors are possible.
@@ -254,7 +256,7 @@
 }
 
 TEST(arpa_inet, inet_nsap_ntoa__nullptr) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   // If you don't provide a destination, a static buffer is provided for you.
   const unsigned char bytes[] = {0x01, 0x00, 0x02, 0x0e, 0xf0, 0x20};
   ASSERT_STREQ("0x01.0002.0EF0.20", inet_nsap_ntoa(6, bytes, nullptr));
diff --git a/tests/dirent_test.cpp b/tests/dirent_test.cpp
index 1155a4e..3ea9cbd 100644
--- a/tests/dirent_test.cpp
+++ b/tests/dirent_test.cpp
@@ -20,6 +20,7 @@
 #include <errno.h>
 #include <fcntl.h>
 #include <limits.h>
+#include <sys/cdefs.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <unistd.h>
@@ -82,7 +83,7 @@
 }
 
 TEST(dirent, scandirat_scandirat64) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   // Get everything from /proc/self...
   dirent** entries;
   int entry_count = scandir("/proc/self", &entries, nullptr, alphasort);
@@ -144,7 +145,7 @@
 }
 
 TEST(dirent, scandirat_ENOENT) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   int root_fd = open("/", O_DIRECTORY | O_RDONLY);
   ASSERT_NE(-1, root_fd);
   dirent** entries;
@@ -158,7 +159,7 @@
 }
 
 TEST(dirent, scandirat64_ENOENT) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   int root_fd = open("/", O_DIRECTORY | O_RDONLY);
   ASSERT_NE(-1, root_fd);
   dirent64** entries;
diff --git a/tests/dlfcn_test.cpp b/tests/dlfcn_test.cpp
index 6bbe41b..a9c2b87 100644
--- a/tests/dlfcn_test.cpp
+++ b/tests/dlfcn_test.cpp
@@ -18,9 +18,10 @@
 
 #include <dlfcn.h>
 #include <limits.h>
-#include <stdio.h>
 #include <stdint.h>
+#include <stdio.h>
 #include <string.h>
+#include <sys/cdefs.h>
 #if __has_include(<sys/auxv.h>)
 #include <sys/auxv.h>
 #endif
@@ -1259,7 +1260,7 @@
 }
 
 TEST(dlfcn, dlvsym_smoke) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   void* handle = dlopen("libtest_versioned_lib.so", RTLD_NOW);
   ASSERT_TRUE(handle != nullptr) << dlerror();
   typedef int (*fn_t)();
diff --git a/tests/fenv_test.cpp b/tests/fenv_test.cpp
index ea3f539..c5b5eca 100644
--- a/tests/fenv_test.cpp
+++ b/tests/fenv_test.cpp
@@ -20,6 +20,7 @@
 
 #include <fenv.h>
 #include <stdint.h>
+#include <sys/cdefs.h>
 
 static void TestRounding(float expectation1, float expectation2) {
   // Volatile to prevent compile-time evaluation.
@@ -170,7 +171,7 @@
 }
 
 TEST(fenv, fedisableexcept_fegetexcept) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   feclearexcept(FE_ALL_EXCEPT);
   ASSERT_EQ(0, fetestexcept(FE_ALL_EXCEPT));
 
@@ -185,7 +186,7 @@
 }
 
 TEST(fenv, feenableexcept_fegetexcept) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
 #if defined(__aarch64__) || defined(__arm__)
   // ARM doesn't support this. They used to if you go back far enough, but it was removed in
   // the Cortex-A8 between r3p1 and r3p2.
diff --git a/tests/glob_test.cpp b/tests/glob_test.cpp
index 8bf35bf..6ce5f2f 100644
--- a/tests/glob_test.cpp
+++ b/tests/glob_test.cpp
@@ -17,6 +17,8 @@
 #include <glob.h>
 
 #include <dirent.h>
+#include <sys/cdefs.h>
+
 #include <gtest/gtest.h>
 
 #include <string>
@@ -34,7 +36,7 @@
 // Helper for use with GLOB_ALTDIRFUNC to iterate over the elements of `fake_dir`.
 //
 
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
 static std::vector<std::string> fake_dir;
 static size_t fake_dir_offset;
 static void fake_closedir(void*) {
@@ -104,7 +106,7 @@
   globfree(&g);
 }
 
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
 static std::string g_failure_path;
 static int g_failure_errno;
 static int test_error_callback_result;
@@ -116,7 +118,7 @@
 #endif
 
 TEST(glob, glob_gl_errfunc) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   glob_t g = {};
   InstallFake(&g);
 
@@ -137,7 +139,7 @@
 }
 
 TEST(glob, glob_GLOB_ERR) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   glob_t g = {};
   InstallFake(&g);
 
@@ -184,7 +186,7 @@
 }
 
 TEST(glob, glob_GLOB_NOSORT) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   fake_dir = { "c", "a", "d", "b" };
 
   glob_t g = {};
@@ -213,7 +215,7 @@
 }
 
 TEST(glob, glob_GLOB_MAGCHAR) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   glob_t g = {};
   ASSERT_EQ(GLOB_NOMATCH, glob("/does-not-exist", 0, nullptr, &g));
   ASSERT_TRUE((g.gl_flags & GLOB_MAGCHAR) == 0);
@@ -228,7 +230,7 @@
 #endif
 }
 
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
 static void CheckGlob(const char* pattern, const std::vector<std::string>& expected_matches) {
   glob_t g = {};
   InstallFake(&g);
@@ -248,7 +250,7 @@
 #endif
 
 TEST(glob, glob_globbing) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   fake_dir = { "f1", "f2", "f30", "f40" };
 
   CheckGlob("f?", { "f1", "f2" });
@@ -260,7 +262,7 @@
 }
 
 TEST(glob, glob_globbing_rsc) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   // https://research.swtch.com/glob
   fake_dir = { "axbxcxdxe" };
   CheckGlob("a*b*c*d*e*", { "axbxcxdxe" });
diff --git a/tests/libgen_basename_test.cpp b/tests/libgen_basename_test.cpp
index 1202af6..300282c 100644
--- a/tests/libgen_basename_test.cpp
+++ b/tests/libgen_basename_test.cpp
@@ -14,11 +14,13 @@
  * limitations under the License.
  */
 
+#include <sys/cdefs.h>
+
 #ifndef _GNU_SOURCE
   #define _GNU_SOURCE 1
 #endif
 
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
 #include <string.h>
 
 #if defined(basename)
@@ -33,8 +35,8 @@
 
 #include <libgen.h>
 
-#if !defined(basename) && !defined(MUSL)
-  #error basename should be defined at this point
+#if !defined(basename) && !defined(ANDROID_HOST_MUSL)
+#error basename should be defined at this point
 #endif
 
 static char* posix_basename(char* in) {
@@ -44,7 +46,7 @@
 #include <errno.h>
 #include <gtest/gtest.h>
 
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
 static void __TestGnuBasename(const char* in, const char* expected_out, int line) {
   errno = 0;
   const char* out = gnu_basename(in);
@@ -66,7 +68,7 @@
 #define TestPosixBasename(in, expected) __TestPosixBasename(in, expected, __LINE__)
 
 TEST(libgen_basename, gnu_basename) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   // GNU's basename doesn't accept NULL
   // TestGnuBasename(NULL, ".");
   TestGnuBasename("", "");
diff --git a/tests/malloc_test.cpp b/tests/malloc_test.cpp
index f15fc75..eae44ce 100644
--- a/tests/malloc_test.cpp
+++ b/tests/malloc_test.cpp
@@ -27,6 +27,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/auxv.h>
+#include <sys/cdefs.h>
 #include <sys/prctl.h>
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -59,7 +60,7 @@
 
 #define HAVE_REALLOCARRAY __GLIBC_PREREQ(2, 26)
 
-#elif defined(MUSL)
+#elif defined(ANDROID_HOST_MUSL)
 
 #define HAVE_REALLOCARRAY 1
 
@@ -659,7 +660,7 @@
 }
 
 TEST(malloc, mallopt_smoke) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   errno = 0;
   ASSERT_EQ(0, mallopt(-1000, 1));
   // mallopt doesn't set errno.
diff --git a/tests/math_test.cpp b/tests/math_test.cpp
index c53741c..76b5078 100644
--- a/tests/math_test.cpp
+++ b/tests/math_test.cpp
@@ -62,6 +62,7 @@
 #include <float.h>
 #include <limits.h>
 #include <stdint.h>
+#include <sys/cdefs.h>
 
 #include <android-base/scopeguard.h>
 
@@ -201,7 +202,7 @@
 }
 
 TEST(MATH_TEST, __fpclassifyd) {
-#if defined(__GLIBC__) || defined(MUSL)
+#if defined(__GLIBC__) || defined(ANDROID_HOST_MUSL)
 #define __fpclassifyd __fpclassify
 #endif
   ASSERT_EQ(FP_INFINITE, __fpclassifyd(HUGE_VAL));
@@ -246,7 +247,7 @@
 TEST(MATH_TEST, __isfinite) {
 #if defined(__GLIBC__)
 #define __isfinite __finite
-#elif defined(MUSL)
+#elif defined(ANDROID_HOST_MUSL)
 #define __isfinite isfinite
 #endif
   ASSERT_TRUE(__isfinite(123.0));
@@ -257,7 +258,7 @@
 TEST(MATH_TEST, __isfinitef) {
 #if defined(__GLIBC__)
 #define __isfinitef __finitef
-#elif defined(MUSL)
+#elif defined(ANDROID_HOST_MUSL)
 #define __isfinitef isfinite
 #endif
   ASSERT_TRUE(__isfinitef(123.0f));
@@ -268,7 +269,7 @@
 TEST(MATH_TEST, isfinitef) {
 #if defined(__GLIBC__)
 #define isfinitef __finitef
-#elif defined(MUSL)
+#elif defined(ANDROID_HOST_MUSL)
 #define isfinitef isfinite
 #endif
   ASSERT_TRUE(isfinitef(123.0f));
@@ -279,7 +280,7 @@
 TEST(MATH_TEST, __isfinitel) {
 #if defined(__GLIBC__)
 #define __isfinitel __finitel
-#elif defined(MUSL)
+#elif defined(ANDROID_HOST_MUSL)
 #define __isfinitel isfinite
 #endif
   ASSERT_TRUE(__isfinitel(123.0L));
@@ -290,7 +291,7 @@
 TEST(MATH_TEST, isfinitel) {
 #if defined(__GLIBC__)
 #define isfinitel __finitel
-#elif defined(MUSL)
+#elif defined(ANDROID_HOST_MUSL)
 #define isfinitel isfinite
 #endif
   ASSERT_TRUE(isfinitel(123.0L));
@@ -319,7 +320,7 @@
 extern "C" int isinfl(long double);
 
 TEST(MATH_TEST, __isinf) {
-#if defined(MUSL)
+#if defined(ANDROID_HOST_MUSL)
 #define __isinf isinf
 #endif
   ASSERT_FALSE(__isinf(123.0));
@@ -328,7 +329,7 @@
 }
 
 TEST(MATH_TEST, __isinff) {
-#if defined(MUSL)
+#if defined(ANDROID_HOST_MUSL)
 #define __isinff isinf
 #endif
   ASSERT_FALSE(__isinff(123.0f));
@@ -337,7 +338,7 @@
 }
 
 TEST(MATH_TEST, isinff) {
-#if defined(MUSL)
+#if defined(ANDROID_HOST_MUSL)
 #define isinff isinf
 #endif
   ASSERT_FALSE(isinff(123.0f));
@@ -346,7 +347,7 @@
 }
 
 TEST(MATH_TEST, __isinfl) {
-#if defined(MUSL)
+#if defined(ANDROID_HOST_MUSL)
 #define __isinfl isinf
 #endif
   ASSERT_FALSE(__isinfl(123.0L));
@@ -355,7 +356,7 @@
 }
 
 TEST(MATH_TEST, isinfl) {
-#if defined(MUSL)
+#if defined(ANDROID_HOST_MUSL)
 #define isinfl isinf
 #endif
   ASSERT_FALSE(isinfl(123.0L));
@@ -377,7 +378,7 @@
 extern "C" int isnanl(long double);
 
 TEST(MATH_TEST, __isnan) {
-#if defined(MUSL)
+#if defined(ANDROID_HOST_MUSL)
 #define __isnan isnan
 #endif
   ASSERT_FALSE(__isnan(123.0));
@@ -385,7 +386,7 @@
 }
 
 TEST(MATH_TEST, __isnanf) {
-#if defined(MUSL)
+#if defined(ANDROID_HOST_MUSL)
 #define __isnanf isnan
 #endif
   ASSERT_FALSE(__isnanf(123.0f));
@@ -393,7 +394,7 @@
 }
 
 TEST(MATH_TEST, isnanf) {
-#if defined(MUSL)
+#if defined(ANDROID_HOST_MUSL)
 #define isnanf isnan
 #endif
   ASSERT_FALSE(isnanf(123.0f));
@@ -401,7 +402,7 @@
 }
 
 TEST(MATH_TEST, __isnanl) {
-#if defined(MUSL)
+#if defined(ANDROID_HOST_MUSL)
 #define __isnanl isnan
 #endif
   ASSERT_FALSE(__isnanl(123.0L));
@@ -409,7 +410,7 @@
 }
 
 TEST(MATH_TEST, isnanl) {
-#if defined(MUSL)
+#if defined(ANDROID_HOST_MUSL)
 #define isnanl isnan
 #endif
   ASSERT_FALSE(isnanl(123.0L));
@@ -1385,7 +1386,7 @@
 }
 
 TEST(MATH_TEST, significandl) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   ASSERT_DOUBLE_EQ(0.0L, significandl(0.0L));
   ASSERT_DOUBLE_EQ(1.2L, significandl(1.2L));
   ASSERT_DOUBLE_EQ(1.53125L, significandl(12.25L));
@@ -1428,7 +1429,7 @@
 }
 
 TEST(MATH_TEST, gamma) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   ASSERT_DOUBLE_EQ(log(24.0), gamma(5.0));
 #else
   GTEST_SKIP() << "musl doesn't have gamma";
@@ -1436,7 +1437,7 @@
 }
 
 TEST(MATH_TEST, gammaf) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   ASSERT_FLOAT_EQ(logf(24.0f), gammaf(5.0f));
 #else
   GTEST_SKIP() << "musl doesn't have gammaf";
diff --git a/tests/netdb_test.cpp b/tests/netdb_test.cpp
index 0205707..1cb569c 100644
--- a/tests/netdb_test.cpp
+++ b/tests/netdb_test.cpp
@@ -19,10 +19,11 @@
 #include <gtest/gtest.h>
 
 #include <arpa/inet.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
 #include <netinet/in.h>
+#include <string.h>
+#include <sys/cdefs.h>
+#include <sys/socket.h>
+#include <sys/types.h>
 
 // https://code.google.com/p/android/issues/detail?id=13228
 TEST(netdb, freeaddrinfo_NULL) {
@@ -265,7 +266,7 @@
   ASSERT_EQ(0, hp->h_addr[0]);
 }
 
-#if defined(MUSL)
+#if defined(ANDROID_HOST_MUSL)
 // musl doesn't define NETDB_INTERNAL.  It also never sets *err to -1, but
 // since gethostbyname_r is a glibc extension, the difference in behavior
 // between musl and  glibc should probably be considered a bug in musl.
diff --git a/tests/netinet_in_test.cpp b/tests/netinet_in_test.cpp
index 8343f57..b7dd7c5 100644
--- a/tests/netinet_in_test.cpp
+++ b/tests/netinet_in_test.cpp
@@ -17,6 +17,7 @@
 #include <netinet/in.h>
 
 #include <errno.h>
+#include <sys/cdefs.h>
 
 #include <gtest/gtest.h>
 
@@ -31,7 +32,7 @@
 static constexpr uint64_t be64 = 0xf0debc9a78563412;
 
 TEST(netinet_in, bindresvport) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   // This isn't something we can usually test (because you need to be root),
   // so just check the symbol's there.
   ASSERT_EQ(-1, bindresvport(-1, nullptr));
diff --git a/tests/pthread_test.cpp b/tests/pthread_test.cpp
index 3686ffb..e4f9cb8 100644
--- a/tests/pthread_test.cpp
+++ b/tests/pthread_test.cpp
@@ -23,6 +23,7 @@
 #include <pthread.h>
 #include <signal.h>
 #include <stdio.h>
+#include <sys/cdefs.h>
 #include <sys/mman.h>
 #include <sys/prctl.h>
 #include <sys/resource.h>
@@ -844,7 +845,7 @@
     ASSERT_EQ(pshared_value_array[i], pshared);
   }
 
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   // musl doesn't have pthread_rwlockattr_setkind_np
   int kind_array[] = {PTHREAD_RWLOCK_PREFER_READER_NP,
                       PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP};
@@ -1238,7 +1239,7 @@
 #endif  // __BIONIC__
 }
 
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
 // musl doesn't have pthread_rwlockattr_setkind_np
 class RwlockKindTestHelper {
  private:
@@ -1310,7 +1311,7 @@
 #endif
 
 TEST(pthread, pthread_rwlock_kind_PTHREAD_RWLOCK_PREFER_READER_NP) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   RwlockKindTestHelper helper(PTHREAD_RWLOCK_PREFER_READER_NP);
   ASSERT_EQ(0, pthread_rwlock_rdlock(&helper.lock));
 
@@ -1332,7 +1333,7 @@
 }
 
 TEST(pthread, pthread_rwlock_kind_PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   RwlockKindTestHelper helper(PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP);
   ASSERT_EQ(0, pthread_rwlock_rdlock(&helper.lock));
 
@@ -2166,7 +2167,7 @@
   ASSERT_EQ(0, memcmp(&lock_normal, &m1.lock, sizeof(pthread_mutex_t)));
   pthread_mutex_destroy(&lock_normal);
 
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   // musl doesn't support PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP or
   // PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP.
   pthread_mutex_t lock_errorcheck = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;
diff --git a/tests/resolv_test.cpp b/tests/resolv_test.cpp
index 7f1f03e..4425503 100644
--- a/tests/resolv_test.cpp
+++ b/tests/resolv_test.cpp
@@ -28,10 +28,12 @@
 
 #include <resolv.h>
 
+#include <sys/cdefs.h>
+
 #include <gtest/gtest.h>
 
 TEST(resolv, b64_pton_28035006) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   // Test data from https://groups.google.com/forum/#!topic/mailing.openbsd.tech/w3ACIlklJkI.
   const char* data =
       "p1v3+nehH3N3n+/OokzXpsyGF2VVpxIxkjSn3Mv/Sq74OE1iFuVU+K4bQImuVj"
@@ -48,7 +50,7 @@
 }
 
 TEST(resolv, b64_ntop) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   char buf[128];
   memset(buf, 'x', sizeof(buf));
   ASSERT_EQ(static_cast<int>(strlen("aGVsbG8=")),
@@ -61,7 +63,7 @@
 }
 
 TEST(resolv, b64_pton) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   u_char buf[128];
   memset(buf, 'x', sizeof(buf));
   ASSERT_EQ(static_cast<int>(strlen("hello")), b64_pton("aGVsbG8=", buf, sizeof(buf)));
@@ -72,7 +74,7 @@
 }
 
 TEST(resolv, p_class) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   ASSERT_STREQ("IN", p_class(ns_c_in));
   ASSERT_STREQ("BADCLASS", p_class(-1));
 #else
@@ -81,7 +83,7 @@
 }
 
 TEST(resolv, p_type) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   ASSERT_STREQ("AAAA", p_type(ns_t_aaaa));
   ASSERT_STREQ("BADTYPE", p_type(-1));
 #else
@@ -94,7 +96,7 @@
 }
 
 TEST(resolv, res_randomid) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   res_randomid();
 #else
   GTEST_SKIP() << "musl doesn't have res_randomid";
diff --git a/tests/signal_test.cpp b/tests/signal_test.cpp
index 08c21b4..5bda8b3 100644
--- a/tests/signal_test.cpp
+++ b/tests/signal_test.cpp
@@ -16,6 +16,7 @@
 
 #include <errno.h>
 #include <signal.h>
+#include <sys/cdefs.h>
 #include <sys/syscall.h>
 #include <sys/types.h>
 #include <unistd.h>
@@ -554,7 +555,7 @@
 }
 
 TEST(signal, sys_siglist) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   ASSERT_TRUE(sys_siglist[0] == nullptr);
   ASSERT_STREQ("Hangup", sys_siglist[SIGHUP]);
 #else
@@ -594,7 +595,7 @@
 }
 
 TEST(signal, pthread_sigqueue_self) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   ScopedSignalHandler ssh(SIGALRM, SigqueueSignalHandler, SA_SIGINFO);
   sigval sigval = {.sival_int = 1};
   errno = 0;
@@ -607,7 +608,7 @@
 }
 
 TEST(signal, pthread_sigqueue_other) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   ScopedSignalHandler ssh(SIGALRM, SigqueueSignalHandler, SA_SIGINFO);
   sigval sigval = {.sival_int = 1};
 
diff --git a/tests/spawn_test.cpp b/tests/spawn_test.cpp
index 3309466..f3c5b9a 100644
--- a/tests/spawn_test.cpp
+++ b/tests/spawn_test.cpp
@@ -18,6 +18,8 @@
 
 #include <errno.h>
 #include <fcntl.h>
+#include <sys/cdefs.h>
+
 #include <gtest/gtest.h>
 
 #include "SignalUtils.h"
@@ -379,7 +381,7 @@
 }
 
 TEST(spawn, posix_spawn_POSIX_SPAWN_SETSIGMASK) {
-#if defined(__GLIBC__) || defined(MUSL)
+#if defined(__GLIBC__) || defined(ANDROID_HOST_MUSL)
   GTEST_SKIP() << "glibc doesn't ignore the same signals.";
 #else
   // Block SIGBUS in the parent...
@@ -417,7 +419,7 @@
 }
 
 TEST(spawn, posix_spawn_POSIX_SPAWN_SETSIGDEF) {
-#if defined(__GLIBC__) || defined(MUSL)
+#if defined(__GLIBC__) || defined(ANDROID_HOST_MUSL)
   GTEST_SKIP() << "glibc doesn't ignore the same signals.";
 #else
   // Ignore SIGALRM and SIGCONT in the parent...
diff --git a/tests/stdio_test.cpp b/tests/stdio_test.cpp
index 9d840f5..e38dd60 100644
--- a/tests/stdio_test.cpp
+++ b/tests/stdio_test.cpp
@@ -19,14 +19,15 @@
 #include <errno.h>
 #include <fcntl.h>
 #include <limits.h>
+#include <locale.h>
 #include <math.h>
 #include <stdio.h>
-#include <sys/types.h>
+#include <sys/cdefs.h>
 #include <sys/socket.h>
 #include <sys/stat.h>
+#include <sys/types.h>
 #include <unistd.h>
 #include <wchar.h>
-#include <locale.h>
 
 #include <string>
 #include <thread>
@@ -2740,7 +2741,7 @@
 }
 
 TEST(STDIO_TEST, renameat2) {
-#if defined(__GLIBC__) || defined(MUSL)
+#if defined(__GLIBC__) || defined(ANDROID_HOST_MUSL)
   GTEST_SKIP() << "glibc doesn't have renameat2 until 2.28 and musl doesn't have renameat2";
 #else
   TemporaryDir td;
diff --git a/tests/stdlib_test.cpp b/tests/stdlib_test.cpp
index 5b81834..6679480 100644
--- a/tests/stdlib_test.cpp
+++ b/tests/stdlib_test.cpp
@@ -22,6 +22,7 @@
 #include <pthread.h>
 #include <stdint.h>
 #include <stdlib.h>
+#include <sys/cdefs.h>
 #include <sys/types.h>
 #include <sys/wait.h>
 #include <unistd.h>
@@ -632,7 +633,7 @@
   AssertChildExited(pid, 99);
 }
 
-#if defined(MUSL)
+#if defined(ANDROID_HOST_MUSL)
 // musl doesn't have getpt
 int getpt() {
   return posix_openpt(O_RDWR|O_NOCTTY);
@@ -968,7 +969,7 @@
 }
 
 TEST(stdlib, getprogname) {
-#if defined(__GLIBC__) || defined(MUSL)
+#if defined(__GLIBC__) || defined(ANDROID_HOST_MUSL)
   GTEST_SKIP() << "glibc and musl don't have getprogname()";
 #else
   // You should always have a name.
@@ -979,7 +980,7 @@
 }
 
 TEST(stdlib, setprogname) {
-#if defined(__GLIBC__) || defined(MUSL)
+#if defined(__GLIBC__) || defined(ANDROID_HOST_MUSL)
   GTEST_SKIP() << "glibc and musl don't have setprogname()";
 #else
   // setprogname() only takes the basename of what you give it.
diff --git a/tests/string_posix_strerror_r_test.cpp b/tests/string_posix_strerror_r_test.cpp
index f3d73d4..e4becaa 100644
--- a/tests/string_posix_strerror_r_test.cpp
+++ b/tests/string_posix_strerror_r_test.cpp
@@ -27,7 +27,7 @@
 
   // Valid.
   ASSERT_EQ(0, posix_strerror_r(0, buf, sizeof(buf)));
-#if defined(MUSL)
+#if defined(ANDROID_HOST_MUSL)
   ASSERT_STREQ("No error information", buf);
 #else
   ASSERT_STREQ("Success", buf);
@@ -35,7 +35,7 @@
   ASSERT_EQ(0, posix_strerror_r(1, buf, sizeof(buf)));
   ASSERT_STREQ("Operation not permitted", buf);
 
-#if defined(__BIONIC__) || defined(MUSL)
+#if defined(__BIONIC__) || defined(ANDROID_HOST_MUSL)
   // Invalid.
   ASSERT_EQ(0, posix_strerror_r(-1, buf, sizeof(buf)));
 # if defined(__BIONIC__)
diff --git a/tests/string_test.cpp b/tests/string_test.cpp
index d19b60d..8d3fb68 100644
--- a/tests/string_test.cpp
+++ b/tests/string_test.cpp
@@ -23,6 +23,7 @@
 #include <malloc.h>
 #include <math.h>
 #include <stdint.h>
+#include <sys/cdefs.h>
 
 #include <algorithm>
 #include <vector>
@@ -95,7 +96,7 @@
 }
 
 TEST(STRING_TEST, gnu_strerror_r) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   char buf[256];
 
   // Note that glibc doesn't necessarily write into the buffer.
@@ -1477,7 +1478,7 @@
   RunSingleBufferOverreadTest(DoStrrchrTest);
 }
 
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
 static void TestBasename(const char* in, const char* expected_out) {
   errno = 0;
   const char* out = basename(in);
@@ -1487,7 +1488,7 @@
 #endif
 
 TEST(STRING_TEST, __gnu_basename) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   TestBasename("", "");
   TestBasename("/usr/lib", "lib");
   TestBasename("/usr/", "");
diff --git a/tests/sys_time_test.cpp b/tests/sys_time_test.cpp
index 5dda7ab..07394d6 100644
--- a/tests/sys_time_test.cpp
+++ b/tests/sys_time_test.cpp
@@ -132,6 +132,11 @@
   ASSERT_EQ(EINVAL, errno);
 }
 
+// Musl doesn't define __NR_gettimeofday on 32-bit architectures.
+#if !defined(__NR_gettimeofday)
+#define __NR_gettimeofday __NR_gettimeofday_time32
+#endif
+
 TEST(sys_time, gettimeofday) {
   // Try to ensure that our vdso gettimeofday is working.
   timeval tv1;
diff --git a/tests/time_test.cpp b/tests/time_test.cpp
index 932af9e..5fc4cad 100644
--- a/tests/time_test.cpp
+++ b/tests/time_test.cpp
@@ -20,6 +20,7 @@
 #include <gtest/gtest.h>
 #include <pthread.h>
 #include <signal.h>
+#include <sys/cdefs.h>
 #include <sys/syscall.h>
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -282,7 +283,7 @@
 }
 
 TEST(time, strptime_l) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   setenv("TZ", "UTC", 1);
 
   struct tm t;
@@ -760,6 +761,11 @@
 #endif
 }
 
+// Musl doesn't define __NR_clock_gettime on 32-bit architectures.
+#if !defined(__NR_clock_gettime)
+#define __NR_clock_gettime __NR_clock_gettime32
+#endif
+
 TEST(time, clock_gettime) {
   // Try to ensure that our vdso clock_gettime is working.
   timespec ts0;
diff --git a/tests/unistd_test.cpp b/tests/unistd_test.cpp
index 6e495fc..840dad0 100644
--- a/tests/unistd_test.cpp
+++ b/tests/unistd_test.cpp
@@ -852,7 +852,7 @@
   EXPECT_EQ(_POSIX_VERSION, _POSIX_MONOTONIC_CLOCK);
 #endif
   EXPECT_GT(_POSIX_NO_TRUNC, 0);
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   EXPECT_EQ(_POSIX_VERSION, _POSIX_PRIORITY_SCHEDULING);
 #endif
   EXPECT_EQ(_POSIX_VERSION, _POSIX_RAW_SOCKETS);
@@ -863,7 +863,7 @@
   EXPECT_EQ(_POSIX_VERSION, _POSIX_SEMAPHORES);
   EXPECT_GT(_POSIX_SHELL, 0);
   EXPECT_EQ(_POSIX_VERSION, _POSIX_SPAWN);
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   EXPECT_EQ(-1, _POSIX_SPORADIC_SERVER);
   EXPECT_EQ(_POSIX_VERSION, _POSIX_SYNCHRONIZED_IO);
 #endif
@@ -875,16 +875,16 @@
 #endif
   EXPECT_EQ(_POSIX_VERSION, _POSIX_THREAD_PRIORITY_SCHEDULING);
   EXPECT_EQ(_POSIX_VERSION, _POSIX_THREAD_PROCESS_SHARED);
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   EXPECT_EQ(-1, _POSIX_THREAD_ROBUST_PRIO_PROTECT);
 #endif
   EXPECT_EQ(_POSIX_VERSION, _POSIX_THREAD_SAFE_FUNCTIONS);
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   EXPECT_EQ(-1, _POSIX_THREAD_SPORADIC_SERVER);
 #endif
   EXPECT_EQ(_POSIX_VERSION, _POSIX_TIMEOUTS);
   EXPECT_EQ(_POSIX_VERSION, _POSIX_TIMERS);
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   EXPECT_EQ(-1, _POSIX_TRACE);
   EXPECT_EQ(-1, _POSIX_TRACE_EVENT_FILTER);
   EXPECT_EQ(-1, _POSIX_TRACE_INHERIT);
@@ -895,13 +895,13 @@
 
   EXPECT_EQ(_POSIX_VERSION, _POSIX2_VERSION);
   EXPECT_EQ(_POSIX_VERSION, _POSIX2_C_BIND);
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   EXPECT_EQ(_POSIX_VERSION, _POSIX2_CHAR_TERM);
 #endif
 
   EXPECT_EQ(700, _XOPEN_VERSION);
   EXPECT_EQ(1, _XOPEN_ENH_I18N);
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   EXPECT_EQ(1, _XOPEN_REALTIME);
   EXPECT_EQ(1, _XOPEN_REALTIME_THREADS);
   EXPECT_EQ(1, _XOPEN_SHM);
diff --git a/tests/wchar_test.cpp b/tests/wchar_test.cpp
index 218c724..85a75ec 100644
--- a/tests/wchar_test.cpp
+++ b/tests/wchar_test.cpp
@@ -22,6 +22,7 @@
 #include <locale.h>
 #include <math.h>
 #include <stdint.h>
+#include <sys/cdefs.h>
 #include <wchar.h>
 
 #include "utils.h"
@@ -800,7 +801,7 @@
 }
 
 TEST(wchar, wmempcpy) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   wchar_t dst[6];
   ASSERT_EQ(&dst[4], wmempcpy(dst, L"hello", 4));
 #else
@@ -917,7 +918,7 @@
 }
 
 TEST(wchar, wcstod_l) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   EXPECT_EQ(1.23, wcstod_l(L"1.23", nullptr, LC_GLOBAL_LOCALE));
 #else
   GTEST_SKIP() << "musl doesn't have wcstod_l";
@@ -925,7 +926,7 @@
 }
 
 TEST(wchar, wcstof_l) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   EXPECT_EQ(1.23f, wcstof_l(L"1.23", nullptr, LC_GLOBAL_LOCALE));
 #else
   GTEST_SKIP() << "musl doesn't have wcstof_l";
@@ -933,7 +934,7 @@
 }
 
 TEST(wchar, wcstol_l) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   EXPECT_EQ(123L, wcstol_l(L"123", nullptr, 10, LC_GLOBAL_LOCALE));
 #else
   GTEST_SKIP() << "musl doesn't have wcstol_l";
@@ -949,7 +950,7 @@
 }
 
 TEST(wchar, wcstoul_l) {
-#if !defined(MUSL)
+#if !defined(ANDROID_HOST_MUSL)
   EXPECT_EQ(123UL, wcstoul_l(L"123", nullptr, 10, LC_GLOBAL_LOCALE));
 #else
   GTEST_SKIP() << "musl doesn't have wcstoul_l";
