diff options
author | Joseph Myers <joseph@codesourcery.com> | 2014-11-12 22:41:03 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2014-11-12 22:41:03 +0000 |
commit | 9975e3d37d8585b41db075321bade3495cf58cdb (patch) | |
tree | 416cb16185348b44feb8e0fdb778325a52598e21 /include | |
parent | c4eae75271734f820a7477dbce33f8752af6f003 (diff) | |
download | glibc-9975e3d37d8585b41db075321bade3495cf58cdb.tar.gz |
Fix locale memmem namespace (bug 17585).
Locale code, brought in by ISO C functions, calls memmem, which is not
an ISO C function. This isn't an ISO C conformance bug, because all
mem* names are reserved, but glibc practice is not to rely on that
reservation (thus, memmem is only declared in string.h if __USE_GNU
even though ISO C would allow it to be declared unconditionally, for
example). This patch changes that code to use __memmem.
Note: there are uses of memmem elsewhere in glibc that I didn't
change, although it may turn out some of those also need to use
__memmem.
Tested for x86_64 (testsuite, and that disassembly of installed shared
libraries is unchanged by this patch).
[BZ #17585]
* string/memmem.c [!_LIBC] (__memmem): Define to memmem.
(memmem): Rename to __memmem and define as weak alias of
__memmem. Use libc_hidden_weak.
(__memmem): Use libc_hidden_def.
* include/string.h (__memmem): Declare. Use libc_hidden_proto.
* locale/findlocale.c (valid_locale_name): Use __memmem instead of
memmem.
Diffstat (limited to 'include')
-rw-r--r-- | include/string.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/string.h b/include/string.h index 2603e9c0ab..99cc2d3f59 100644 --- a/include/string.h +++ b/include/string.h @@ -90,6 +90,8 @@ extern char *__strsep_g (char **__stringp, const char *__delim); libc_hidden_proto (__strsep_g) libc_hidden_proto (strnlen) libc_hidden_proto (memmem) +extern __typeof (memmem) __memmem; +libc_hidden_proto (__memmem) libc_hidden_proto (__ffs) libc_hidden_builtin_proto (memchr) |