mirror of
git://sourceware.org/git/glibc.git
synced 2024-12-03 04:01:43 +08:00
7f994279e9
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.
48 lines
1.5 KiB
C
48 lines
1.5 KiB
C
/* getifaddrs -- get names and addresses of all network interfaces
|
|
Copyright (C) 2002-2014 Free Software Foundation, Inc.
|
|
This file is part of the GNU C Library.
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
The GNU C Library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with the GNU C Library; if not, see
|
|
<http://www.gnu.org/licenses/>. */
|
|
|
|
#include <ifaddrs.h>
|
|
#include <errno.h>
|
|
#include <stdlib.h>
|
|
|
|
/* Create a linked list of `struct ifaddrs' structures, one for each
|
|
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)
|
|
{
|
|
__set_errno (ENOSYS);
|
|
return -1;
|
|
}
|
|
weak_alias (__getifaddrs, getifaddrs)
|
|
libc_hidden_weak (getifaddrs)
|
|
stub_warning (getifaddrs)
|
|
|
|
void
|
|
__freeifaddrs (struct ifaddrs *ifa)
|
|
{
|
|
if (ifa == NULL)
|
|
return; /* a la free, why not? */
|
|
|
|
/* Can't be called properly if getifaddrs never succeeded. */
|
|
abort ();
|
|
}
|
|
weak_alias (__freeifaddrs, freeifaddrs)
|
|
libc_hidden_weak (freeifaddrs)
|
|
stub_warning (freeifaddrs)
|