aboutsummaryrefslogtreecommitdiffstats
path: root/libc
diff options
context:
space:
mode:
authorNick Kralevich <nnk@google.com>2012-03-21 14:40:41 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-03-21 14:40:41 -0700
commit891966d0209b17d27d8d1f7a94bc6404be93f7bf (patch)
tree20719cfd7d01b542682746d730f78fb29fc715ca /libc
parent1ca0b9d158f8d536a777fdb2cef6adadfea9c176 (diff)
parenta677907ee8ecca034318fdb97902fa73e7392c4f (diff)
downloadandroid_bionic-891966d0209b17d27d8d1f7a94bc6404be93f7bf.tar.gz
android_bionic-891966d0209b17d27d8d1f7a94bc6404be93f7bf.tar.bz2
android_bionic-891966d0209b17d27d8d1f7a94bc6404be93f7bf.zip
Merge "string.h: add __attribute__ ((pure)) to string functions"
Diffstat (limited to 'libc')
-rw-r--r--libc/include/string.h38
-rw-r--r--libc/include/sys/cdefs.h2
2 files changed, 21 insertions, 19 deletions
diff --git a/libc/include/string.h b/libc/include/string.h
index 613dcd78a..6e6c8e693 100644
--- a/libc/include/string.h
+++ b/libc/include/string.h
@@ -35,54 +35,54 @@
__BEGIN_DECLS
extern void* memccpy(void *, const void *, int, size_t);
-extern void* memchr(const void *, int, size_t);
-extern void* memrchr(const void *, int, size_t);
-extern int memcmp(const void *, const void *, size_t);
+extern void* memchr(const void *, int, size_t) __purefunc;
+extern void* memrchr(const void *, int, size_t) __purefunc;
+extern int memcmp(const void *, const void *, size_t) __purefunc;
extern void* memcpy(void *, const void *, size_t);
extern void* memmove(void *, const void *, size_t);
extern void* memset(void *, int, size_t);
-extern void* memmem(const void *, size_t, const void *, size_t);
+extern void* memmem(const void *, size_t, const void *, size_t) __purefunc;
extern void memswap(void *, void *, size_t);
-extern char* index(const char *, int);
-extern char* rindex(const char *, int);
-extern char* strchr(const char *, int);
-extern char* strrchr(const char *, int);
+extern char* index(const char *, int) __purefunc;
+extern char* rindex(const char *, int) __purefunc;
+extern char* strchr(const char *, int) __purefunc;
+extern char* strrchr(const char *, int) __purefunc;
-extern size_t strlen(const char *);
-extern int strcmp(const char *, const char *);
+extern size_t strlen(const char *) __purefunc;
+extern int strcmp(const char *, const char *) __purefunc;
extern char* strcpy(char *, const char *);
extern char* strcat(char *, const char *);
-extern int strcasecmp(const char *, const char *);
-extern int strncasecmp(const char *, const char *, size_t);
+extern int strcasecmp(const char *, const char *) __purefunc;
+extern int strncasecmp(const char *, const char *, size_t) __purefunc;
extern char* strdup(const char *);
-extern char* strstr(const char *, const char *);
-extern char* strcasestr(const char *haystack, const char *needle);
+extern char* strstr(const char *, const char *) __purefunc;
+extern char* strcasestr(const char *haystack, const char *needle) __purefunc;
extern char* strtok(char *, const char *);
extern char* strtok_r(char *, const char *, char**);
extern char* strerror(int);
extern int strerror_r(int errnum, char *buf, size_t n);
-extern size_t strnlen(const char *, size_t);
+extern size_t strnlen(const char *, size_t) __purefunc;
extern char* strncat(char *, const char *, size_t);
extern char* strndup(const char *, size_t);
-extern int strncmp(const char *, const char *, size_t);
+extern int strncmp(const char *, const char *, size_t) __purefunc;
extern char* strncpy(char *, const char *, size_t);
extern size_t strlcat(char *, const char *, size_t);
extern size_t strlcpy(char *, const char *, size_t);
-extern size_t strcspn(const char *, const char *);
-extern char* strpbrk(const char *, const char *);
+extern size_t strcspn(const char *, const char *) __purefunc;
+extern char* strpbrk(const char *, const char *) __purefunc;
extern char* strsep(char **, const char *);
extern size_t strspn(const char *, const char *);
extern char* strsignal(int sig);
-extern int strcoll(const char *, const char *);
+extern int strcoll(const char *, const char *) __purefunc;
extern size_t strxfrm(char *, const char *, size_t);
__END_DECLS
diff --git a/libc/include/sys/cdefs.h b/libc/include/sys/cdefs.h
index 92035d428..71b419ce4 100644
--- a/libc/include/sys/cdefs.h
+++ b/libc/include/sys/cdefs.h
@@ -306,9 +306,11 @@
#if __GNUC_PREREQ__(2, 96)
#define __noreturn __attribute__((__noreturn__))
#define __mallocfunc __attribute__((malloc))
+#define __purefunc __attribute__((pure))
#else
#define __noreturn
#define __mallocfunc
+#define __purefunc
#endif
/*