Fix netdb.h addrinfo namespace (bug 18529).
authorJoseph Myers <joseph@codesourcery.com>
Fri, 12 Jun 2015 22:35:07 +0000 (22:35 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Fri, 12 Jun 2015 22:35:07 +0000 (22:35 +0000)
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
NEWS
conform/data/netdb.h-data
resolv/netdb.h

index fa596163b381663563098baf3d7e09fbf40321ce..a16069deeedb11468295d7ec0573b9d9190e085b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,37 @@
 2015-06-12  Joseph Myers  <joseph@codesourcery.com>
 
+       [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 75bddc113418b000a226ef98d828d3b94818ec19..592fa4583aad4b7844f6ff90209636368dfb856f 100644 (file)
--- 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.
index c5fd25756dd57caee6b7291e74106854b1a8b1be..63a42ae179d7a576fd3a4f7db2ce35236bc4fe63 100644 (file)
@@ -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)
index fe8f3ba1e560aa42c5589080d2add75028eec3f3..44cf6923b2e9d6fef70070d83c05a72785a1d7c6 100644 (file)
@@ -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
 {