diff --git a/libc/include/fcntl.h b/libc/include/fcntl.h
index 88bcc78..2d01be7 100644
--- a/libc/include/fcntl.h
+++ b/libc/include/fcntl.h
@@ -108,6 +108,7 @@
 #define __open_too_few_args_error "called with O_CREAT, but missing mode"
 #if defined(__clang__)
 
+#if __ANDROID_API__ >= __ANDROID_API_J_MR1__
 __BIONIC_ERROR_FUNCTION_VISIBILITY
 int open(const char* pathname, int flags, mode_t modes, ...) __overloadable
         __errorattr(__open_too_many_args_error);
@@ -156,11 +157,13 @@
            mode_t modes) __overloadable {
     return __openat_real(dirfd, pathname, flags, modes);
 }
+#endif /* __ANDROID_API__ >= __ANDROID_API_J_MR1__ */
 
 #else /* defined(__clang__) */
 __errordecl(__creat_missing_mode, __open_too_few_args_error);
 __errordecl(__creat_too_many_args, __open_too_many_args_error);
 
+#if __ANDROID_API__ >= __ANDROID_API_J_MR1__
 __BIONIC_FORTIFY_INLINE
 int open(const char* pathname, int flags, ...) {
     if (__builtin_constant_p(flags)) {
@@ -198,6 +201,7 @@
 
     return __openat_real(dirfd, pathname, flags, __builtin_va_arg_pack());
 }
+#endif /* __ANDROID_API__ >= __ANDROID_API_J_MR1__ */
 
 #endif /* defined(__clang__) */
 
diff --git a/libc/include/stdio.h b/libc/include/stdio.h
index f1f86a3..7d63fa4 100644
--- a/libc/include/stdio.h
+++ b/libc/include/stdio.h
@@ -379,6 +379,7 @@
 }
 #endif /* __ANDROID_API__ >= __ANDROID_API_N__ */
 
+#if __ANDROID_API__ >= __ANDROID_API_J_MR1__
 __BIONIC_ERROR_FUNCTION_VISIBILITY
 char *fgets(char* __restrict dest, int size, FILE* stream) __overloadable
     __enable_if(size < 0, "size is negative")
@@ -401,6 +402,7 @@
 
     return __fgets_chk(dest, size, stream, bos);
 }
+#endif /* __ANDROID_API__ >= __ANDROID_API_J_MR1__ */
 
 #else /* defined(__clang__) */
 
@@ -482,6 +484,7 @@
 }
 #endif /* __ANDROID_API__ >= __ANDROID_API_N__ */
 
+#if __ANDROID_API__ >= __ANDROID_API_J_MR1__
 __BIONIC_FORTIFY_INLINE
 char *fgets(char* dest, int size, FILE* stream) {
     size_t bos = __bos(dest);
@@ -511,6 +514,7 @@
 
     return __fgets_chk(dest, size, stream, bos);
 }
+#endif /* __ANDROID_API__ >= __ANDROID_API_J_MR1__ */
 
 #endif /* defined(__clang__) */
 #endif /* defined(__BIONIC_FORTIFY) */
diff --git a/libc/include/string.h b/libc/include/string.h
index 7611b80..26bd93f 100644
--- a/libc/include/string.h
+++ b/libc/include/string.h
@@ -194,7 +194,6 @@
         const char* _Nonnull __restrict src) __overloadable {
     return __builtin___strcpy_chk(dst, src, __bos(dst));
 }
-#endif /* __ANDROID_API__ >= __ANDROID_API_J_MR1__ */
 
 __BIONIC_FORTIFY_INLINE
 char* strcat(char* _Nonnull __restrict const dst __pass_object_size,
@@ -213,6 +212,7 @@
         __overloadable {
     return __builtin___memset_chk(s, c, n, __bos0(s));
 }
+#endif /* __ANDROID_API__ >= __ANDROID_API_J_MR1__ */
 
 
 #if defined(__clang__)
@@ -287,9 +287,7 @@
 
     return __stpncpy_chk2(dst, src, n, bos_dst, bos_src);
 }
-#endif /* __ANDROID_API__ >= __ANDROID_API_L__ */
 
-#if __ANDROID_API__ >= __ANDROID_API_J_MR1__
 __BIONIC_FORTIFY_INLINE
 char* strncpy(char* __restrict const _Nonnull dst __pass_object_size,
         const char* __restrict const _Nonnull src __pass_object_size,
@@ -304,7 +302,9 @@
 
     return __strncpy_chk2(dst, src, n, bos_dst, bos_src);
 }
+#endif /* __ANDROID_API__ >= __ANDROID_API_L__ */
 
+#if __ANDROID_API__ >= __ANDROID_API_J_MR1__
 __BIONIC_FORTIFY_INLINE
 size_t strlcpy(char* const _Nonnull __restrict dst __pass_object_size,
         const char *_Nonnull __restrict src, size_t size) __overloadable {
@@ -383,6 +383,7 @@
 }
 #endif /* __ANDROID_API__ >= __ANDROID_API_J_MR2__ */
 
+#if __ANDROID_API__ >= __ANDROID_API_J_MR1__
 /* In *many* cases, memset(foo, sizeof(foo), 0) is a mistake where the user has
  * flipped the size + value arguments. However, there may be cases (e.g. with
  * macros) where it's okay for the size to fold to zero. We should warn on this,
@@ -412,6 +413,7 @@
         __warnattr_real("will set 0 bytes; maybe the arguments got flipped? "
                         "(Add __bionic_zero_size_is_okay as a fourth argument "
                         "to silence this.)");
+#endif /* __ANDROID_API__ >= __ANDROID_API_J_MR1__ */
 
 #undef __error_zero_size
 #undef __error_if_overflows_dst
diff --git a/libc/include/unistd.h b/libc/include/unistd.h
index 7c6125a..017d97a 100644
--- a/libc/include/unistd.h
+++ b/libc/include/unistd.h
@@ -403,6 +403,7 @@
 }
 #endif /* __ANDROID_API__ >= __ANDROID_API_N__ */
 
+#if __ANDROID_API__ >= __ANDROID_API_L__
 __BIONIC_ERROR_FUNCTION_VISIBILITY
 ssize_t read(int fd, void* buf, size_t count) __overloadable
         __error_if_overflows_ssizet(count);
@@ -423,7 +424,9 @@
 
     return __read_chk(fd, buf, count, bos);
 }
+#endif /* __ANDROID_API__ >= __ANDROID_API_L__ */
 
+#if __ANDROID_API__ >= __ANDROID_API_N__
 __BIONIC_ERROR_FUNCTION_VISIBILITY
 ssize_t write(int fd, const void* buf, size_t count) __overloadable
         __error_if_overflows_ssizet(count);
@@ -444,7 +447,9 @@
 
     return __write_chk(fd, buf, count, bos);
 }
+#endif /* __ANDROID_API__ >= __ANDROID_API_N__ */
 
+#if __ANDROID_API__ >= __ANDROID_API_M__
 __BIONIC_ERROR_FUNCTION_VISIBILITY
 ssize_t readlink(const char* path, char* buf, size_t size) __overloadable
         __error_if_overflows_ssizet(size);
@@ -466,7 +471,6 @@
     return __readlink_chk(path, buf, size, bos);
 }
 
-
 __BIONIC_ERROR_FUNCTION_VISIBILITY
 ssize_t readlinkat(int dirfd, const char* path, char* buf, size_t size)
         __overloadable
@@ -490,6 +494,7 @@
 
     return __readlinkat_chk(dirfd, path, buf, size, bos);
 }
+#endif /* __ANDROID_API__ >= __ANDROID_API_M__ */
 
 #undef __enable_if_no_overflow_ssizet
 #undef __error_if_overflows_objectsize
