glibc/string
Joseph Myers 1769608794 Use libc_hidden_proto / libc_hidden_def with __strnlen.
Various code in glibc uses __strnlen instead of strnlen for namespace
reasons.  However, __strnlen does not use libc_hidden_proto /
libc_hidden_def (as is normally done for any function defined and
called within the same library, whether or not exported from the
library and whatever namespace it is in), so the compiler does not
know that those calls are to a function within libc.

This patch uses libc_hidden_proto / libc_hidden_def with __strnlen.
On x86_64, it makes no difference to the installed stripped shared
libraries.  On 32-bit x86, it causes __strnlen calls to go to the same
place as strnlen calls (the fallback strnlen implementation), rather
than through a PLT entry for the strnlen IFUNC; I'm not sure of the
logic behind when calls from within libc should use IFUNCs versus when
they should go direct to a particular function implementation, but
clearly it doesn't make sense for strnlen and __strnlen to be handled
differently in this regard.

Tested for x86_64 and x86 (testsuite, and comparison of installed
shared libraries as described above).

	* string/strnlen.c [!STRNLEN] (__strnlen): Use libc_hidden_def.
	* include/string.h (__strnlen): Use libc_hidden_proto.
	* sysdeps/aarch64/strnlen.S (__strnlen): Use libc_hidden_def.
	* sysdeps/i386/i686/multiarch/strnlen-c.c [SHARED]
	(libc_hidden_def): Define __GI___strnlen as well as __GI_strnlen.
	* sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-power7.S
	(libc_hidden_def): Undefine and redefine.
	* sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-ppc32.c
	[SHARED] (libc_hidden_def): Define __GI___strnlen as well as
	__GI_strnlen.
	* sysdeps/powerpc/powerpc32/power7/strnlen.S (__strnlen): Use
	libc_hidden_def.
	* sysdeps/tile/tilegx/strnlen.c (__strnlen): Likewise.
2015-06-02 20:24:25 +00:00
..
bits Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
_strerror.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
argz-addsep.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
argz-append.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
argz-count.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
argz-create.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
argz-ctsep.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
argz-delete.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
argz-extract.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
argz-insert.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
argz-next.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
argz-replace.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
argz-stringify.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
argz.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
basename.c Fix pathconf basename namespace (bug 18444). 2015-05-22 17:09:36 +00:00
bcopy.c Rather than using a C implementation of memmove, directly call memmove, which 2015-02-27 14:44:41 +00:00
bug-envz1.c * string/Makefile (tests): Add bug-envz1. 2006-06-04 16:36:04 +00:00
bug-strcoll1.c
bug-strncat1.c
bug-strpbrk1.c
bug-strspn1.c
bug-strtok1.c [BZ #2126] 2006-01-10 00:25:07 +00:00
byteswap.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
bzero.c Rather than using a C implementation of memset, directly call memset, which 2015-02-27 14:41:46 +00:00
Depend
endian.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
envz.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
envz.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ffs.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ffsll.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
inl-tester.c
Makefile Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memccpy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memchr.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memcmp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memcpy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memfrob.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memmem.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memmove.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memory.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mempcpy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memrchr.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memset.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
noinl-tester.c
rawmemchr.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
stpcpy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
stpncpy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
str-two-way.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
stratcliff.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcasecmp_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcasecmp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcasestr.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcat.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strchr.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strchrnul.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcmp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcoll_l.c Improve strcoll with strdiff. 2015-05-12 11:37:52 +02:00
strcoll.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcpy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcspn.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strdup.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strerror_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strerror.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strfry.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
string-inlines.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
string.h Don't define __CORRECT_ISO_CPP_STRING_H_PROTO for non-GCC compilers (bug 17631) 2015-03-04 11:52:55 +01:00
strings.h Don't define __CORRECT_ISO_CPP_STRING_H_PROTO for non-GCC compilers (bug 17631) 2015-03-04 11:52:55 +01:00
strlen.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strncase_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strncase.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strncat.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strncmp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strncpy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strndup.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strnlen.c Use libc_hidden_proto / libc_hidden_def with __strnlen. 2015-06-02 20:24:25 +00:00
strpbrk.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strrchr.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strsep.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strsignal.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strspn.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strstr.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtok_r.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtok.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strverscmp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strxfrm_l.c Remove unused definitions 2015-02-11 12:50:53 +01:00
strxfrm.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
swab.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-bcopy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-bzero.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-ffs.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-memccpy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-memchr.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-memcmp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-memcpy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-memmem.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-memmove.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-mempcpy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-memrchr.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-memset.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-rawmemchr.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-stpcpy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-stpncpy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-strcasecmp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-strcasestr.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-strcat.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-strchr.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-strchrnul.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-strcmp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-strcpy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-strcspn.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-string.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-strlen.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-strncasecmp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-strncat.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-strncmp.c Use correct signedness in wcsncmp 2015-04-13 21:25:04 +02:00
test-strncpy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-strnlen.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-strpbrk.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-strrchr.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-strspn.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-strstr.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
testcopy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tester.c Revert "Suppress warning in string/tester.c for gcc 4.9" 2015-01-06 18:43:28 +01:00
tst-bswap.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-endian.c Add #include <stdint.h> for uint[32|64]_t usage (except installed headers). 2013-05-16 11:32:54 -05:00
tst-inlcall.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-strcoll-overflow.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-strfry.c * stdlib/random_r.c (__initstate_r): Don't use non-existing state. 2005-04-12 15:29:07 +00:00
tst-strlen.c Add optimized x86-64 implementation of strnlen. 2010-07-26 08:37:08 -07:00
tst-strtok_r.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-strtok.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-strxfrm2.c * string/strxfrm_l.c (STRXFRM): Fix trailing \1 optimization 2006-11-10 15:20:59 +00:00
tst-strxfrm.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-svc2.c [BZ #9893] 2009-03-14 23:57:33 +00:00
tst-svc.c
tst-svc.expect * string/strverscmp.c (__strverscmp): Fix last cleanups. 2009-04-07 06:51:59 +00:00
tst-svc.input * string/strverscmp.c (__strverscmp): Fix last cleanups. 2009-04-07 06:51:59 +00:00
Versions Sort Versions files 2013-02-17 16:34:04 +01:00
wordcopy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
xpg-strerror.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00