diff --git a/libc/include/android/legacy_string_inlines.h b/libc/include/android/legacy_string_inlines.h
index af84f55..ceab909 100644
--- a/libc/include/android/legacy_string_inlines.h
+++ b/libc/include/android/legacy_string_inlines.h
@@ -24,8 +24,8 @@
 
 #if __ANDROID_API__ < 21
 
-static __inline __purefunc int strcoll_l(const char* _Nonnull s1, const char* _Nonnull s2,
-                              locale_t l __unused)  {
+static __inline __attribute_pure__ int strcoll_l(const char* _Nonnull s1, const char* _Nonnull s2,
+                                                 locale_t l __unused)  {
   return strcoll(s1, s2);
 }
 
diff --git a/libc/include/bits/strcasecmp.h b/libc/include/bits/strcasecmp.h
index 7cb713e..df1a6b8 100644
--- a/libc/include/bits/strcasecmp.h
+++ b/libc/include/bits/strcasecmp.h
@@ -35,10 +35,10 @@
 
 __BEGIN_DECLS
 
-int strcasecmp(const char*, const char*) __purefunc;
-int strcasecmp_l(const char*, const char*, locale_t) __purefunc __INTRODUCED_IN(23);
-int strncasecmp(const char*, const char*, size_t) __purefunc;
-int strncasecmp_l(const char*, const char*, size_t, locale_t) __purefunc __INTRODUCED_IN(23);
+int strcasecmp(const char*, const char*) __attribute_pure__;
+int strcasecmp_l(const char*, const char*, locale_t) __attribute_pure__ __INTRODUCED_IN(23);
+int strncasecmp(const char*, const char*, size_t) __attribute_pure__;
+int strncasecmp_l(const char*, const char*, size_t, locale_t) __attribute_pure__ __INTRODUCED_IN(23);
 
 __END_DECLS
 
diff --git a/libc/include/errno.h b/libc/include/errno.h
index 8b2e8ed..3f4cff9 100644
--- a/libc/include/errno.h
+++ b/libc/include/errno.h
@@ -41,7 +41,7 @@
 #endif
 
 /* internal function returning the address of the thread-specific errno */
-volatile int* __errno(void) __pure2;
+volatile int* __errno(void) __attribute_const__;
 
 /* a macro expanding to the errno l-value */
 #define  errno   (*__errno())
diff --git a/libc/include/inttypes.h b/libc/include/inttypes.h
index 54b5ee2..2c268e6 100644
--- a/libc/include/inttypes.h
+++ b/libc/include/inttypes.h
@@ -254,8 +254,8 @@
 } imaxdiv_t;
 
 __BEGIN_DECLS
-intmax_t imaxabs(intmax_t) __pure2 __INTRODUCED_IN(19);
-imaxdiv_t imaxdiv(intmax_t, intmax_t) __pure2 __INTRODUCED_IN(19);
+intmax_t imaxabs(intmax_t) __attribute_const__ __INTRODUCED_IN(19);
+imaxdiv_t imaxdiv(intmax_t, intmax_t) __attribute_const__ __INTRODUCED_IN(19);
 intmax_t	strtoimax(const char *, char **, int);
 uintmax_t	strtoumax(const char *, char **, int);
 intmax_t wcstoimax(const wchar_t* __restrict, wchar_t** __restrict, int) __INTRODUCED_IN(21);
diff --git a/libc/include/math.h b/libc/include/math.h
index 4437b81..d9896fc 100644
--- a/libc/include/math.h
+++ b/libc/include/math.h
@@ -86,25 +86,25 @@
 /*
  * 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.
+ * as __attribute_const__. In C99, FENV_ACCESS affects the purity of these functions.
  */
 
-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 __fpclassifyd(double) __attribute_const__;
+int __fpclassifyf(float) __attribute_const__;
+int __fpclassifyl(long double) __attribute_const__;
+int __isfinitef(float) __attribute_const__;
+int __isfinite(double) __attribute_const__;
+int __isfinitel(long double) __attribute_const__;
+int __isinff(float) __attribute_const__;
+int __isinfl(long double) __attribute_const__;
+int __isnanf(float) __attribute_const__ __INTRODUCED_IN(21);
+int __isnanl(long double) __attribute_const__;
+int __isnormalf(float) __attribute_const__;
+int __isnormal(double) __attribute_const__;
+int __isnormall(long double) __attribute_const__;
+int __signbit(double) __attribute_const__;
+int __signbitf(float) __attribute_const__;
+int __signbitl(long double) __attribute_const__;
 
 double	acos(double);
 double	asin(double);
@@ -119,17 +119,17 @@
 double	tanh(double);
 
 double	exp(double);
-double	frexp(double, int *);	/* fundamentally !__pure2 */
+double	frexp(double, int *);	/* fundamentally !__attribute_const__ */
 double	ldexp(double, int);
 double	log(double);
 double	log10(double);
-double	modf(double, double *);	/* fundamentally !__pure2 */
+double	modf(double, double *);	/* fundamentally !__attribute_const__ */
 
 double	pow(double, double);
 double	sqrt(double);
 
 double	ceil(double);
-double	fabs(double) __pure2;
+double	fabs(double) __attribute_const__;
 double	floor(double);
 double	fmod(double, double);
 
@@ -143,9 +143,9 @@
 double	expm1(double);
 double	fma(double, double, double);
 double	hypot(double, double);
-int	ilogb(double) __pure2;
-int(isinf)(double) __pure2 __INTRODUCED_IN(21);
-int	(isnan)(double) __pure2;
+int	ilogb(double) __attribute_const__;
+int(isinf)(double) __attribute_const__ __INTRODUCED_IN(21);
+int	(isnan)(double) __attribute_const__;
 double	lgamma(double);
 long long llrint(double);
 long long llround(double);
@@ -155,7 +155,7 @@
 long	lrint(double);
 long	lround(double);
 
-double nan(const char*) __pure2 __INTRODUCED_IN_ARM(13) __INTRODUCED_IN_MIPS(13)
+double nan(const char*) __attribute_const__ __INTRODUCED_IN_ARM(13) __INTRODUCED_IN_MIPS(13)
     __INTRODUCED_IN_X86(9);
 
 double	nextafter(double, double);
@@ -163,10 +163,10 @@
 double	remquo(double, double, int*);
 double	rint(double);
 
-double	copysign(double, double) __pure2;
+double	copysign(double, double) __attribute_const__;
 double	fdim(double, double);
-double	fmax(double, double) __pure2;
-double	fmin(double, double) __pure2;
+double	fmax(double, double) __attribute_const__;
+double	fmin(double, double) __attribute_const__;
 double	nearbyint(double);
 double	round(double);
 double scalbln(double, long) __INTRODUCED_IN_X86(18) __VERSIONER_NO_GUARD;
@@ -189,20 +189,20 @@
 float	exp2f(float);
 float	expf(float);
 float	expm1f(float);
-float	frexpf(float, int *);	/* fundamentally !__pure2 */
-int	ilogbf(float) __pure2;
+float	frexpf(float, int *);	/* fundamentally !__attribute_const__ */
+int	ilogbf(float) __attribute_const__;
 float	ldexpf(float, int);
 float	log10f(float);
 float	log1pf(float);
 float log2f(float) __INTRODUCED_IN(18);
 float	logf(float);
-float	modff(float, float *);	/* fundamentally !__pure2 */
+float	modff(float, float *);	/* fundamentally !__attribute_const__ */
 
 float	powf(float, float);
 float	sqrtf(float);
 
 float	ceilf(float);
-float	fabsf(float) __pure2;
+float	fabsf(float) __attribute_const__;
 float	floorf(float);
 float	fmodf(float, float);
 float	roundf(float);
@@ -218,12 +218,12 @@
 float	atanhf(float);
 float	cbrtf(float);
 float	logbf(float);
-float	copysignf(float, float) __pure2;
+float	copysignf(float, float) __attribute_const__;
 long long llrintf(float);
 long long llroundf(float);
 long	lrintf(float);
 long	lroundf(float);
-float nanf(const char*) __pure2 __INTRODUCED_IN_ARM(13) __INTRODUCED_IN_MIPS(13)
+float nanf(const char*) __attribute_const__ __INTRODUCED_IN_ARM(13) __INTRODUCED_IN_MIPS(13)
     __INTRODUCED_IN_X86(9);
 float	nearbyintf(float);
 float	nextafterf(float, float);
@@ -236,8 +236,8 @@
 
 float	fdimf(float, float);
 float	fmaf(float, float, float);
-float	fmaxf(float, float) __pure2;
-float	fminf(float, float) __pure2;
+float	fmaxf(float, float) __attribute_const__;
+float	fminf(float, float) __attribute_const__;
 
 long double acoshl(long double) __INTRODUCED_IN(21);
 long double acosl(long double) __INTRODUCED_IN(21);
@@ -248,7 +248,7 @@
 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 copysignl(long double, long double) __attribute_const__;
 long double coshl(long double) __INTRODUCED_IN(21);
 long double cosl(long double) __INTRODUCED_IN(21);
 long double erfcl(long double) __INTRODUCED_IN(21);
@@ -256,17 +256,17 @@
 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 fabsl(long double) __attribute_const__;
 long double fdiml(long double, long double);
 long double floorl(long double);
 long double fmal(long double, long double, long double) __INTRODUCED_IN(21) __VERSIONER_NO_GUARD;
-long double fmaxl(long double, long double) __pure2;
-long double fminl(long double, long double) __pure2;
+long double fmaxl(long double, long double) __attribute_const__;
+long double fminl(long double, long double) __attribute_const__;
 long double fmodl(long double, long double) __INTRODUCED_IN(21);
 long double frexpl(long double value, int*)
-    __INTRODUCED_IN(21) __VERSIONER_NO_GUARD; /* fundamentally !__pure2 */
+    __INTRODUCED_IN(21) __VERSIONER_NO_GUARD; /* fundamentally !__attribute_const__ */
 long double hypotl(long double, long double) __INTRODUCED_IN(21);
-int ilogbl(long double) __pure2;
+int ilogbl(long double) __attribute_const__;
 long double ldexpl(long double, int);
 long double lgammal(long double) __INTRODUCED_IN(21);
 long long llrintl(long double) __INTRODUCED_IN(21);
@@ -278,8 +278,8 @@
 long double logl(long double) __INTRODUCED_IN(21);
 long lrintl(long double) __INTRODUCED_IN(21);
 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 modfl(long double, long double*) __INTRODUCED_IN(21); /* fundamentally !__attribute_const__ */
+long double nanl(const char*) __attribute_const__ __INTRODUCED_IN(13);
 long double nearbyintl(long double) __INTRODUCED_IN(21);
 long double nextafterl(long double, long double) __INTRODUCED_IN(21) __VERSIONER_NO_GUARD;
 double nexttoward(double, long double) __INTRODUCED_IN(18) __VERSIONER_NO_GUARD;
@@ -327,15 +327,15 @@
 double gamma(double);
 double scalb(double, double);
 double drem(double, double);
-int finite(double) __pure2;
-int isnanf(float) __pure2;
+int finite(double) __attribute_const__;
+int isnanf(float) __attribute_const__;
 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;
+int finitef(float) __attribute_const__;
 float gammaf(float);
 float j0f(float);
 float j1f(float);
diff --git a/libc/include/pthread.h b/libc/include/pthread.h
index 85b8cd9..20fd566 100644
--- a/libc/include/pthread.h
+++ b/libc/include/pthread.h
@@ -196,7 +196,7 @@
 int pthread_spin_trylock(pthread_spinlock_t* _Nonnull) __INTRODUCED_IN(24);
 int pthread_spin_unlock(pthread_spinlock_t* _Nonnull) __INTRODUCED_IN(24);
 
-pthread_t pthread_self(void) __pure2;
+pthread_t pthread_self(void) __attribute_const__;
 
 #if defined(__USE_GNU)
 int pthread_getname_np(pthread_t, char* _Nonnull, size_t) __INTRODUCED_IN_FUTURE;
diff --git a/libc/include/stdlib.h b/libc/include/stdlib.h
index 8d6651b..c84460b 100644
--- a/libc/include/stdlib.h
+++ b/libc/include/stdlib.h
@@ -79,9 +79,9 @@
 
 unsigned long strtoul_l(const char*, char**, int, locale_t) __INTRODUCED_IN_FUTURE;
 
-int atoi(const char*) __purefunc;
-long atol(const char*) __purefunc;
-long long atoll(const char*) __purefunc;
+int atoi(const char*) __attribute_pure__;
+long atol(const char*) __attribute_pure__;
+long long atoll(const char*) __attribute_pure__;
 
 char* realpath(const char* path, char* resolved);
 int system(const char* string);
@@ -125,21 +125,21 @@
     int  rem;
 } div_t;
 
-div_t div(int, int) __pure2;
+div_t div(int, int) __attribute_const__;
 
 typedef struct {
     long int  quot;
     long int  rem;
 } ldiv_t;
 
-ldiv_t ldiv(long, long) __pure2;
+ldiv_t ldiv(long, long) __attribute_const__;
 
 typedef struct {
     long long int  quot;
     long long int  rem;
 } lldiv_t;
 
-lldiv_t lldiv(long long, long long) __pure2;
+lldiv_t lldiv(long long, long long) __attribute_const__;
 
 /* BSD compatibility. */
 const char* getprogname(void) __INTRODUCED_IN(21);
@@ -186,10 +186,10 @@
 
 #if __ANDROID_API__ >= 21
 float strtof(const char*, char**) __INTRODUCED_IN(21);
-double atof(const char*) __INTRODUCED_IN(21);
-int abs(int) __pure2 __INTRODUCED_IN(21);
-long labs(long) __pure2 __INTRODUCED_IN(21);
-long long llabs(long long) __pure2 __INTRODUCED_IN(21);
+double atof(const char*) __attribute_pure__ __INTRODUCED_IN(21);
+int abs(int) __attribute_const__ __INTRODUCED_IN(21);
+long labs(long) __attribute_const__ __INTRODUCED_IN(21);
+long long llabs(long long) __attribute_const__ __INTRODUCED_IN(21);
 int rand(void) __INTRODUCED_IN(21);
 void srand(unsigned int) __INTRODUCED_IN(21);
 long random(void) __INTRODUCED_IN(21);
diff --git a/libc/include/string.h b/libc/include/string.h
index 8ad227b..0114e6a 100644
--- a/libc/include/string.h
+++ b/libc/include/string.h
@@ -47,42 +47,42 @@
 #endif
 
 void* memccpy(void* _Nonnull __restrict, const void* _Nonnull __restrict, int, size_t);
-void* memchr(const void* _Nonnull, int, size_t) __purefunc;
-void* memrchr(const void* _Nonnull, int, size_t) __purefunc;
-int memcmp(const void* _Nonnull, const void* _Nonnull, size_t) __purefunc;
+void* memchr(const void* _Nonnull, int, size_t) __attribute_pure__;
+void* memrchr(const void* _Nonnull, int, size_t) __attribute_pure__;
+int memcmp(const void* _Nonnull, const void* _Nonnull, size_t) __attribute_pure__;
 void* memcpy(void* _Nonnull __restrict, const void* _Nonnull __restrict, size_t);
 #if defined(__USE_GNU)
 void* mempcpy(void* _Nonnull __restrict, const void* _Nonnull __restrict, size_t) __INTRODUCED_IN(23);
 #endif
 void* memmove(void* _Nonnull, const void* _Nonnull, size_t);
 void* memset(void* _Nonnull, int, size_t);
-void* memmem(const void* _Nonnull, size_t, const void* _Nonnull, size_t) __purefunc;
+void* memmem(const void* _Nonnull, size_t, const void* _Nonnull, size_t) __attribute_pure__;
 
-char* strchr(const char* _Nonnull, int) __purefunc;
+char* strchr(const char* _Nonnull, int) __attribute_pure__;
 char* __strchr_chk(const char* _Nonnull, int, size_t) __INTRODUCED_IN(18);
 #if defined(__USE_GNU)
 #if defined(__cplusplus)
-extern "C++" char* strchrnul(char* _Nonnull, int) __RENAME(strchrnul) __purefunc;
-extern "C++" const char* strchrnul(const char* _Nonnull, int) __RENAME(strchrnul) __purefunc;
+extern "C++" char* strchrnul(char* _Nonnull, int) __RENAME(strchrnul) __attribute_pure__;
+extern "C++" const char* strchrnul(const char* _Nonnull, int) __RENAME(strchrnul) __attribute_pure__;
 #else
-char* strchrnul(const char* _Nonnull, int) __purefunc __INTRODUCED_IN(24);
+char* strchrnul(const char* _Nonnull, int) __attribute_pure__ __INTRODUCED_IN(24);
 #endif
 #endif
 
-char* strrchr(const char* _Nonnull, int) __purefunc;
+char* strrchr(const char* _Nonnull, int) __attribute_pure__;
 char* __strrchr_chk(const char* _Nonnull, int, size_t) __INTRODUCED_IN(18);
 
-size_t strlen(const char* _Nonnull) __purefunc;
+size_t strlen(const char* _Nonnull) __attribute_pure__;
 size_t __strlen_chk(const char* _Nonnull, size_t) __INTRODUCED_IN(17);
-int strcmp(const char* _Nonnull, const char* _Nonnull) __purefunc;
+int strcmp(const char* _Nonnull, const char* _Nonnull) __attribute_pure__;
 char* stpcpy(char* _Nonnull __restrict, const char* _Nonnull__restrict) __INTRODUCED_IN(21);
 char* strcpy(char* _Nonnull __restrict, const char* _Nonnull __restrict);
 char* strcat(char* _Nonnull __restrict, const char* _Nonnull __restrict);
 
 char* strdup(const char* _Nonnull);
 
-char* strstr(const char* _Nonnull, const char* _Nonnull) __purefunc;
-char* strcasestr(const char* _Nonnull, const char* _Nonnull) __purefunc;
+char* strstr(const char* _Nonnull, const char* _Nonnull) __attribute_pure__;
+char* strcasestr(const char* _Nonnull, const char* _Nonnull) __attribute_pure__;
 char* strtok(char* __restrict, const char* _Nonnull __restrict);
 char* strtok_r(char* __restrict, const char* _Nonnull __restrict, char** _Nonnull __restrict);
 
@@ -94,28 +94,28 @@
 int strerror_r(int, char*, size_t);
 #endif
 
-size_t strnlen(const char* _Nonnull, size_t) __purefunc;
+size_t strnlen(const char* _Nonnull, size_t) __attribute_pure__;
 char* strncat(char* _Nonnull __restrict, const char* _Nonnull __restrict, size_t);
 char* strndup(const char* _Nonnull, size_t);
-int strncmp(const char* _Nonnull, const char* _Nonnull, size_t) __purefunc;
+int strncmp(const char* _Nonnull, const char* _Nonnull, size_t) __attribute_pure__;
 char* stpncpy(char* _Nonnull __restrict, const char* _Nonnull __restrict, size_t) __INTRODUCED_IN(21);
 char* strncpy(char* _Nonnull __restrict, const char* _Nonnull __restrict, size_t);
 
 size_t strlcat(char* _Nonnull __restrict, const char* _Nonnull __restrict, size_t);
 size_t strlcpy(char* _Nonnull __restrict, const char* _Nonnull __restrict, size_t);
 
-size_t strcspn(const char* _Nonnull, const char* _Nonnull) __purefunc;
-char* strpbrk(const char* _Nonnull, const char* _Nonnull) __purefunc;
+size_t strcspn(const char* _Nonnull, const char* _Nonnull) __attribute_pure__;
+char* strpbrk(const char* _Nonnull, const char* _Nonnull) __attribute_pure__;
 char* strsep(char** _Nonnull __restrict, const char* _Nonnull __restrict);
 size_t strspn(const char* _Nonnull, const char* _Nonnull);
 
 char* strsignal(int);
 
-int strcoll(const char* _Nonnull, const char* _Nonnull) __purefunc;
+int strcoll(const char* _Nonnull, const char* _Nonnull) __attribute_pure__;
 size_t strxfrm(char* __restrict, const char* _Nonnull __restrict, size_t);
 
 #if __ANDROID_API__ >= 21
-int strcoll_l(const char* _Nonnull, const char* _Nonnull, locale_t) __purefunc __INTRODUCED_IN(21);
+int strcoll_l(const char* _Nonnull, const char* _Nonnull, locale_t) __attribute_pure__ __INTRODUCED_IN(21);
 size_t strxfrm_l(char* __restrict, const char* _Nonnull __restrict, size_t, locale_t) __INTRODUCED_IN(21);
 #else
 // Implemented as static inlines before 21.
diff --git a/libc/include/sys/cdefs.h b/libc/include/sys/cdefs.h
index 3b058e8..63e782e 100644
--- a/libc/include/sys/cdefs.h
+++ b/libc/include/sys/cdefs.h
@@ -102,13 +102,12 @@
 #endif	/* !(__STDC__ || __cplusplus) */
 
 #define __always_inline __attribute__((__always_inline__))
+#define __attribute_const__ __attribute__((__const__))
+#define __attribute_pure__ __attribute__((__pure__))
 #define __dead __attribute__((__noreturn__))
 #define __noreturn __attribute__((__noreturn__))
-#define __mallocfunc  __attribute__((malloc))
+#define __mallocfunc  __attribute__((__malloc__))
 #define __packed __attribute__((__packed__))
-#define __pure __attribute__((__const__))
-#define __pure2 __attribute__((__const__)) /* Android-added: used by FreeBSD libm */
-#define __purefunc    __attribute__((pure))
 #define __unused __attribute__((__unused__))
 #define __used __attribute__((__used__))
 
diff --git a/libc/include/sys/endian.h b/libc/include/sys/endian.h
index b9e4758..de172fe 100644
--- a/libc/include/sys/endian.h
+++ b/libc/include/sys/endian.h
@@ -49,10 +49,10 @@
 
 /* glibc compatibility. */
 __BEGIN_DECLS
-uint32_t htonl(uint32_t) __pure2 __INTRODUCED_IN(21);
-uint16_t htons(uint16_t) __pure2 __INTRODUCED_IN(21);
-uint32_t ntohl(uint32_t) __pure2 __INTRODUCED_IN(21);
-uint16_t ntohs(uint16_t) __pure2 __INTRODUCED_IN(21);
+uint32_t htonl(uint32_t) __attribute_const__ __INTRODUCED_IN(21);
+uint16_t htons(uint16_t) __attribute_const__ __INTRODUCED_IN(21);
+uint32_t ntohl(uint32_t) __attribute_const__ __INTRODUCED_IN(21);
+uint16_t ntohs(uint16_t) __attribute_const__ __INTRODUCED_IN(21);
 __END_DECLS
 
 #define htonl(x) __swap32(x)
diff --git a/libc/include/unistd.h b/libc/include/unistd.h
index 4e7d8ba..130ede6 100644
--- a/libc/include/unistd.h
+++ b/libc/include/unistd.h
@@ -81,7 +81,7 @@
 pid_t  fork(void);
 pid_t  vfork(void);
 pid_t  getpid(void);
-pid_t  gettid(void) __pure2;
+pid_t  gettid(void) __attribute_const__;
 pid_t  getpgid(pid_t __pid);
 int    setpgid(pid_t __pid, pid_t __pgid);
 pid_t  getppid(void);
diff --git a/libc/include/wchar.h b/libc/include/wchar.h
index 0f32355..c3ad91c 100644
--- a/libc/include/wchar.h
+++ b/libc/include/wchar.h
@@ -137,7 +137,7 @@
 unsigned long long wcstoull_l(const wchar_t*, wchar_t**, int, locale_t) __INTRODUCED_IN(21);
 long double wcstold_l(const wchar_t*, wchar_t**, locale_t) __INTRODUCED_IN(21);
 
-int wcscoll_l(const wchar_t* _Nonnull, const wchar_t* _Nonnull, locale_t) __purefunc
+int wcscoll_l(const wchar_t* _Nonnull, const wchar_t* _Nonnull, locale_t) __attribute_pure__
     __INTRODUCED_IN(21);
 size_t wcsxfrm_l(wchar_t*, const wchar_t* _Nonnull, size_t, locale_t) __INTRODUCED_IN(21);
 #else
