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 2024b45..a9c2b87 100644
--- a/tests/dlfcn_test.cpp
+++ b/tests/dlfcn_test.cpp
@@ -21,6 +21,7 @@
 #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 fd3a81c..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,7 +35,7 @@
 
 #include <libgen.h>
 
-#if !defined(basename) && !defined(MUSL)
+#if !defined(basename) && !defined(ANDROID_HOST_MUSL)
 #error basename should be defined at this point
 #endif
 
@@ -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 381ba50..1cb569c 100644
--- a/tests/netdb_test.cpp
+++ b/tests/netdb_test.cpp
@@ -21,6 +21,7 @@
 #include <arpa/inet.h>
 #include <netinet/in.h>
 #include <string.h>
+#include <sys/cdefs.h>
 #include <sys/socket.h>
 #include <sys/types.h>
 
@@ -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 99197c9..e38dd60 100644
--- a/tests/stdio_test.cpp
+++ b/tests/stdio_test.cpp
@@ -22,6 +22,7 @@
 #include <locale.h>
 #include <math.h>
 #include <stdio.h>
+#include <sys/cdefs.h>
 #include <sys/socket.h>
 #include <sys/stat.h>
 #include <sys/types.h>
@@ -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/time_test.cpp b/tests/time_test.cpp
index 85c5390..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;
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";
