Fix __printf_fp wmemset namespace (bug 17574).

__printf_fp calls wmemset, but that is not an ISO C90 function.  This
patch fixes it to call a new __wmemset name instead (with wmemset
being a weak alias).

Tested for x86_64 (testsuite, and that disassembly of installed shared
libraries is unchanged by the patch).

	[BZ #17574]
	* wcsmbs/wmemset.c (wmemset): Rename to __wmemset and define as
	weak alias of __wmemset.  Use libc_hidden_weak.
	(__wmemset): Use libc_hidden_def.
	* include/wchar.h (__wmemset): Declare.  Use libc_hidden_proto.
	* stdio-common/printf_fp.c (___printf_fp): Call __wmemset instead
	of wmemset.
This commit is contained in:
Joseph Myers 2014-11-12 22:38:11 +00:00
parent 939da41143
commit 01cad84e19
5 changed files with 16 additions and 4 deletions

View File

@ -1,5 +1,13 @@
2014-11-12 Joseph Myers <joseph@codesourcery.com>
[BZ #17574]
* wcsmbs/wmemset.c (wmemset): Rename to __wmemset and define as
weak alias of __wmemset. Use libc_hidden_weak.
(__wmemset): Use libc_hidden_def.
* include/wchar.h (__wmemset): Declare. Use libc_hidden_proto.
* stdio-common/printf_fp.c (___printf_fp): Call __wmemset instead
of wmemset.
[BZ #17573]
* include/string.h [NOT_IN_libc || !SHARED] (mempcpy): Declare
with asm name __mempcpy.

2
NEWS
View File

@ -11,7 +11,7 @@ Version 2.21
6652, 12926, 14132, 14138, 14171, 15215, 15884, 17266, 17344, 17363,
17370, 17371, 17411, 17460, 17475, 17485, 17501, 17506, 17508, 17522,
17555, 17570, 17571, 17572, 17573, 17583, 17584.
17555, 17570, 17571, 17572, 17573, 17574, 17583, 17584.
* New locales: tu_IN, bh_IN.

View File

@ -88,8 +88,10 @@ libc_hidden_proto (wcschr)
libc_hidden_proto (wcscoll)
libc_hidden_proto (wcspbrk)
extern typeof (wmemset) __wmemset;
libc_hidden_proto (wmemchr)
libc_hidden_proto (wmemset)
libc_hidden_proto (__wmemset)
/* Now define the internal interfaces. */
extern int __wcscasecmp (const wchar_t *__s1, const wchar_t *__s2)

View File

@ -1112,7 +1112,7 @@ ___printf_fp (FILE *fp,
wstartp[1] = decimalwc;
if (wcp >= wstartp + 2)
{
wmemset (wstartp + 6, L'0', wcp - (wstartp + 2));
__wmemset (wstartp + 6, L'0', wcp - (wstartp + 2));
wcp += 4;
}
else

View File

@ -20,7 +20,7 @@
wchar_t *
wmemset (s, c, n)
__wmemset (s, c, n)
wchar_t *s;
wchar_t c;
size_t n;
@ -52,4 +52,6 @@ wmemset (s, c, n)
return s;
}
libc_hidden_def (wmemset)
libc_hidden_def (__wmemset)
weak_alias (__wmemset, wmemset)
libc_hidden_weak (wmemset)