diff options
author | Joseph Myers <joseph@codesourcery.com> | 2014-12-02 23:11:09 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2014-12-02 23:11:09 +0000 |
commit | 7f994279e900954f2b220a02fa01f2042eef74b1 (patch) | |
tree | e81fcdd2acfa38ebe638f0232f9beead60c02d8d /sysdeps/gnu | |
parent | bbe4c142b024d639418069b480b0f3d05b489803 (diff) | |
download | glibc-7f994279e900954f2b220a02fa01f2042eef74b1.zip glibc-7f994279e900954f2b220a02fa01f2042eef74b1.tar.gz glibc-7f994279e900954f2b220a02fa01f2042eef74b1.tar.bz2 |
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.
Diffstat (limited to 'sysdeps/gnu')
-rw-r--r-- | sysdeps/gnu/ifaddrs.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/sysdeps/gnu/ifaddrs.c b/sysdeps/gnu/ifaddrs.c index 1b8775f..3607b2c 100644 --- a/sysdeps/gnu/ifaddrs.c +++ b/sysdeps/gnu/ifaddrs.c @@ -32,7 +32,7 @@ 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) { /* This implementation handles only IPv4 interfaces. The various ioctls below will only work on an AF_INET socket. @@ -150,13 +150,15 @@ getifaddrs (struct ifaddrs **ifap) return 0; } +weak_alias (__getifaddrs, getifaddrs) #ifndef getifaddrs -libc_hidden_def (getifaddrs) +libc_hidden_weak (getifaddrs) #endif void -freeifaddrs (struct ifaddrs *ifa) +__freeifaddrs (struct ifaddrs *ifa) { free (ifa); } -libc_hidden_def (freeifaddrs) +weak_alias (__freeifaddrs, freeifaddrs) +libc_hidden_weak (freeifaddrs) |