diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-06-12 10:11:35 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-06-12 10:11:35 +0000 |
commit | 498c1f6a7c7f7b634d02e740f15789cf68820a54 (patch) | |
tree | c102c3ffb7bb2f3187c788ce16c1e2ab910734e1 | |
parent | 9acacaa02f3b75fddc07a56f3d848df45281a5de (diff) | |
download | glibc-498c1f6a7c7f7b634d02e740f15789cf68820a54.tar glibc-498c1f6a7c7f7b634d02e740f15789cf68820a54.tar.gz glibc-498c1f6a7c7f7b634d02e740f15789cf68820a54.tar.bz2 glibc-498c1f6a7c7f7b634d02e740f15789cf68820a54.zip |
Fix ecvt_r, fcvt_r namespace (bug 18522).
The functions ecvt, fcvt and gcvt, in some standards, bring in
references to ecvt_r and fcvt_r, which aren't in any of those
standards. The calls are correctly to __ecvt_r and __fcvt_r, but then
the names ecvt_r and fcvt_r are defined as strong aliases; this patch
changes them to weak aliases.
Tested for x86_64 and x86 (testsuite, and that disassembly of
installed stripped shared libraries is unchanged by the patch).
[BZ #18522]
* misc/efgcvt_r.c
[LONG_DOUBLE_COMPAT (libc, GLIBC_2_0) && !LONG_DOUBLE_CVT]
(cvt_symbol): Use weak_alias instead of strong_alias.
[LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)] (cvt_symbol): Likewise.
* conform/Makefile (test-xfail-XPG4/stdlib.h/linknamespace):
Remove variable.
(test-xfail-UNIX98/stdlib.h/linknamespace): Likewise.
(test-xfail-XOPEN2K/stdlib.h/linknamespace): Likewise.
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | conform/Makefile | 3 | ||||
-rw-r--r-- | misc/efgcvt_r.c | 4 |
4 files changed, 13 insertions, 6 deletions
@@ -1,5 +1,15 @@ 2015-06-12 Joseph Myers <joseph@codesourcery.com> + [BZ #18522] + * misc/efgcvt_r.c + [LONG_DOUBLE_COMPAT (libc, GLIBC_2_0) && !LONG_DOUBLE_CVT] + (cvt_symbol): Use weak_alias instead of strong_alias. + [LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)] (cvt_symbol): Likewise. + * conform/Makefile (test-xfail-XPG4/stdlib.h/linknamespace): + Remove variable. + (test-xfail-UNIX98/stdlib.h/linknamespace): Likewise. + (test-xfail-XOPEN2K/stdlib.h/linknamespace): Likewise. + [BZ #18520] * inet/herrno.c (h_errno): Rename to __h_errno. (__libc_h_errno): Define as alias of __h_errno not h_errno. @@ -21,7 +21,7 @@ Version 2.22 18211, 18217, 18220, 18221, 18234, 18244, 18247, 18287, 18319, 18324, 18333, 18346, 18397, 18409, 18410, 18412, 18418, 18422, 18434, 18444, 18468, 18469, 18470, 18479, 18483, 18495, 18496, 18497, 18498, 18507, - 18520. + 18520, 18522. * Cache information can be queried via sysconf() function on s390 e.g. with _SC_LEVEL1_ICACHE_SIZE as argument. diff --git a/conform/Makefile b/conform/Makefile index c259d34cb4..09d18e2321 100644 --- a/conform/Makefile +++ b/conform/Makefile @@ -351,7 +351,6 @@ test-xfail-XPG3/wordexp.h/linknamespace = yes test-xfail-XPG4/fmtmsg.h/linknamespace = yes test-xfail-XPG4/glob.h/linknamespace = yes test-xfail-XPG4/netdb.h/linknamespace = yes -test-xfail-XPG4/stdlib.h/linknamespace = yes test-xfail-XPG4/syslog.h/linknamespace = yes test-xfail-XPG4/unistd.h/linknamespace = yes test-xfail-XPG4/wordexp.h/linknamespace = yes @@ -361,13 +360,11 @@ test-xfail-POSIX/semaphore.h/linknamespace = yes test-xfail-UNIX98/fmtmsg.h/linknamespace = yes test-xfail-UNIX98/mqueue.h/linknamespace = yes test-xfail-UNIX98/netdb.h/linknamespace = yes -test-xfail-UNIX98/stdlib.h/linknamespace = yes test-xfail-UNIX98/syslog.h/linknamespace = yes test-xfail-UNIX98/unistd.h/linknamespace = yes test-xfail-UNIX98/wchar.h/linknamespace = yes test-xfail-XOPEN2K/fmtmsg.h/linknamespace = yes test-xfail-XOPEN2K/netdb.h/linknamespace = yes -test-xfail-XOPEN2K/stdlib.h/linknamespace = yes test-xfail-XOPEN2K/syslog.h/linknamespace = yes test-xfail-POSIX2008/grp.h/linknamespace = yes test-xfail-POSIX2008/netdb.h/linknamespace = yes diff --git a/misc/efgcvt_r.c b/misc/efgcvt_r.c index ea62b6c149..2761222d87 100644 --- a/misc/efgcvt_r.c +++ b/misc/efgcvt_r.c @@ -251,13 +251,13 @@ __APPEND (FUNC_PREFIX, ecvt_r) (value, ndigit, decpt, sign, buf, len) # define cvt_symbol(symbol) \ cvt_symbol_1 (libc, __APPEND (FUNC_PREFIX, symbol), \ APPEND (q, symbol), GLIBC_2_0); \ - strong_alias (__APPEND (FUNC_PREFIX, symbol), APPEND (FUNC_PREFIX, symbol)) + weak_alias (__APPEND (FUNC_PREFIX, symbol), APPEND (FUNC_PREFIX, symbol)) # define cvt_symbol_1(lib, local, symbol, version) \ compat_symbol (lib, local, symbol, version) # endif #else # define cvt_symbol(symbol) \ - strong_alias (__APPEND (FUNC_PREFIX, symbol), APPEND (FUNC_PREFIX, symbol)) + weak_alias (__APPEND (FUNC_PREFIX, symbol), APPEND (FUNC_PREFIX, symbol)) #endif cvt_symbol(fcvt_r); cvt_symbol(ecvt_r); |