mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
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:
@ -1,5 +1,13 @@
|
|||||||
2014-11-12 Joseph Myers <joseph@codesourcery.com>
|
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]
|
[BZ #17573]
|
||||||
* include/string.h [NOT_IN_libc || !SHARED] (mempcpy): Declare
|
* include/string.h [NOT_IN_libc || !SHARED] (mempcpy): Declare
|
||||||
with asm name __mempcpy.
|
with asm name __mempcpy.
|
||||||
|
2
NEWS
2
NEWS
@ -11,7 +11,7 @@ Version 2.21
|
|||||||
|
|
||||||
6652, 12926, 14132, 14138, 14171, 15215, 15884, 17266, 17344, 17363,
|
6652, 12926, 14132, 14138, 14171, 15215, 15884, 17266, 17344, 17363,
|
||||||
17370, 17371, 17411, 17460, 17475, 17485, 17501, 17506, 17508, 17522,
|
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.
|
* New locales: tu_IN, bh_IN.
|
||||||
|
|
||||||
|
@ -88,8 +88,10 @@ libc_hidden_proto (wcschr)
|
|||||||
libc_hidden_proto (wcscoll)
|
libc_hidden_proto (wcscoll)
|
||||||
libc_hidden_proto (wcspbrk)
|
libc_hidden_proto (wcspbrk)
|
||||||
|
|
||||||
|
extern typeof (wmemset) __wmemset;
|
||||||
libc_hidden_proto (wmemchr)
|
libc_hidden_proto (wmemchr)
|
||||||
libc_hidden_proto (wmemset)
|
libc_hidden_proto (wmemset)
|
||||||
|
libc_hidden_proto (__wmemset)
|
||||||
|
|
||||||
/* Now define the internal interfaces. */
|
/* 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)
|
||||||
|
@ -1112,7 +1112,7 @@ ___printf_fp (FILE *fp,
|
|||||||
wstartp[1] = decimalwc;
|
wstartp[1] = decimalwc;
|
||||||
if (wcp >= wstartp + 2)
|
if (wcp >= wstartp + 2)
|
||||||
{
|
{
|
||||||
wmemset (wstartp + 6, L'0', wcp - (wstartp + 2));
|
__wmemset (wstartp + 6, L'0', wcp - (wstartp + 2));
|
||||||
wcp += 4;
|
wcp += 4;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
|
|
||||||
wchar_t *
|
wchar_t *
|
||||||
wmemset (s, c, n)
|
__wmemset (s, c, n)
|
||||||
wchar_t *s;
|
wchar_t *s;
|
||||||
wchar_t c;
|
wchar_t c;
|
||||||
size_t n;
|
size_t n;
|
||||||
@ -52,4 +52,6 @@ wmemset (s, c, n)
|
|||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
libc_hidden_def (wmemset)
|
libc_hidden_def (__wmemset)
|
||||||
|
weak_alias (__wmemset, wmemset)
|
||||||
|
libc_hidden_weak (wmemset)
|
||||||
|
Reference in New Issue
Block a user