From: Joseph Myers Date: Fri, 12 Jun 2015 10:11:35 +0000 (+0000) Subject: Fix ecvt_r, fcvt_r namespace (bug 18522). X-Git-Tag: glibc-2.22~206 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=498c1f6a7c7f7b634d02e740f15789cf68820a54;p=thirdparty%2Fglibc.git 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. --- diff --git a/ChangeLog b/ChangeLog index 6ca1c205f03..d9629d9c3ad 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,15 @@ 2015-06-12 Joseph Myers + [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. diff --git a/NEWS b/NEWS index 9d1ce0d53fa..b4ec2629abb 100644 --- a/NEWS +++ b/NEWS @@ -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 c259d34cb45..09d18e2321d 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 ea62b6c1498..2761222d875 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);