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:
@ -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)
|
||||
|
Reference in New Issue
Block a user