From 8737be806407be51f046b358d8824c4c968912de Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Fri, 12 Jun 2015 22:35:07 +0000 Subject: Fix netdb.h addrinfo namespace (bug 18529). netdb.h declares interfaces such as getaddrinfo if __USE_POSIX, i.e. POSIX.1:1990 or later. However, these interfaces were new in the 2001 edition of POSIX, although the header was in XPG4 and UNIX98, so they should not be declared for XPG4 or UNIX98. (This produces spurious linknamespace test failures, although there are other failures for this header as well for the same standards so this patch doesn't remove any XFAILs.) This patch corrects the condition, and the conform/ test expectations which were similarly wrong. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). [BZ #18529] * resolv/netdb.h [__USE_POSIX]: Change condition to [__USE_XOPEN2K]. * conform/data/netdb.h-data [XPG4 || UNIX98] (struct addrinfo): Do not expect. [XPG4 || UNIX98] (AI_PASSIVE): Likewise. [XPG4 || UNIX98] (AI_CANONNAME): Likewise. [XPG4 || UNIX98] (AI_NUMERICHOST): Likewise. [XPG4 || UNIX98] (AI_V4MAPPED): Likewise. [XPG4 || UNIX98] (AI_ALL): Likewise. [XPG4 || UNIX98] (AI_ADDRCONFIG): Likewise. [XPG4 || UNIX98] (AI_NUMERICSERV): Likewise. [XPG4 || UNIX98] (NI_NOFQDN): Likewise. [XPG4 || UNIX98] (NI_NUMERICHOST): Likewise. [XPG4 || UNIX98] (NI_NAMEREQD): Likewise. [XPG4 || UNIX98] (NI_NUMERICSERV): Likewise. [XPG4 || UNIX98] (NI_DGRAM): Likewise. [XPG4 || UNIX98] (EAI_AGAIN): Likewise. [XPG4 || UNIX98] (EAI_BADFLAGS): Likewise. [XPG4 || UNIX98] (EAI_FAIL): Likewise. [XPG4 || UNIX98] (EAI_FAMILY): Likewise. [XPG4 || UNIX98] (EAI_MEMORY): Likewise. [XPG4 || UNIX98] (EAI_NONAME): Likewise. [XPG4 || UNIX98] (EAI_SERVICE): Likewise. [XPG4 || UNIX98] (EAI_SOCKTYPE): Likewise. [XPG4 || UNIX98] (EAI_SYSTEM): Likewise. [XPG4 || UNIX98] (EAI_SYSTEM): Likewise. [XPG4 || UNIX98] (freeaddrinfo): Likewise. [XPG4 || UNIX98] (gai_strerror): Likewise. [XPG4 || UNIX98] (getaddrinfo): Likewise. [XPG4 || UNIX98] (getnameinfo): Likewise. --- ChangeLog | 32 ++++++++++++++++++++++++++++++++ NEWS | 2 +- conform/data/netdb.h-data | 6 ++++++ resolv/netdb.h | 4 ++-- 4 files changed, 41 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index fa596163b3..a16069deee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,37 @@ 2015-06-12 Joseph Myers + [BZ #18529] + * resolv/netdb.h [__USE_POSIX]: Change condition to + [__USE_XOPEN2K]. + * conform/data/netdb.h-data [XPG4 || UNIX98] (struct addrinfo): Do + not expect. + [XPG4 || UNIX98] (AI_PASSIVE): Likewise. + [XPG4 || UNIX98] (AI_CANONNAME): Likewise. + [XPG4 || UNIX98] (AI_NUMERICHOST): Likewise. + [XPG4 || UNIX98] (AI_V4MAPPED): Likewise. + [XPG4 || UNIX98] (AI_ALL): Likewise. + [XPG4 || UNIX98] (AI_ADDRCONFIG): Likewise. + [XPG4 || UNIX98] (AI_NUMERICSERV): Likewise. + [XPG4 || UNIX98] (NI_NOFQDN): Likewise. + [XPG4 || UNIX98] (NI_NUMERICHOST): Likewise. + [XPG4 || UNIX98] (NI_NAMEREQD): Likewise. + [XPG4 || UNIX98] (NI_NUMERICSERV): Likewise. + [XPG4 || UNIX98] (NI_DGRAM): Likewise. + [XPG4 || UNIX98] (EAI_AGAIN): Likewise. + [XPG4 || UNIX98] (EAI_BADFLAGS): Likewise. + [XPG4 || UNIX98] (EAI_FAIL): Likewise. + [XPG4 || UNIX98] (EAI_FAMILY): Likewise. + [XPG4 || UNIX98] (EAI_MEMORY): Likewise. + [XPG4 || UNIX98] (EAI_NONAME): Likewise. + [XPG4 || UNIX98] (EAI_SERVICE): Likewise. + [XPG4 || UNIX98] (EAI_SOCKTYPE): Likewise. + [XPG4 || UNIX98] (EAI_SYSTEM): Likewise. + [XPG4 || UNIX98] (EAI_SYSTEM): Likewise. + [XPG4 || UNIX98] (freeaddrinfo): Likewise. + [XPG4 || UNIX98] (gai_strerror): Likewise. + [XPG4 || UNIX98] (getaddrinfo): Likewise. + [XPG4 || UNIX98] (getnameinfo): Likewise. + [BZ #18528] * grp/grp.h (endgrent): Condition on [__USE_MISC || __USE_XOPEN_EXTENDED], not [__USE_XOPEN_EXTENDED || diff --git a/NEWS b/NEWS index 75bddc1134..592fa4583a 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, - 18512, 18519, 18520, 18522, 18527, 18528. + 18512, 18519, 18520, 18522, 18527, 18528, 18529. * Cache information can be queried via sysconf() function on s390 e.g. with _SC_LEVEL1_ICACHE_SIZE as argument. diff --git a/conform/data/netdb.h-data b/conform/data/netdb.h-data index c5fd25756d..63a42ae179 100644 --- a/conform/data/netdb.h-data +++ b/conform/data/netdb.h-data @@ -44,6 +44,7 @@ macro NO_RECOVERY macro TRY_AGAIN #endif +#if !defined XPG4 && !defined UNIX98 type {struct addrinfo} element {struct addrinfo} int ai_flags element {struct addrinfo} int ai_family @@ -78,18 +79,23 @@ macro EAI_SERVICE macro EAI_SOCKTYPE macro EAI_SYSTEM macro EAI_OVERFLOW +#endif function void endhostent (void) function void endnetent (void) function void endprotoent (void) function void endservent (void) +#if !defined XPG4 && !defined UNIX98 function void freeaddrinfo (struct addrinfo*) function {const char*} gai_strerror (int) function int getaddrinfo (const char*, const char*, const struct addrinfo*, struct addrinfo**) +#endif function {struct hostent*} gethostbyaddr (const void*, socklen_t, int) function {struct hostent*} gethostbyname (const char*) function {struct hostent*} gethostent (void) +#if !defined XPG4 && !defined UNIX98 function int getnameinfo (const struct sockaddr*, socklen_t, char*, socklen_t, char*, socklen_t, int) +#endif function {struct netent*} getnetbyaddr (uint32_t, int) function {struct netent*} getnetbyname (const char*) function {struct netent*} getnetent (void) diff --git a/resolv/netdb.h b/resolv/netdb.h index fe8f3ba1e5..44cf6923b2 100644 --- a/resolv/netdb.h +++ b/resolv/netdb.h @@ -561,8 +561,8 @@ extern int rresvport_af (int *__alport, sa_family_t __af); #endif -/* Extension from POSIX.1g. */ -#ifdef __USE_POSIX +/* Extension from POSIX.1:2001. */ +#ifdef __USE_XOPEN2K /* Structure to contain information about address of a service provider. */ struct addrinfo { -- cgit 1.4.1