summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2014-11-12 22:38:11 +0000
committerJoseph Myers <joseph@codesourcery.com>2014-11-12 22:38:11 +0000
commit01cad84e1996a6f20bf19609d0554c73f2ee33d5 (patch)
tree9df6577ba1ae2a6a464ffca150e7cd351d22d722
parent939da41143341bbcdd3dd50ee7b57776603da260 (diff)
downloadglibc-01cad84e1996a6f20bf19609d0554c73f2ee33d5.tar.gz
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.
-rw-r--r--ChangeLog8
-rw-r--r--NEWS2
-rw-r--r--include/wchar.h2
-rw-r--r--stdio-common/printf_fp.c2
-rw-r--r--wcsmbs/wmemset.c6
5 files changed, 16 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index f33d5828f0..56fff4c9fa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/NEWS b/NEWS
index befd5e59c7..222696d392 100644
--- a/NEWS
+++ b/NEWS
@@ -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.
diff --git a/include/wchar.h b/include/wchar.h
index f927a95fdf..8207a53282 100644
--- a/include/wchar.h
+++ b/include/wchar.h
@@ -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)
diff --git a/stdio-common/printf_fp.c b/stdio-common/printf_fp.c
index c8061cbb90..406180cd6e 100644
--- a/stdio-common/printf_fp.c
+++ b/stdio-common/printf_fp.c
@@ -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
diff --git a/wcsmbs/wmemset.c b/wcsmbs/wmemset.c
index c49954531e..a80b815483 100644
--- a/wcsmbs/wmemset.c
+++ b/wcsmbs/wmemset.c
@@ -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)