about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--dirent/dirent.h18
-rw-r--r--include/dirent.h6
-rw-r--r--include/wchar.h12
-rw-r--r--stdlib/stdlib.h15
-rw-r--r--wcsmbs/wchar.h38
5 files changed, 54 insertions, 35 deletions
diff --git a/dirent/dirent.h b/dirent/dirent.h
index 0888e46dc7..dcbeab6946 100644
--- a/dirent/dirent.h
+++ b/dirent/dirent.h
@@ -252,11 +252,13 @@ extern int scandir64 (__const char *__restrict __dir,
 
 /* Function to compare two `struct dirent's alphabetically.  */
 # ifndef __USE_FILE_OFFSET64
-extern int alphasort (__const void *__e1, __const void *__e2) __THROW;
+extern int alphasort (__const void *__e1, __const void *__e2)
+     __THROW __attribute_pure__;
 # else
 #  ifdef __REDIRECT
 extern int __REDIRECT (alphasort,
-		       (__const void *__e1, __const void *__e2) __THROW,
+		       (__const void *__e1, __const void *__e2)
+		       __THROW __attribute_pure__,
 		       alphasort64);
 #  else
 #   define alphasort alphasort64
@@ -264,17 +266,20 @@ extern int __REDIRECT (alphasort,
 # endif
 
 # if defined __USE_GNU && defined __USE_LARGEFILE64
-extern int alphasort64 (__const void *__e1, __const void *__e2) __THROW;
+extern int alphasort64 (__const void *__e1, __const void *__e2)
+     __THROW __attribute_pure__;
 # endif
 
 # ifdef __USE_GNU
 /* Function to compare two `struct dirent's by name & version.  */
 #  ifndef __USE_FILE_OFFSET64
-extern int versionsort (__const void *__e1, __const void *__e2) __THROW;
+extern int versionsort (__const void *__e1, __const void *__e2)
+     __THROW __attribute_pure__;
 #  else
 #   ifdef __REDIRECT
 extern int __REDIRECT (versionsort,
-		       (__const void *__e1, __const void *__e2) __THROW,
+		       (__const void *__e1, __const void *__e2)
+		       __THROW __attribute_pure__,
 		       versionsort64);
 #   else
 #    define versionsort versionsort64
@@ -282,7 +287,8 @@ extern int __REDIRECT (versionsort,
 #  endif
 
 #  ifdef __USE_LARGEFILE64
-extern int versionsort64 (__const void *__e1, __const void *__e2) __THROW;
+extern int versionsort64 (__const void *__e1, __const void *__e2)
+     __THROW __attribute_pure__;
 #  endif
 # endif
 
diff --git a/include/dirent.h b/include/dirent.h
index 4bffb06a39..d0ca3f2ffb 100644
--- a/include/dirent.h
+++ b/include/dirent.h
@@ -18,6 +18,8 @@ extern __ssize_t __getdents (int __fd, char *__buf, size_t __nbytes)
      internal_function;
 extern __ssize_t __getdents64 (int __fd, char *__buf, size_t __nbytes)
      internal_function;
-extern int __alphasort64 (const void *a, const void *b);
-extern int __versionsort64 (const void *a, const void *b);
+extern int __alphasort64 (const void *a, const void *b)
+     __attribute_pure__;
+extern int __versionsort64 (const void *a, const void *b)
+     __attribute_pure__;
 #endif
diff --git a/include/wchar.h b/include/wchar.h
index 7187d76c05..ee12563e99 100644
--- a/include/wchar.h
+++ b/include/wchar.h
@@ -3,10 +3,13 @@
 
 # ifdef _WCHAR_H
 /* Now define the internal interfaces.  */
-extern int __wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2);
+extern int __wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2)
+     __attribute_pure__;
 extern int __wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2,
-			  size_t __n);
-extern size_t __wcsnlen (__const wchar_t *__s, size_t __maxlen);
+			  size_t __n)
+     __attribute_pure__;
+extern size_t __wcsnlen (__const wchar_t *__s, size_t __maxlen)
+     __attribute_pure__;
 extern wint_t __btowc (int __c);
 extern int __mbsinit (__const __mbstate_t *__ps);
 extern size_t __mbrtowc (wchar_t *__restrict __pwc,
@@ -37,7 +40,8 @@ extern wchar_t *__wmempcpy (wchar_t *__restrict __s1,
 			    size_t __n);
 extern wchar_t *__wmemmove (wchar_t *__s1, __const wchar_t *__s2,
 			    size_t __n);
-extern wchar_t *__wcschrnul (__const wchar_t *__s, wchar_t __wc);
+extern wchar_t *__wcschrnul (__const wchar_t *__s, wchar_t __wc)
+     __attribute_pure__;
 
 extern int __vfwscanf (FILE *__restrict __s,
 		       __const wchar_t *__restrict __format,
diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
index bdf618f152..4b8b4674c2 100644
--- a/stdlib/stdlib.h
+++ b/stdlib/stdlib.h
@@ -134,15 +134,16 @@ extern size_t __ctype_get_mb_cur_max (void) __THROW;
 
 
 /* Convert a string to a floating-point number.  */
-extern double atof (__const char *__nptr) __THROW;
+extern double atof (__const char *__nptr) __THROW __attribute_pure__;
 /* Convert a string to an integer.  */
-extern int atoi (__const char *__nptr) __THROW;
+extern int atoi (__const char *__nptr) __THROW __attribute_pure__;
 /* Convert a string to a long integer.  */
-extern long int atol (__const char *__nptr) __THROW;
+extern long int atol (__const char *__nptr) __THROW __attribute_pure__;
 
 #if defined __USE_ISOC99 || (defined __GNUC__ && defined __USE_MISC)
-/* These functions will part of the standard C library in ISO C99.  */
-__extension__ extern long long int atoll (__const char *__nptr) __THROW;
+/* Convert a string to a long long integer.  */
+__extension__ extern long long int atoll (__const char *__nptr)
+     __THROW __attribute_pure__;
 #endif
 
 /* Convert a string to a floating-point number.  */
@@ -384,7 +385,7 @@ atoll (__const char *__nptr) __THROW
 extern char *l64a (long int __n) __THROW;
 
 /* Read a number from a string S in base 64 as above.  */
-extern long int a64l (__const char *__s) __THROW;
+extern long int a64l (__const char *__s) __THROW __attribute_pure__;
 
 
 # include <sys/types.h>	/* we need int32_t... */
@@ -552,7 +553,7 @@ extern void *valloc (size_t __size) __THROW __attribute_malloc__;
 #ifdef __USE_XOPEN2K
 /* Allocate memory of SIZE bytes with an alignment of ALIGNMENT.  */
 extern int posix_memalign (void **memptr, size_t alignment, size_t size)
-     __THROW;
+     __THROW __attribute_malloc__;
 #endif
 
 /* Abort execution and generate a core-dump.  */
diff --git a/wcsmbs/wchar.h b/wcsmbs/wchar.h
index 6ffe38b02f..d33b0ea76b 100644
--- a/wcsmbs/wchar.h
+++ b/wcsmbs/wchar.h
@@ -119,10 +119,11 @@ extern wchar_t *wcsncat (wchar_t *__restrict __dest,
      __THROW;
 
 /* Compare S1 and S2.  */
-extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2) __THROW;
+extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2)
+     __THROW __attribute_pure__;
 /* Compare N wide-characters of S1 and S2.  */
 extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n)
-     __THROW;
+     __THROW __attribute_pure__;
 
 #ifdef __USE_GNU
 /* Compare S1 and S2, ignoring case.  */
@@ -167,39 +168,42 @@ extern size_t __wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2,
 			   size_t __n, __locale_t __loc) __THROW;
 
 /* Duplicate S, returning an identical malloc'd string.  */
-extern wchar_t *wcsdup (__const wchar_t *__s) __THROW;
+extern wchar_t *wcsdup (__const wchar_t *__s) __THROW __attribute_malloc__;
 #endif
 
 /* Find the first occurrence of WC in WCS.  */
-extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc) __THROW;
+extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc)
+     __THROW __attribute_pure__;
 /* Find the last occurrence of WC in WCS.  */
-extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc) __THROW;
+extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc)
+     __THROW __attribute_pure__;
 
 #ifdef __USE_GNU
 /* This funciton is similar to `wcschr'.  But it returns a pointer to
    the closing NUL wide character in case C is not found in S.  */
-extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc) __THROW;
+extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc)
+     __THROW __attribute_pure__;
 #endif
 
 /* Return the length of the initial segmet of WCS which
    consists entirely of wide characters not in REJECT.  */
 extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject)
-     __THROW;
+     __THROW __attribute_pure__;
 /* Return the length of the initial segmet of WCS which
    consists entirely of wide characters in  ACCEPT.  */
 extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept)
-     __THROW;
+     __THROW __attribute_pure__;
 /* Find the first occurrence in WCS of any character in ACCEPT.  */
 extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept)
-     __THROW;
+     __THROW __attribute_pure__;
 /* Find the first occurrence of NEEDLE in HAYSTACK.  */
 extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle)
-     __THROW;
+     __THROW __attribute_pure__;
 
 #ifdef __USE_XOPEN
 /* Another name for `wcsstr' from XPG4.  */
 extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle)
-     __THROW;
+     __THROW __attribute_pure__;
 #endif
 
 /* Divide WCS into tokens separated by characters in DELIM.  */
@@ -208,22 +212,24 @@ extern wchar_t *wcstok (wchar_t *__restrict __s,
 			wchar_t **__restrict __ptr) __THROW;
 
 /* Return the number of wide characters in S.  */
-extern size_t __wcslen (__const wchar_t *__s) __THROW;
-extern size_t wcslen (__const wchar_t *__s) __THROW;
+extern size_t __wcslen (__const wchar_t *__s) __THROW __attribute_pure__;
+extern size_t wcslen (__const wchar_t *__s) __THROW __attribute_pure__;
 
 #ifdef __USE_GNU
 /* Return the number of wide characters in S, but at most MAXLEN.  */
-extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen) __THROW;
+extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen)
+     __THROW __attribute_pure__;
 #endif
 
 
 /* Search N wide characters of S for C.  */
 extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n)
-     __THROW;
+     __THROW __attribute_pure__;
 
 /* Compare N wide characters of S1 and S2.  */
 extern int wmemcmp (__const wchar_t *__restrict __s1,
-		    __const wchar_t *__restrict __s2, size_t __n) __THROW;
+		    __const wchar_t *__restrict __s2, size_t __n)
+     __THROW __attribute_pure__;
 
 /* Copy N wide characters of SRC to DEST.  */
 extern wchar_t *wmemcpy (wchar_t *__restrict __s1,