1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

Fix getifaddrs, freeifaddrs namespace (bug 17668).

Various objects in glibc bring in ifaddrs.o (via references to
__netlink_*) and thereby getifaddrs and freeifaddrs, which are not
part of any standard supported by glibc.  These should be weak aliases
of __getifaddrs and __freeifaddrs; this patch makes them so.

(The path by which these functions are brought in is Linux-specific,
but it seems less confusing to make all versions of these functions
weak aliases rather than only the Linux-specific versions that
definitely need it.)

Tested for x86_64 (testsuite, and that disassembly of installed shared
libraries is unchanged by this patch).

	[BZ #17668]
	* inet/ifaddrs.c (getifaddrs): Rename to __getifaddrs and define
	as weak alias of __getifaddrs.  Use libc_hidden_weak.
	(freeifaddrs): Rename to __freeifaddrs and define as weak alias of
	__freeifaddrs.  Use libc_hidden_weak.
	* sysdeps/gnu/ifaddrs.c (getifaddrs): Rename to __getifaddrs and
	define as weak alias of __getifaddrs.  Use libc_hidden_weak.
	(freeifaddrs): Rename to __freeifaddrs and define as weak alias of
	__freeifaddrs.  Use libc_hidden_weak.
	* sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Rename to
	__getifaddrs and define as weak alias of __getifaddrs.  Use
	libc_hidden_weak.
	(freeifaddrs): Rename to __freeifaddrs and define as weak alias of
	__freeifaddrs.  Use libc_hidden_weak.
	* conform/Makefile (test-xfail-XOPEN2K/net/if.h/linknamespace):
	Remove variable.
	(test-xfail-POSIX2008/net/if.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/net/if.h/linknamespace): Likewise.
This commit is contained in:
Joseph Myers
2014-12-02 23:11:09 +00:00
parent bbe4c142b0
commit 7f994279e9
6 changed files with 40 additions and 16 deletions

View File

@ -819,7 +819,7 @@ getifaddrs_internal (struct ifaddrs **ifap)
network interface on the host machine. If successful, store the
list in *IFAP and return 0. On errors, return -1 and set `errno'. */
int
getifaddrs (struct ifaddrs **ifap)
__getifaddrs (struct ifaddrs **ifap)
{
int res;
@ -829,12 +829,14 @@ getifaddrs (struct ifaddrs **ifap)
return res;
}
libc_hidden_def (getifaddrs)
weak_alias (__getifaddrs, getifaddrs)
libc_hidden_weak (getifaddrs)
void
freeifaddrs (struct ifaddrs *ifa)
__freeifaddrs (struct ifaddrs *ifa)
{
free (ifa);
}
libc_hidden_def (freeifaddrs)
weak_alias (__freeifaddrs, freeifaddrs)
libc_hidden_weak (freeifaddrs)