mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 23:00:07 +00:00
Fix gethostbyaddr in6addr_any, in6addr_loopback namespace (bug 18532).
gethostbyaddr brings in references to in6addr_any and thereby in6addr_loopback, which aren't in all the standards containing gethostbyaddr (gethostbyaddr is in XPG4 and UNIX98, in6addr_any and in6addr_loopback are new in POSIX.1:2001). This patch fixes this by making those symbols into weak aliases (safe in this case, unlike for most data symbols, because these data symbols are const). Tested for x86_64 and x86 (testsuite, and comparison of disassembly of installed stripped shared libraries). Disassembly is unchanged for x86_64; for x86, I see some changes of stack offsets, but no other code generation changes or code size differences. [BZ #18532] * inet/in6_addr.c (in6addr_any): Rename to __in6addr_any and define as weak alias of __in6addr_any. Use libc_hidden_data_weak. (in6addr_loopback): Rename to __in6addr_loopback and define as weak alias of __in6addr_loopback. Use libc_hidden_data_weak. * include/netinet/in.h (__in6addr_loopback): Declare. Use libc_hidden_proto. (__in6addr_any): Likewise. * inet/gethstbyad_r.c (PREPROCESS): Use __in6addr_any instead of in6addr_any. * conform/Makefile (test-xfail-XPG4/netdb.h/linknamespace): Remove variable. (test-xfail-UNIX98/netdb.h/linknamespace): Likewise.
This commit is contained in:
parent
c10b9b13f7
commit
17c199ee92
16
ChangeLog
16
ChangeLog
@ -1,3 +1,19 @@
|
||||
2015-06-17 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #18532]
|
||||
* inet/in6_addr.c (in6addr_any): Rename to __in6addr_any and
|
||||
define as weak alias of __in6addr_any. Use libc_hidden_data_weak.
|
||||
(in6addr_loopback): Rename to __in6addr_loopback and define as
|
||||
weak alias of __in6addr_loopback. Use libc_hidden_data_weak.
|
||||
* include/netinet/in.h (__in6addr_loopback): Declare. Use
|
||||
libc_hidden_proto.
|
||||
(__in6addr_any): Likewise.
|
||||
* inet/gethstbyad_r.c (PREPROCESS): Use __in6addr_any instead of
|
||||
in6addr_any.
|
||||
* conform/Makefile (test-xfail-XPG4/netdb.h/linknamespace): Remove
|
||||
variable.
|
||||
(test-xfail-UNIX98/netdb.h/linknamespace): Likewise.
|
||||
|
||||
2015-06-17 Andrew Senkevich <andrew.senkevich@intel.com>
|
||||
|
||||
* bits/libm-simd-decl-stubs.h: Added stubs for pow.
|
||||
|
2
NEWS
2
NEWS
@ -21,7 +21,7 @@ Version 2.22
|
||||
18210, 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, 18512, 18519, 18520, 18522, 18527, 18528, 18529, 18530.
|
||||
18507, 18512, 18519, 18520, 18522, 18527, 18528, 18529, 18530, 18532.
|
||||
|
||||
* Cache information can be queried via sysconf() function on s390 e.g. with
|
||||
_SC_LEVEL1_ICACHE_SIZE as argument.
|
||||
|
@ -346,14 +346,12 @@ test-xfail-XOPEN2K8/ndbm.h/linknamespace = yes
|
||||
# Unsorted expected failures.
|
||||
test-xfail-XPG3/unistd.h/linknamespace = yes
|
||||
test-xfail-XPG4/fmtmsg.h/linknamespace = yes
|
||||
test-xfail-XPG4/netdb.h/linknamespace = yes
|
||||
test-xfail-XPG4/syslog.h/linknamespace = yes
|
||||
test-xfail-XPG4/unistd.h/linknamespace = yes
|
||||
test-xfail-POSIX/mqueue.h/linknamespace = yes
|
||||
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/syslog.h/linknamespace = yes
|
||||
test-xfail-UNIX98/unistd.h/linknamespace = yes
|
||||
test-xfail-UNIX98/wchar.h/linknamespace = yes
|
||||
|
@ -5,7 +5,11 @@
|
||||
#ifndef _ISOMAC
|
||||
libc_hidden_proto (bindresvport)
|
||||
libc_hidden_proto (in6addr_loopback)
|
||||
extern __typeof (in6addr_loopback) __in6addr_loopback;
|
||||
libc_hidden_proto (__in6addr_loopback)
|
||||
libc_hidden_proto (in6addr_any)
|
||||
extern __typeof (in6addr_any) __in6addr_any;
|
||||
libc_hidden_proto (__in6addr_any)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -32,7 +32,7 @@
|
||||
be performed. */
|
||||
#define PREPROCESS \
|
||||
if (len == sizeof (struct in6_addr) \
|
||||
&& __builtin_expect (memcmp (&in6addr_any, addr, \
|
||||
&& __builtin_expect (memcmp (&__in6addr_any, addr, \
|
||||
sizeof (struct in6_addr)), 1) == 0) \
|
||||
{ \
|
||||
*h_errnop = HOST_NOT_FOUND; \
|
||||
|
@ -18,9 +18,13 @@
|
||||
|
||||
#include <netinet/in.h>
|
||||
|
||||
const struct in6_addr in6addr_any =
|
||||
const struct in6_addr __in6addr_any =
|
||||
{ { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } };
|
||||
libc_hidden_data_def (in6addr_any)
|
||||
const struct in6_addr in6addr_loopback =
|
||||
libc_hidden_data_def (__in6addr_any)
|
||||
weak_alias (__in6addr_any, in6addr_any)
|
||||
libc_hidden_data_weak (in6addr_any)
|
||||
const struct in6_addr __in6addr_loopback =
|
||||
{ { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } };
|
||||
libc_hidden_data_def (in6addr_loopback)
|
||||
libc_hidden_data_def (__in6addr_loopback)
|
||||
weak_alias (__in6addr_loopback, in6addr_loopback)
|
||||
libc_hidden_data_weak (in6addr_loopback)
|
||||
|
Loading…
Reference in New Issue
Block a user