Allow calling v?dprintf for any target API level.

Old versions of Android called these fdprintf and vfdprintf out of
fears that the glibc names would collide with user debug printfs.

Allow users to just use dprintf and vfdprintf on any version by
renaming those calls to their legacy equivalents if needed.

Test: built trivial NDK module targeting android-14 and using dprintf
Test: make checkbuild
Bug: https://github.com/android-ndk/ndk/issues/72
Change-Id: I90de149278f931380418536abaef47c5cee5c195
diff --git a/libc/include/stdio.h b/libc/include/stdio.h
index ca56437..b103990 100644
--- a/libc/include/stdio.h
+++ b/libc/include/stdio.h
@@ -151,8 +151,20 @@
 int	 vfprintf(FILE * __restrict, const char * __restrict _Nonnull, __va_list) __printflike(2, 0);
 int	 vprintf(const char * __restrict _Nonnull, __va_list) __printflike(1, 0);
 
+#if __ANDROID_API__ >= 21
 int dprintf(int, const char* __restrict _Nonnull, ...) __printflike(2, 3) __INTRODUCED_IN(21);
 int vdprintf(int, const char* __restrict _Nonnull, __va_list) __printflike(2, 0) __INTRODUCED_IN(21);
+#else
+/*
+ * Old versions of Android called these fdprintf and vfdprintf out of fears that the glibc names
+ * would collide with user debug printfs.
+ *
+ * Allow users to just use dprintf and vfdprintf on any version by renaming those calls to their
+ * legacy equivalents if needed.
+ */
+int dprintf(int, const char* __restrict _Nonnull, ...) __printflike(2, 3) __RENAME(fdprintf);
+int vdprintf(int, const char* __restrict _Nonnull, __va_list) __printflike(2, 0) __RENAME(vfdprintf);
+#endif
 
 #if (defined(__STDC_VERSION__) && __STDC_VERSION__ < 201112L) || \
     (defined(__cplusplus) && __cplusplus <= 201103L)
diff --git a/libc/libc.arm.map b/libc/libc.arm.map
index a4212dd..a22923e 100644
--- a/libc/libc.arm.map
+++ b/libc/libc.arm.map
@@ -343,6 +343,7 @@
     fdatasync;
     fdopen;
     fdopendir;
+    fdprintf; # arm x86 mips versioned=28
     feof;
     feof_unlocked; # introduced=23
     ferror;
@@ -1105,6 +1106,7 @@
     vdprintf; # introduced=21
     verr;
     verrx;
+    vfdprintf; # arm x86 mips versioned=28
     vfork;
     vfprintf;
     vfscanf;
@@ -1507,7 +1509,6 @@
     dlmalloc_inspect_all; # arm x86 mips
     dlmalloc_trim; # arm x86 mips
     dlmalloc_usable_size; # arm x86 mips
-    fdprintf; # arm x86 mips
     free_malloc_leak_info;
     ftime; # arm x86 mips
     get_malloc_leak_info;
@@ -1529,7 +1530,6 @@
     strtotimeval; # arm x86 mips
     sysv_signal; # arm x86 mips
     tkill; # arm x86 mips
-    vfdprintf; # arm x86 mips
     wait3; # arm x86 mips
     wcswcs; # arm x86 mips
 } LIBC_O;
diff --git a/libc/libc.map.txt b/libc/libc.map.txt
index c271a57..d4c36d5 100644
--- a/libc/libc.map.txt
+++ b/libc/libc.map.txt
@@ -345,6 +345,7 @@
     fdatasync;
     fdopen;
     fdopendir;
+    fdprintf; # arm x86 mips versioned=28
     feof;
     feof_unlocked; # introduced=23
     ferror;
@@ -1130,6 +1131,7 @@
     vdprintf; # introduced=21
     verr;
     verrx;
+    vfdprintf; # arm x86 mips versioned=28
     vfork;
     vfprintf;
     vfscanf;
@@ -1533,7 +1535,6 @@
     dlmalloc_inspect_all; # arm x86 mips
     dlmalloc_trim; # arm x86 mips
     dlmalloc_usable_size; # arm x86 mips
-    fdprintf; # arm x86 mips
     free_malloc_leak_info;
     ftime; # arm x86 mips
     get_malloc_leak_info;
@@ -1555,7 +1556,6 @@
     strtotimeval; # arm x86 mips
     sysv_signal; # arm x86 mips
     tkill; # arm x86 mips
-    vfdprintf; # arm x86 mips
     wait3; # arm x86 mips
     wcswcs; # arm x86 mips
 } LIBC_O;
diff --git a/libc/libc.mips.map b/libc/libc.mips.map
index 214c7f5..35a674e 100644
--- a/libc/libc.mips.map
+++ b/libc/libc.mips.map
@@ -341,6 +341,7 @@
     fdatasync;
     fdopen;
     fdopendir;
+    fdprintf; # arm x86 mips versioned=28
     feof;
     feof_unlocked; # introduced=23
     ferror;
@@ -1103,6 +1104,7 @@
     vdprintf; # introduced=21
     verr;
     verrx;
+    vfdprintf; # arm x86 mips versioned=28
     vfork;
     vfprintf;
     vfscanf;
@@ -1349,7 +1351,6 @@
     dlmalloc_inspect_all; # arm x86 mips
     dlmalloc_trim; # arm x86 mips
     dlmalloc_usable_size; # arm x86 mips
-    fdprintf; # arm x86 mips
     free_malloc_leak_info;
     ftime; # arm x86 mips
     get_malloc_leak_info;
@@ -1370,7 +1371,6 @@
     strtotimeval; # arm x86 mips
     sysv_signal; # arm x86 mips
     tkill; # arm x86 mips
-    vfdprintf; # arm x86 mips
     wait3; # arm x86 mips
     wcswcs; # arm x86 mips
 } LIBC_O;
diff --git a/libc/libc.x86.map b/libc/libc.x86.map
index 145b64e..0e130ce 100644
--- a/libc/libc.x86.map
+++ b/libc/libc.x86.map
@@ -339,6 +339,7 @@
     fdatasync;
     fdopen;
     fdopendir;
+    fdprintf; # arm x86 mips versioned=28
     feof;
     feof_unlocked; # introduced=23
     ferror;
@@ -1101,6 +1102,7 @@
     vdprintf; # introduced=21
     verr;
     verrx;
+    vfdprintf; # arm x86 mips versioned=28
     vfork;
     vfprintf;
     vfscanf;
@@ -1348,7 +1350,6 @@
     dlmalloc_inspect_all; # arm x86 mips
     dlmalloc_trim; # arm x86 mips
     dlmalloc_usable_size; # arm x86 mips
-    fdprintf; # arm x86 mips
     free_malloc_leak_info;
     ftime; # arm x86 mips
     get_malloc_leak_info;
@@ -1369,7 +1370,6 @@
     strtotimeval; # arm x86 mips
     sysv_signal; # arm x86 mips
     tkill; # arm x86 mips
-    vfdprintf; # arm x86 mips
     wait3; # arm x86 mips
     wcswcs; # arm x86 mips
 } LIBC_O;