Add platform specific version tags.
Some functions were added at different times on different platforms.
This should hopefully get most of them.
Bug: http://b/28178111
Change-Id: I85fdf92779a2f3277e9b537c6bfc7216790c607a
diff --git a/libc/include/link.h b/libc/include/link.h
index e6c5404..2d189f6 100644
--- a/libc/include/link.h
+++ b/libc/include/link.h
@@ -46,7 +46,11 @@
ElfW(Half) dlpi_phnum;
};
+#if defined(__arm__)
int dl_iterate_phdr(int (*)(struct dl_phdr_info*, size_t, void*), void*) __INTRODUCED_IN(21);
+#else
+int dl_iterate_phdr(int (*)(struct dl_phdr_info*, size_t, void*), void*);
+#endif
#ifdef __arm__
typedef long unsigned int* _Unwind_Ptr;
diff --git a/libc/include/math.h b/libc/include/math.h
index 6d0db17..97539d7 100644
--- a/libc/include/math.h
+++ b/libc/include/math.h
@@ -127,6 +127,13 @@
#endif
#endif /* __BSD_VISIBLE */
+/* scalbln, scalbnf, and scalblnl were unavailable on x86 until API level 18 */
+#if defined(__i386__)
+#define __INTRODUCED_IN_X86 __INTRODUCED_IN
+#else
+#define __INTRODUCED_IN_X86(x)
+#endif
+
/*
* Most of these functions depend on the rounding mode and have the side
* effect of raising floating-point exceptions, so they are not declared
@@ -237,7 +244,7 @@
double nearbyint(double);
double round(double);
double scalbln(double, long);
-double scalbn(double, int);
+double scalbn(double, int) __INTRODUCED_IN_X86(18);
double tgamma(double);
double trunc(double);
#endif
@@ -322,7 +329,7 @@
float remquof(float, float, int *);
float rintf(float);
float scalblnf(float, long);
-float scalbnf(float, int);
+float scalbnf(float, int) __INTRODUCED_IN_X86(18);
float truncf(float);
float fdimf(float, float);
@@ -415,7 +422,7 @@
long double rintl(long double) __INTRODUCED_IN(21);
long double roundl(long double);
long double scalblnl(long double, long);
-long double scalbnl(long double, int);
+long double scalbnl(long double, int) __INTRODUCED_IN_X86(18);
long double sinhl(long double) __INTRODUCED_IN(21);
long double sinl(long double) __INTRODUCED_IN(21);
long double sqrtl(long double) __INTRODUCED_IN(21);
diff --git a/libc/include/strings.h b/libc/include/strings.h
index 1200e77..ca9f658 100644
--- a/libc/include/strings.h
+++ b/libc/include/strings.h
@@ -54,7 +54,11 @@
#define bzero(b, len) (void)(__builtin_memset((b), '\0', (len)))
#endif
+#if defined(__i386__)
+int ffs(int) __INTRODUCED_IN(21);
+#else
int ffs(int);
+#endif
__END_DECLS
diff --git a/libc/include/sys/resource.h b/libc/include/sys/resource.h
index 74e903f..3187420 100644
--- a/libc/include/sys/resource.h
+++ b/libc/include/sys/resource.h
@@ -53,7 +53,8 @@
extern int getrusage(int, struct rusage*);
-extern int prlimit(pid_t, int, const struct rlimit*, struct rlimit*) __INTRODUCED_IN(24);
+extern int prlimit(pid_t, int, const struct rlimit*, struct rlimit*) __INTRODUCED_IN_32(24)
+ __INTRODUCED_IN_64(21);
extern int prlimit64(pid_t, int, const struct rlimit64*, struct rlimit64*) __INTRODUCED_IN(21);
__END_DECLS