This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Fix netdb.h addrinfo namespace (bug 18529)
- From: Joseph Myers <joseph at codesourcery dot com>
- To: <libc-alpha at sourceware dot org>
- Date: Fri, 12 Jun 2015 21:48:26 +0000
- Subject: Fix netdb.h addrinfo namespace (bug 18529)
- Authentication-results: sourceware.org; auth=none
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).
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.
diff --git a/conform/data/netdb.h-data b/conform/data/netdb.h-data
index c5fd257..63a42ae 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 fe8f3ba..6ff11a1 100644
--- a/resolv/netdb.h
+++ b/resolv/netdb.h
@@ -562,7 +562,7 @@ extern int rresvport_af (int *__alport, sa_family_t __af);
/* Extension from POSIX.1g. */
-#ifdef __USE_POSIX
+#ifdef __USE_XOPEN2K
/* Structure to contain information about address of a service provider. */
struct addrinfo
{
--
Joseph S. Myers
joseph@codesourcery.com