diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2016-06-10 20:41:16 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2016-06-10 20:41:16 +0000 |
commit | 2ed5852759a3326752e975fab57b1c96e1be74b5 (patch) | |
tree | 1a2520fd93df08a136206e97294f0bbaad63cf7a | |
parent | 5e02bde75d265db28da5207006c060056dc0ca5e (diff) | |
parent | 3ba55f8022f3d5c5ca94a3df46fa658eda791987 (diff) | |
download | bionic-2ed5852759a3326752e975fab57b1c96e1be74b5.tar.gz |
Merge "Rationalize visibility."
-rw-r--r-- | libc/include/android/set_abort_message.h | 2 | ||||
-rw-r--r-- | libc/include/assert.h | 2 | ||||
-rw-r--r-- | libc/include/complex.h | 4 | ||||
-rw-r--r-- | libc/include/ctype.h | 14 | ||||
-rw-r--r-- | libc/include/fcntl.h | 8 | ||||
-rw-r--r-- | libc/include/grp.h | 14 | ||||
-rw-r--r-- | libc/include/limits.h | 7 | ||||
-rw-r--r-- | libc/include/math.h | 259 | ||||
-rw-r--r-- | libc/include/pwd.h | 2 | ||||
-rw-r--r-- | libc/include/stdio.h | 92 | ||||
-rw-r--r-- | libc/include/stdlib.h | 2 | ||||
-rw-r--r-- | libc/include/sys/cdefs.h | 156 | ||||
-rw-r--r-- | libc/include/sys/endian.h | 4 | ||||
-rw-r--r-- | libc/include/sys/limits.h | 4 | ||||
-rw-r--r-- | libc/include/sys/stat.h | 2 | ||||
-rw-r--r-- | libc/include/sys/types.h | 2 | ||||
-rw-r--r-- | libc/include/sys/ucontext.h | 8 | ||||
-rw-r--r-- | libc/include/wchar.h | 2 | ||||
-rw-r--r-- | libm/Android.bp | 1 | ||||
-rw-r--r-- | tests/string_posix_strerror_r_test.cpp | 2 |
20 files changed, 168 insertions, 419 deletions
diff --git a/libc/include/android/set_abort_message.h b/libc/include/android/set_abort_message.h index aebedbace..18881a3a3 100644 --- a/libc/include/android/set_abort_message.h +++ b/libc/include/android/set_abort_message.h @@ -37,4 +37,4 @@ void android_set_abort_message(const char* msg) __INTRODUCED_IN(21); __END_DECLS -#endif // _SET_ABORT_MESSAGE_H +#endif diff --git a/libc/include/assert.h b/libc/include/assert.h index 0a9992da5..dea838228 100644 --- a/libc/include/assert.h +++ b/libc/include/assert.h @@ -52,7 +52,7 @@ # define _assert(e) ((void)0) #else # define _assert(e) assert(e) -# if __ISO_C_VISIBLE >= 1999 +# if __STDC_VERSION__ >= 199901L # define assert(e) ((e) ? (void)0 : __assert2(__FILE__, __LINE__, __func__, #e)) # else # define assert(e) ((e) ? (void)0 : __assert(__FILE__, __LINE__, #e)) diff --git a/libc/include/complex.h b/libc/include/complex.h index 66ea97e90..e874e1c29 100644 --- a/libc/include/complex.h +++ b/libc/include/complex.h @@ -43,7 +43,7 @@ _Static_assert(__generic(_Complex_I, float _Complex, 1, 0), #define complex _Complex #define I _Complex_I -#if __ISO_C_VISIBLE >= 2011 +#if __STDC_VERSION__ >= 201112L #ifdef __clang__ #define CMPLX(x, y) ((double complex){ x, y }) #define CMPLXF(x, y) ((float complex){ x, y }) @@ -53,7 +53,7 @@ _Static_assert(__generic(_Complex_I, float _Complex, 1, 0), #define CMPLXF(x, y) __builtin_complex((float)(x), (float)(y)) #define CMPLXL(x, y) __builtin_complex((long double)(x), (long double)(y)) #endif -#endif /* __ISO_C_VISIBLE >= 2011 */ +#endif __BEGIN_DECLS #pragma GCC visibility push(default) diff --git a/libc/include/ctype.h b/libc/include/ctype.h index 199f810d9..302a88e8c 100644 --- a/libc/include/ctype.h +++ b/libc/include/ctype.h @@ -56,11 +56,11 @@ __BEGIN_DECLS -extern const char *_ctype_; +extern const char* _ctype_; -#if defined(__GNUC__) || defined(_ANSI_LIBRARY) || defined(lint) int isalnum(int); int isalpha(int); +int isblank(int); int iscntrl(int); int isdigit(int); int isgraph(int); @@ -87,20 +87,10 @@ int isupper_l(int, locale_t) __INTRODUCED_IN(21); int isxdigit_l(int, locale_t) __INTRODUCED_IN(21); int tolower_l(int, locale_t) __INTRODUCED_IN(21); int toupper_l(int, locale_t) __INTRODUCED_IN(21); - -#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __POSIX_VISIBLE > 200112 \ - || __XPG_VISIBLE > 600 -int isblank(int); -#endif - -#if __BSD_VISIBLE || __XPG_VISIBLE int isascii(int); int toascii(int); int _tolower(int) __INTRODUCED_IN(21); int _toupper(int) __INTRODUCED_IN(21); -#endif /* __BSD_VISIBLE || __XPG_VISIBLE */ - -#endif /* __GNUC__ || _ANSI_LIBRARY || lint */ __END_DECLS diff --git a/libc/include/fcntl.h b/libc/include/fcntl.h index ee4d5e2c2..4aa2ea061 100644 --- a/libc/include/fcntl.h +++ b/libc/include/fcntl.h @@ -106,12 +106,12 @@ __BIONIC_FORTIFY_INLINE int open(const char* pathname, int flags, ...) { if (__builtin_constant_p(flags)) { if ((flags & O_CREAT) && __builtin_va_arg_pack_len() == 0) { - __creat_missing_mode(); // compile time error + __creat_missing_mode(); /* Compile time error. */ } } if (__builtin_va_arg_pack_len() > 1) { - __creat_too_many_args(); // compile time error + __creat_too_many_args(); /* Compile time error. */ } if ((__builtin_va_arg_pack_len() == 0) && !__builtin_constant_p(flags)) { @@ -125,12 +125,12 @@ __BIONIC_FORTIFY_INLINE int openat(int dirfd, const char* pathname, int flags, ...) { if (__builtin_constant_p(flags)) { if ((flags & O_CREAT) && __builtin_va_arg_pack_len() == 0) { - __creat_missing_mode(); // compile time error + __creat_missing_mode(); /* Compile time error. */ } } if (__builtin_va_arg_pack_len() > 1) { - __creat_too_many_args(); // compile time error + __creat_too_many_args(); /* Compile time error. */ } if ((__builtin_va_arg_pack_len() == 0) && !__builtin_constant_p(flags)) { diff --git a/libc/include/grp.h b/libc/include/grp.h index 373ca8f07..498d1b83f 100644 --- a/libc/include/grp.h +++ b/libc/include/grp.h @@ -47,20 +47,18 @@ struct group { __BEGIN_DECLS struct group* getgrgid(gid_t); -struct group* getgrnam(const char *); -#if __POSIX_VISIBLE >= 200112 || __XPG_VISIBLE -/* Android has thousands and thousands of ids to iterate through */ +struct group* getgrnam(const char*); + +/* Android has thousands and thousands of ids to iterate through. */ struct group* getgrent(void) __attribute__((warning("getgrent is inefficient on Android"))) __INTRODUCED_IN_FUTURE; + void setgrent(void) __INTRODUCED_IN_FUTURE; void endgrent(void) __INTRODUCED_IN_FUTURE; int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**) __INTRODUCED_IN(24); int getgrnam_r(const char*, struct group*, char*, size_t, struct group**) __INTRODUCED_IN(24); -#endif - -int getgrouplist (const char *user, gid_t group, gid_t *groups, int *ngroups); - -int initgroups (const char *user, gid_t group); +int getgrouplist (const char*, gid_t, gid_t*, int*); +int initgroups (const char*, gid_t); __END_DECLS diff --git a/libc/include/limits.h b/libc/include/limits.h index 7543567dd..84effa7a2 100644 --- a/libc/include/limits.h +++ b/libc/include/limits.h @@ -37,7 +37,6 @@ #include <sys/cdefs.h> -#if __XPG_VISIBLE #define PASS_MAX 128 /* _PASSWORD_LEN from <pwd.h> */ #define NL_ARGMAX 9 @@ -48,7 +47,6 @@ #define NL_TEXTMAX 255 #define TMP_MAX 308915776 -#endif /* __XPG_VISIBLE */ #include <sys/limits.h> @@ -68,14 +66,13 @@ #define ULONG_LONG_MAX ULLONG_MAX #endif -/* BSD compatibility definitions. */ -#if __BSD_VISIBLE +#if defined(__USE_BSD) #if defined(__LP64__) #define SIZE_T_MAX ULONG_MAX #else #define SIZE_T_MAX UINT_MAX #endif -#endif /* __BSD_VISIBLE */ +#endif #if defined(__LP64__) #define SSIZE_MAX LONG_MAX diff --git a/libc/include/math.h b/libc/include/math.h index eae1d3bfd..c84d0176d 100644 --- a/libc/include/math.h +++ b/libc/include/math.h @@ -21,11 +21,9 @@ #include <limits.h> __BEGIN_DECLS -#pragma GCC visibility push(default) #define HUGE_VAL __builtin_huge_val() -#if __ISO_C_VISIBLE >= 1999 #define FP_ILOGB0 (-INT_MAX) #define FP_ILOGBNAN INT_MAX @@ -78,80 +76,33 @@ typedef double __double_t; typedef __double_t double_t; typedef float __float_t; typedef __float_t float_t; -#endif /* __ISO_C_VISIBLE >= 1999 */ -/* - * XOPEN/SVID - */ -#if __BSD_VISIBLE || __XSI_VISIBLE -#define M_E 2.7182818284590452354 /* e */ -#define M_LOG2E 1.4426950408889634074 /* log 2e */ -#define M_LOG10E 0.43429448190325182765 /* log 10e */ -#define M_LN2 0.69314718055994530942 /* log e2 */ -#define M_LN10 2.30258509299404568402 /* log e10 */ -#define M_PI 3.14159265358979323846 /* pi */ -#define M_PI_2 1.57079632679489661923 /* pi/2 */ -#define M_PI_4 0.78539816339744830962 /* pi/4 */ -#define M_1_PI 0.31830988618379067154 /* 1/pi */ -#define M_2_PI 0.63661977236758134308 /* 2/pi */ -#define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */ -#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */ -#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ - -#define MAXFLOAT ((float)3.40282346638528860e+38) -extern int signgam; -#endif /* __BSD_VISIBLE || __XSI_VISIBLE */ - -#if __USE_GNU -#define M_El 2.718281828459045235360287471352662498L /* e */ -#define M_LOG2El 1.442695040888963407359924681001892137L /* log 2e */ -#define M_LOG10El 0.434294481903251827651128918916605082L /* log 10e */ -#define M_LN2l 0.693147180559945309417232121458176568L /* log e2 */ -#define M_LN10l 2.302585092994045684017991454684364208L /* log e10 */ -#define M_PIl 3.141592653589793238462643383279502884L /* pi */ -#define M_PI_2l 1.570796326794896619231321691639751442L /* pi/2 */ -#define M_PI_4l 0.785398163397448309615660845819875721L /* pi/4 */ -#define M_1_PIl 0.318309886183790671537767526745028724L /* 1/pi */ -#define M_2_PIl 0.636619772367581343075535053490057448L /* 2/pi */ -#define M_2_SQRTPIl 1.128379167095512573896158903121545172L /* 2/sqrt(pi) */ -#define M_SQRT2l 1.414213562373095048801688724209698079L /* sqrt(2) */ -#define M_SQRT1_2l 0.707106781186547524400844362104849039L /* 1/sqrt(2) */ +#if defined(__USE_BSD) +#define HUGE MAXFLOAT #endif -#if __BSD_VISIBLE -#if 0 -/* Old value from 4.4BSD-Lite math.h; this is probably better. */ -#define HUGE HUGE_VAL -#else -#define HUGE MAXFLOAT -#endif -#endif /* __BSD_VISIBLE */ - /* * Most of these functions depend on the rounding mode and have the side * effect of raising floating-point exceptions, so they are not declared * as __pure2. In C99, FENV_ACCESS affects the purity of these functions. */ -/* - * ANSI/POSIX - */ -int __fpclassifyd(double) __pure2; -int __fpclassifyf(float) __pure2; -int __fpclassifyl(long double) __pure2; -int __isfinitef(float) __pure2; -int __isfinite(double) __pure2; -int __isfinitel(long double) __pure2; -int __isinff(float) __pure2; -int __isinfl(long double) __pure2; +int __fpclassifyd(double) __pure2; +int __fpclassifyf(float) __pure2; +int __fpclassifyl(long double) __pure2; +int __isfinitef(float) __pure2; +int __isfinite(double) __pure2; +int __isfinitel(long double) __pure2; +int __isinff(float) __pure2; +int __isinfl(long double) __pure2; int __isnanf(float) __pure2 __INTRODUCED_IN(21); -int __isnanl(long double) __pure2; -int __isnormalf(float) __pure2; -int __isnormal(double) __pure2; -int __isnormall(long double) __pure2; -int __signbit(double) __pure2; -int __signbitf(float) __pure2; -int __signbitl(long double) __pure2; +int __isnanl(long double) __pure2; +int __isnormalf(float) __pure2; +int __isnormal(double) __pure2; +int __isnormall(long double) __pure2; +int __signbit(double) __pure2; +int __signbitf(float) __pure2; +int __signbitl(long double) __pure2; double acos(double); double asin(double); @@ -180,10 +131,6 @@ double fabs(double) __pure2; double floor(double); double fmod(double, double); -/* - * These functions are not in C90. - */ -#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE double acosh(double); double asinh(double); double atanh(double); @@ -211,28 +158,9 @@ double nan(const char*) __pure2 __INTRODUCED_IN_ARM(13) __INTRODUCED_IN_MIPS(13) double nextafter(double, double); double remainder(double, double); -double remquo(double, double, int *); +double remquo(double, double, int*); double rint(double); -#endif /* __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */ - -#if __BSD_VISIBLE || __XSI_VISIBLE -double j0(double); -double j1(double); -double jn(int, double); -double y0(double); -double y1(double); -double yn(int, double); - -#if __XSI_VISIBLE <= 500 || __BSD_VISIBLE -double gamma(double); -#endif - -#if __XSI_VISIBLE <= 600 || __BSD_VISIBLE -double scalb(double, double); -#endif -#endif /* __BSD_VISIBLE || __XSI_VISIBLE */ -#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 double copysign(double, double) __pure2; double fdim(double, double); double fmax(double, double) __pure2; @@ -243,32 +171,7 @@ double scalbln(double, long) __INTRODUCED_IN_X86(18); double scalbn(double, int); double tgamma(double); double trunc(double); -#endif - -/* - * BSD math library entry points - */ -#if __BSD_VISIBLE -double drem(double, double); -int finite(double) __pure2; -int isnanf(float) __pure2; -long double significandl(long double) __INTRODUCED_IN(21); - -/* - * Reentrant version of gamma & lgamma; passes signgam back by reference - * as the second argument; user must allocate space for signgam. - */ -double gamma_r(double, int *); -double lgamma_r(double, int *); -/* - * IEEE Test Vector - */ -double significand(double); -#endif /* __BSD_VISIBLE */ - -/* float versions of ANSI/POSIX functions */ -#if __ISO_C_VISIBLE >= 1999 float acosf(float); float asinf(float); float atanf(float); @@ -333,41 +236,7 @@ float fdimf(float, float); float fmaf(float, float, float); float fmaxf(float, float) __pure2; float fminf(float, float) __pure2; -#endif -/* - * float versions of BSD math library entry points - */ -#if __BSD_VISIBLE -float dremf(float, float); -int finitef(float) __pure2; -float gammaf(float); -float j0f(float); -float j1f(float); -float jnf(int, float); -float scalbf(float, float); -float y0f(float); -float y1f(float); -float ynf(int, float); - -/* - * Float versions of reentrant version of gamma & lgamma; passes - * signgam back by reference as the second argument; user must - * allocate space for signgam. - */ -float gammaf_r(float, int *); -float lgammaf_r(float, int *); - -/* - * float version of IEEE Test Vector - */ -float significandf(float); -#endif /* __BSD_VISIBLE */ - -/* - * long double versions of ISO/POSIX math functions - */ -#if __ISO_C_VISIBLE >= 1999 long double acoshl(long double) __INTRODUCED_IN(21); long double acosl(long double) __INTRODUCED_IN(21); long double asinhl(long double) __INTRODUCED_IN(21); @@ -376,8 +245,8 @@ long double atan2l(long double, long double) __INTRODUCED_IN(21); long double atanhl(long double) __INTRODUCED_IN(21); long double atanl(long double) __INTRODUCED_IN(21); long double cbrtl(long double) __INTRODUCED_IN(21); -long double ceill(long double); -long double copysignl(long double, long double) __pure2; +long double ceill(long double); +long double copysignl(long double, long double) __pure2; long double coshl(long double) __INTRODUCED_IN(21); long double cosl(long double) __INTRODUCED_IN(21); long double erfcl(long double) __INTRODUCED_IN(21); @@ -385,39 +254,39 @@ long double erfl(long double) __INTRODUCED_IN(21); long double exp2l(long double) __INTRODUCED_IN(21); long double expl(long double) __INTRODUCED_IN(21); long double expm1l(long double) __INTRODUCED_IN(21); -long double fabsl(long double) __pure2; -long double fdiml(long double, long double); -long double floorl(long double); +long double fabsl(long double) __pure2; +long double fdiml(long double, long double); +long double floorl(long double); long double fmal(long double, long double, long double) __INTRODUCED_IN(21); -long double fmaxl(long double, long double) __pure2; -long double fminl(long double, long double) __pure2; +long double fmaxl(long double, long double) __pure2; +long double fminl(long double, long double) __pure2; long double fmodl(long double, long double) __INTRODUCED_IN(21); long double frexpl(long double value, int*) __INTRODUCED_IN(21); /* fundamentally !__pure2 */ long double hypotl(long double, long double) __INTRODUCED_IN(21); -int ilogbl(long double) __pure2; -long double ldexpl(long double, int); +int ilogbl(long double) __pure2; +long double ldexpl(long double, int); long double lgammal(long double) __INTRODUCED_IN(21); long long llrintl(long double) __INTRODUCED_IN(21); -long long llroundl(long double); +long long llroundl(long double); long double log10l(long double) __INTRODUCED_IN(21); long double log1pl(long double) __INTRODUCED_IN(21); long double log2l(long double) __INTRODUCED_IN(18); long double logbl(long double) __INTRODUCED_IN(18); long double logl(long double) __INTRODUCED_IN(21); long lrintl(long double) __INTRODUCED_IN(21); -long lroundl(long double); +long lroundl(long double); long double modfl(long double, long double*) __INTRODUCED_IN(21); /* fundamentally !__pure2 */ long double nanl(const char*) __pure2 __INTRODUCED_IN(13); long double nearbyintl(long double) __INTRODUCED_IN(21); long double nextafterl(long double, long double) __INTRODUCED_IN(21); double nexttoward(double, long double) __INTRODUCED_IN(18); -float nexttowardf(float, long double); +float nexttowardf(float, long double); long double nexttowardl(long double, long double) __INTRODUCED_IN(18); long double powl(long double, long double) __INTRODUCED_IN(21); long double remainderl(long double, long double) __INTRODUCED_IN(21); long double remquol(long double, long double, int*) __INTRODUCED_IN(21); long double rintl(long double) __INTRODUCED_IN(21); -long double roundl(long double); +long double roundl(long double); long double scalblnl(long double, long) __INTRODUCED_IN_X86(18); long double scalbnl(long double, int); long double sinhl(long double) __INTRODUCED_IN(21); @@ -426,20 +295,74 @@ long double sqrtl(long double) __INTRODUCED_IN(21); long double tanhl(long double) __INTRODUCED_IN(21); long double tanl(long double) __INTRODUCED_IN(21); long double tgammal(long double) __INTRODUCED_IN(21); -long double truncl(long double); -#endif /* __ISO_C_VISIBLE >= 1999 */ - -#if __BSD_VISIBLE +long double truncl(long double); + +#if defined(__USE_BSD) || defined(__USE_GNU) +#define M_E 2.7182818284590452354 /* e */ +#define M_LOG2E 1.4426950408889634074 /* log 2e */ +#define M_LOG10E 0.43429448190325182765 /* log 10e */ +#define M_LN2 0.69314718055994530942 /* log e2 */ +#define M_LN10 2.30258509299404568402 /* log e10 */ +#define M_PI 3.14159265358979323846 /* pi */ +#define M_PI_2 1.57079632679489661923 /* pi/2 */ +#define M_PI_4 0.78539816339744830962 /* pi/4 */ +#define M_1_PI 0.31830988618379067154 /* 1/pi */ +#define M_2_PI 0.63661977236758134308 /* 2/pi */ +#define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */ +#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */ +#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ +#define MAXFLOAT ((float)3.40282346638528860e+38) +extern int signgam; +double j0(double); +double j1(double); +double jn(int, double); +double y0(double); +double y1(double); +double yn(int, double); +double gamma(double); +double scalb(double, double); +double drem(double, double); +int finite(double) __pure2; +int isnanf(float) __pure2; +double gamma_r(double, int*); +double lgamma_r(double, int*); +double significand(double); long double lgammal_r(long double, int*) __INTRODUCED_IN(23); +long double significandl(long double) __INTRODUCED_IN(21); +float dremf(float, float); +int finitef(float) __pure2; +float gammaf(float); +float j0f(float); +float j1f(float); +float jnf(int, float); +float scalbf(float, float); +float y0f(float); +float y1f(float); +float ynf(int, float); +float gammaf_r(float, int *); +float lgammaf_r(float, int *); +float significandf(float); #endif #if defined(__USE_GNU) +#define M_El 2.718281828459045235360287471352662498L /* e */ +#define M_LOG2El 1.442695040888963407359924681001892137L /* log 2e */ +#define M_LOG10El 0.434294481903251827651128918916605082L /* log 10e */ +#define M_LN2l 0.693147180559945309417232121458176568L /* log e2 */ +#define M_LN10l 2.302585092994045684017991454684364208L /* log e10 */ +#define M_PIl 3.141592653589793238462643383279502884L /* pi */ +#define M_PI_2l 1.570796326794896619231321691639751442L /* pi/2 */ +#define M_PI_4l 0.785398163397448309615660845819875721L /* pi/4 */ +#define M_1_PIl 0.318309886183790671537767526745028724L /* 1/pi */ +#define M_2_PIl 0.636619772367581343075535053490057448L /* 2/pi */ +#define M_2_SQRTPIl 1.128379167095512573896158903121545172L /* 2/sqrt(pi) */ +#define M_SQRT2l 1.414213562373095048801688724209698079L /* sqrt(2) */ +#define M_SQRT1_2l 0.707106781186547524400844362104849039L /* 1/sqrt(2) */ void sincos(double, double*, double*); void sincosf(float, float*, float*); void sincosl(long double, long double*, long double*); -#endif /* __USE_GNU */ +#endif -#pragma GCC visibility pop __END_DECLS #endif /* !_MATH_H_ */ diff --git a/libc/include/pwd.h b/libc/include/pwd.h index e8811292c..0b39a783d 100644 --- a/libc/include/pwd.h +++ b/libc/include/pwd.h @@ -105,7 +105,7 @@ struct passwd #ifdef __LP64__ char* pw_gecos; #else - // Note: On LP32, we define pw_gecos to pw_passwd since they're both NULL. + /* Note: On LP32, we define pw_gecos to pw_passwd since they're both NULL. */ # define pw_gecos pw_passwd #endif char* pw_dir; diff --git a/libc/include/stdio.h b/libc/include/stdio.h index b92f5d5b3..74208bc98 100644 --- a/libc/include/stdio.h +++ b/libc/include/stdio.h @@ -88,10 +88,6 @@ extern FILE* stderr __INTRODUCED_IN(23); #define FOPEN_MAX 20 /* must be <= OPEN_MAX <sys/syslimits.h> */ #define FILENAME_MAX 1024 /* must be <= PATH_MAX <sys/syslimits.h> */ -/* System V/ANSI C; this is the wrong way to do this, do *not* use these. */ -#if __BSD_VISIBLE || __XPG_VISIBLE -#define P_tmpdir "/tmp/" -#endif #define L_tmpnam 1024 /* XXX must be == PATH_MAX */ #define TMP_MAX 308915776 @@ -145,8 +141,7 @@ int vprintf(const char * __restrict, __va_list) int dprintf(int, const char* __restrict, ...) __printflike(2, 3) __INTRODUCED_IN(21); int vdprintf(int, const char* __restrict, __va_list) __printflike(2, 0) __INTRODUCED_IN(21); -#ifndef __AUDIT__ -#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112L +#if __STDC_VERSION__ < 201112L char* gets(char*) __attribute__((deprecated("gets is unsafe, use fgets instead"))); #endif int sprintf(char* __restrict, const char* __restrict, ...) @@ -154,11 +149,11 @@ int sprintf(char* __restrict, const char* __restrict, ...) int vsprintf(char* __restrict, const char* __restrict, __va_list) __printflike(2, 0) __warnattr("vsprintf is often misused; please use vsnprintf"); char* tmpnam(char*) __attribute__((deprecated("tmpnam is unsafe, use mkstemp or tmpfile instead"))); -#if __XPG_VISIBLE +#if defined(__USE_BSD) || defined(__USE_GNU) +#define P_tmpdir "/tmp/" /* deprecated */ char* tempnam(const char*, const char*) __attribute__((deprecated("tempnam is unsafe, use mkstemp or tmpfile instead"))); #endif -#endif int rename(const char*, const char*); int renameat(int, const char*, int, const char*); @@ -208,78 +203,47 @@ FILE* freopen64(const char* __restrict, const char* __restrict, FILE* __restrict FILE* tmpfile(void); FILE* tmpfile64(void) __INTRODUCED_IN(24); -#if __ISO_C_VISIBLE >= 1999 || __BSD_VISIBLE -int snprintf(char * __restrict, size_t, const char * __restrict, ...) - __printflike(3, 4); -int vfscanf(FILE * __restrict, const char * __restrict, __va_list) - __scanflike(2, 0); -int vscanf(const char *, __va_list) - __scanflike(1, 0); -int vsnprintf(char * __restrict, size_t, const char * __restrict, __va_list) - __printflike(3, 0); -int vsscanf(const char * __restrict, const char * __restrict, __va_list) - __scanflike(2, 0); -#endif /* __ISO_C_VISIBLE >= 1999 || __BSD_VISIBLE */ +int snprintf(char* __restrict, size_t, const char* __restrict, ...) __printflike(3, 4); +int vfscanf(FILE* __restrict, const char* __restrict, __va_list) __scanflike(2, 0); +int vscanf(const char*, __va_list) __scanflike(1, 0); +int vsnprintf(char* __restrict, size_t, const char* __restrict, __va_list) __printflike(3, 0); +int vsscanf(const char* __restrict, const char* __restrict, __va_list) __scanflike(2, 0); -/* - * Functions defined in POSIX 1003.1. - */ -#if __BSD_VISIBLE || __POSIX_VISIBLE || __XPG_VISIBLE -#define L_ctermid 1024 /* size for ctermid(); PATH_MAX */ +#define L_ctermid 1024 /* size for ctermid() */ char* ctermid(char*); -FILE *fdopen(int, const char *); -int fileno(FILE *); - -#if (__POSIX_VISIBLE >= 199209) -int pclose(FILE *); -FILE *popen(const char *, const char *); -#endif - -#if __POSIX_VISIBLE >= 199506 -void flockfile(FILE *); -int ftrylockfile(FILE *); -void funlockfile(FILE *); - -/* - * These are normally used through macros as defined below, but POSIX - * requires functions as well. - */ -int getc_unlocked(FILE *); -int getchar_unlocked(void); -int putc_unlocked(int, FILE *); -int putchar_unlocked(int); -#endif /* __POSIX_VISIBLE >= 199506 */ +FILE* fdopen(int, const char*); +int fileno(FILE*); +int pclose(FILE*); +FILE* popen(const char*, const char*); +void flockfile(FILE*); +int ftrylockfile(FILE*); +void funlockfile(FILE*); +int getc_unlocked(FILE*); +int getchar_unlocked(void); +int putc_unlocked(int, FILE*); +int putchar_unlocked(int); -#if __POSIX_VISIBLE >= 200809 FILE* fmemopen(void*, size_t, const char*) __INTRODUCED_IN(23); FILE* open_memstream(char**, size_t*) __INTRODUCED_IN(23); -#endif /* __POSIX_VISIBLE >= 200809 */ - -#endif /* __BSD_VISIBLE || __POSIX_VISIBLE || __XPG_VISIBLE */ /* * Routines that are purely local. */ -#if __BSD_VISIBLE -int asprintf(char ** __restrict, const char * __restrict, ...) - __printflike(2, 3); -char *fgetln(FILE * __restrict, size_t * __restrict); -int fpurge(FILE *); -void setbuffer(FILE *, char *, int); -int setlinebuf(FILE *); -int vasprintf(char ** __restrict, const char * __restrict, - __va_list) - __printflike(2, 0); - +#if defined(__USE_BSD) +int asprintf(char** __restrict, const char* __restrict, ...) __printflike(2, 3); +char* fgetln(FILE* __restrict, size_t* __restrict); +int fpurge(FILE*); +void setbuffer(FILE*, char*, int); +int setlinebuf(FILE*); +int vasprintf(char** __restrict, const char* __restrict, __va_list) __printflike(2, 0); void clearerr_unlocked(FILE*) __INTRODUCED_IN(23); int feof_unlocked(FILE*) __INTRODUCED_IN(23); int ferror_unlocked(FILE*) __INTRODUCED_IN(23); int fileno_unlocked(FILE*) __INTRODUCED_IN(24); - #define fropen(cookie, fn) funopen(cookie, fn, 0, 0, 0) #define fwopen(cookie, fn) funopen(cookie, 0, fn, 0, 0) -#endif /* __BSD_VISIBLE */ +#endif /* __USE_BSD */ extern char* __fgets_chk(char*, int, FILE*, size_t) __INTRODUCED_IN(17); extern char* __fgets_real(char*, int, FILE*) __RENAME(fgets); diff --git a/libc/include/stdlib.h b/libc/include/stdlib.h index b3e52d5fd..6fb220952 100644 --- a/libc/include/stdlib.h +++ b/libc/include/stdlib.h @@ -46,10 +46,8 @@ extern __noreturn void exit(int); extern __noreturn void _Exit(int) __INTRODUCED_IN(21); extern int atexit(void (*)(void)); -#if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L int at_quick_exit(void (*)(void)); void quick_exit(int) __noreturn; -#endif extern char* getenv(const char*); extern int putenv(char*); diff --git a/libc/include/sys/cdefs.h b/libc/include/sys/cdefs.h index 120c29dbe..5369e3092 100644 --- a/libc/include/sys/cdefs.h +++ b/libc/include/sys/cdefs.h @@ -162,20 +162,6 @@ #define __scanflike(x, y) __attribute__((__format__(scanf, x, y))) __nonnull((x)) /* - * C99 defines the restrict type qualifier keyword. - */ -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#define __restrict restrict -#endif - -/* - * C99 defines the __func__ predefined identifier. - */ -#if !defined(__STDC_VERSION__) || !(__STDC_VERSION__ >= 199901L) -#define __func__ __PRETTY_FUNCTION__ -#endif - -/* * GNU C version 2.96 added explicit branch prediction so that * the CPU back-end can hint the processor and also so that * code blocks can be reordered such that the predicted path @@ -230,151 +216,49 @@ #define __SCCSID(_s) /* nothing */ /* - * _BSD_SOURCE and _GNU_SOURCE are expected to be defined by callers before - * any standard header file is included. In those header files we test - * against __USE_BSD and __USE_GNU. glibc does this in <features.h> but we - * do it in <sys/cdefs.h> instead because that's where our existing - * _POSIX_C_SOURCE tests were, and we're already confident that <sys/cdefs.h> - * is included everywhere it should be. + * With bionic, you always get all C and POSIX API. + * + * If you want BSD and/or GNU extensions, _BSD_SOURCE and/or _GNU_SOURCE are + * expected to be defined by callers before *any* standard header file is + * included. * - * The _GNU_SOURCE test needs to come before any _BSD_SOURCE or _POSIX* tests - * because _GNU_SOURCE implies everything else. + * In our header files we test against __USE_BSD and __USE_GNU. */ #if defined(_GNU_SOURCE) +# define __USE_BSD 1 # define __USE_GNU 1 -# undef _POSIX_SOURCE -# define _POSIX_SOURCE 1 -# undef _POSIX_C_SOURCE -# define _POSIX_C_SOURCE 200809L -# undef _BSD_SOURCE -# define _BSD_SOURCE 1 #endif #if defined(_BSD_SOURCE) # define __USE_BSD 1 #endif -/* - * _FILE_OFFSET_BITS 64 support. - */ +/* Historically there was no way to turn off the BSD stuff, so we're probably stuck with that. */ +#if !defined(__USE_BSD) +# define __USE_BSD 1 +#endif + +/* _FILE_OFFSET_BITS 64 support. */ #if !defined(__LP64__) && defined(_FILE_OFFSET_BITS) #if _FILE_OFFSET_BITS == 64 #define __USE_FILE_OFFSET64 1 #endif #endif -/*- - * POSIX.1 requires that the macros we test be defined before any standard - * header file is included. - * - * Here's a quick run-down of the versions: - * defined(_POSIX_SOURCE) 1003.1-1988 - * _POSIX_C_SOURCE == 1 1003.1-1990 - * _POSIX_C_SOURCE == 2 1003.2-1992 C Language Binding Option - * _POSIX_C_SOURCE == 199309 1003.1b-1993 - * _POSIX_C_SOURCE == 199506 1003.1c-1995, 1003.1i-1995, - * and the omnibus ISO/IEC 9945-1: 1996 - * _POSIX_C_SOURCE == 200112 1003.1-2001 - * _POSIX_C_SOURCE == 200809 1003.1-2008 - * - * In addition, the X/Open Portability Guide, which is now the Single UNIX - * Specification, defines a feature-test macro which indicates the version of - * that specification, and which subsumes _POSIX_C_SOURCE. - * - * Our macros begin with two underscores to avoid namespace screwage. - */ - -/* Deal with IEEE Std. 1003.1-1990, in which _POSIX_C_SOURCE == 1. */ -#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 1 -#undef _POSIX_C_SOURCE /* Probably illegal, but beyond caring now. */ -#define _POSIX_C_SOURCE 199009 -#endif - -/* Deal with IEEE Std. 1003.2-1992, in which _POSIX_C_SOURCE == 2. */ -#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 2 -#undef _POSIX_C_SOURCE -#define _POSIX_C_SOURCE 199209 -#endif - -/* Deal with various X/Open Portability Guides and Single UNIX Spec. */ -#ifdef _XOPEN_SOURCE -#if _XOPEN_SOURCE - 0 >= 700 -#define __XSI_VISIBLE 700 -#undef _POSIX_C_SOURCE -#define _POSIX_C_SOURCE 200809 -#elif _XOPEN_SOURCE - 0 >= 600 -#define __XSI_VISIBLE 600 -#undef _POSIX_C_SOURCE -#define _POSIX_C_SOURCE 200112 -#elif _XOPEN_SOURCE - 0 >= 500 -#define __XSI_VISIBLE 500 -#undef _POSIX_C_SOURCE -#define _POSIX_C_SOURCE 199506 -#endif -#endif - -/* - * Deal with all versions of POSIX. The ordering relative to the tests above is - * important. - */ -#if defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) -#define _POSIX_C_SOURCE 198808 -#endif -#ifdef _POSIX_C_SOURCE -#if _POSIX_C_SOURCE >= 200809 -#define __POSIX_VISIBLE 200809 -#define __ISO_C_VISIBLE 1999 -#elif _POSIX_C_SOURCE >= 200112 -#define __POSIX_VISIBLE 200112 -#define __ISO_C_VISIBLE 1999 -#elif _POSIX_C_SOURCE >= 199506 -#define __POSIX_VISIBLE 199506 -#define __ISO_C_VISIBLE 1990 -#elif _POSIX_C_SOURCE >= 199309 -#define __POSIX_VISIBLE 199309 -#define __ISO_C_VISIBLE 1990 -#elif _POSIX_C_SOURCE >= 199209 -#define __POSIX_VISIBLE 199209 -#define __ISO_C_VISIBLE 1990 -#elif _POSIX_C_SOURCE >= 199009 -#define __POSIX_VISIBLE 199009 -#define __ISO_C_VISIBLE 1990 -#else -#define __POSIX_VISIBLE 198808 -#define __ISO_C_VISIBLE 0 -#endif /* _POSIX_C_SOURCE */ -#else /* Default environment: show everything. */ -#define __POSIX_VISIBLE 200809 -#define __XSI_VISIBLE 700 -#define __BSD_VISIBLE 1 -#define __ISO_C_VISIBLE 1999 +/* C99 added the `restrict` type qualifier keyword. Before then, `__restrict` is a GNU extension. */ +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict #endif -/* - * Default values. - */ -#ifndef __XPG_VISIBLE -# define __XPG_VISIBLE 700 -#endif -#ifndef __POSIX_VISIBLE -# define __POSIX_VISIBLE 200809 -#endif -#ifndef __ISO_C_VISIBLE -# define __ISO_C_VISIBLE 1999 -#endif -#ifndef __BSD_VISIBLE -# define __BSD_VISIBLE 1 +/* C99 added the `__func__` predefined identifier. */ +#if __STDC_VERSION__ < 199901L +#define __func__ __PRETTY_FUNCTION__ #endif #define __BIONIC__ 1 #include <android/api-level.h> /* glibc compatibility. */ -#if __POSIX_VISIBLE >= 200809 -#define __USE_ISOC99 1 -#define __USE_XOPEN2K 1 -#define __USE_XOPEN2K8 1 -#endif #if __LP64__ #define __WORDSIZE 64 #else @@ -427,7 +311,7 @@ #define __AVAILABILITY(...) __attribute__((availability(android,__VA_ARGS__))) #else #define __AVAILABILITY(...) -#endif // __clang__ +#endif #define __INTRODUCED_IN(api_level) __AVAILABILITY(introduced=api_level) #define __DEPRECATED_IN(api_level) __AVAILABILITY(deprecated=api_level) diff --git a/libc/include/sys/endian.h b/libc/include/sys/endian.h index 449e0d707..99d5ff1fc 100644 --- a/libc/include/sys/endian.h +++ b/libc/include/sys/endian.h @@ -64,7 +64,7 @@ __END_DECLS #define htonq(x) __swap64(x) #define ntohq(x) __swap64(x) -#if __BSD_VISIBLE +#if defined(__USE_BSD) #define LITTLE_ENDIAN _LITTLE_ENDIAN #define BIG_ENDIAN _BIG_ENDIAN #define PDP_ENDIAN _PDP_ENDIAN @@ -101,6 +101,6 @@ __END_DECLS #define le16toh(x) htole16(x) #define le32toh(x) htole32(x) #define le64toh(x) htole64(x) -#endif /* __BSD_VISIBLE */ +#endif /* __USE_BSD */ #endif /* _SYS_ENDIAN_H_ */ diff --git a/libc/include/sys/limits.h b/libc/include/sys/limits.h index f84253e6b..b7d899b52 100644 --- a/libc/include/sys/limits.h +++ b/libc/include/sys/limits.h @@ -66,16 +66,14 @@ # define LONG_MIN (-0x7fffffffL-1)/* min value for a long */ #endif -#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 # define ULLONG_MAX 0xffffffffffffffffULL /* max value for unsigned long long */ # define LLONG_MAX 0x7fffffffffffffffLL /* max value for a signed long long */ # define LLONG_MIN (-0x7fffffffffffffffLL-1) /* min value for a signed long long */ -#endif -#if __BSD_VISIBLE +#if defined(__USE_BSD) # define UID_MAX UINT_MAX /* max value for a uid_t */ # define GID_MAX UINT_MAX /* max value for a gid_t */ #endif diff --git a/libc/include/sys/stat.h b/libc/include/sys/stat.h index f26a492a6..0a999e4ba 100644 --- a/libc/include/sys/stat.h +++ b/libc/include/sys/stat.h @@ -128,7 +128,7 @@ struct stat64 { __STAT64_BODY }; #define st_mtimensec st_mtim.tv_nsec #define st_ctimensec st_ctim.tv_nsec -#ifdef __USE_BSD +#if defined(__USE_BSD) /* Permission macros provided by glibc for compatibility with BSDs. */ #define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO) /* 0777 */ #define ALLPERMS (S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO) /* 07777 */ diff --git a/libc/include/sys/types.h b/libc/include/sys/types.h index a42226156..469842d95 100644 --- a/libc/include/sys/types.h +++ b/libc/include/sys/types.h @@ -141,7 +141,7 @@ typedef __kernel_ssize_t ssize_t; typedef unsigned int uint_t; typedef unsigned int uint; -#ifdef __BSD_VISIBLE +#if defined(__USE_BSD) #include <sys/sysmacros.h> typedef unsigned char u_char; diff --git a/libc/include/sys/ucontext.h b/libc/include/sys/ucontext.h index 9e3c6530d..f252a37e8 100644 --- a/libc/include/sys/ucontext.h +++ b/libc/include/sys/ucontext.h @@ -70,9 +70,9 @@ typedef struct ucontext { stack_t uc_stack; mcontext_t uc_mcontext; sigset_t uc_sigmask; - // Android has a wrong (smaller) sigset_t on ARM. + /* Android has a wrong (smaller) sigset_t on ARM. */ uint32_t __padding_rt_sigset; - // The kernel adds extra padding after uc_sigmask to match glibc sigset_t on ARM. + /* The kernel adds extra padding after uc_sigmask to match glibc sigset_t on ARM. */ char __padding[120]; unsigned long uc_regspace[128] __attribute__((__aligned__(8))); } ucontext_t; @@ -92,7 +92,7 @@ typedef struct ucontext { struct ucontext *uc_link; stack_t uc_stack; sigset_t uc_sigmask; - // The kernel adds extra padding after uc_sigmask to match glibc sigset_t on ARM64. + /* The kernel adds extra padding after uc_sigmask to match glibc sigset_t on ARM64. */ char __padding[128 - sizeof(sigset_t)]; mcontext_t uc_mcontext; } ucontext_t; @@ -157,7 +157,7 @@ typedef struct ucontext { stack_t uc_stack; mcontext_t uc_mcontext; sigset_t uc_sigmask; - // Android has a wrong (smaller) sigset_t on x86. + /* Android has a wrong (smaller) sigset_t on x86. */ uint32_t __padding_rt_sigset; struct _libc_fpstate __fpregs_mem; } ucontext_t; diff --git a/libc/include/wchar.h b/libc/include/wchar.h index 91d6f2409..7a1fc070d 100644 --- a/libc/include/wchar.h +++ b/libc/include/wchar.h @@ -150,11 +150,9 @@ extern size_t wcsxfrm_l(wchar_t*, const wchar_t*, size_t, locale_t) __INTRODUCED extern size_t wcslcat(wchar_t*, const wchar_t*, size_t); extern size_t wcslcpy(wchar_t*, const wchar_t*, size_t); -#if __POSIX_VISIBLE >= 200809 FILE* open_wmemstream(wchar_t**, size_t*) __INTRODUCED_IN(23); wchar_t* wcsdup(const wchar_t*); size_t wcsnlen(const wchar_t*, size_t); -#endif __END_DECLS diff --git a/libm/Android.bp b/libm/Android.bp index 08f1c664c..25c3e8f42 100644 --- a/libm/Android.bp +++ b/libm/Android.bp @@ -518,7 +518,6 @@ cc_library { "-Wno-sign-compare", "-Wno-uninitialized", "-Wno-unknown-pragmas", - "-fvisibility=hidden", ], conlyflags: ["-std=gnu11"], diff --git a/tests/string_posix_strerror_r_test.cpp b/tests/string_posix_strerror_r_test.cpp index ae3b41abd..596684b56 100644 --- a/tests/string_posix_strerror_r_test.cpp +++ b/tests/string_posix_strerror_r_test.cpp @@ -20,7 +20,7 @@ #if defined(__GLIBC__) // At the time of writing, libcxx -- which is dragged in by gtest -- assumes -// declarations from glibc of things that aren't available without __USE_GNU. +// declarations from glibc of things that aren't available without _GNU_SOURCE. // This means we can't even build this test (which is a problem because that // means it doesn't get included in CTS). // For glibc 2.15, the symbols in question are: |