From: H.J. Lu Date: Mon, 2 Oct 2017 00:35:26 +0000 (-0700) Subject: Hide internal __ifreq function [BZ #18822] X-Git-Tag: glibc-2.27~789 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b4744101f36021bf2dde713682abbd0cc6935168;p=thirdparty%2Fglibc.git Hide internal __ifreq function [BZ #18822] Hide internal __ifreq function to allow direct access within libc.so and libc.a without using GOT nor PLT. [BZ #18822] * include/ifreq.h: New file. * sysdeps/generic/ifreq.h (__if_nextreq): Removed. (__ifreq): Likewise. * sysdeps/mach/hurd/ifreq.h (__if_nextreq): Removed. (__ifreq): Likewise. --- diff --git a/ChangeLog b/ChangeLog index ad10a7a1350..7514e861dde 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2017-10-01 H.J. Lu + + [BZ #18822] + * include/ifreq.h: New file. + * sysdeps/generic/ifreq.h (__if_nextreq): Removed. + (__ifreq): Likewise. + * sysdeps/mach/hurd/ifreq.h (__if_nextreq): Removed. + (__ifreq): Likewise. + 2017-10-01 H.J. Lu [BZ #18822] diff --git a/include/ifreq.h b/include/ifreq.h new file mode 100644 index 00000000000..94e984c73c6 --- /dev/null +++ b/include/ifreq.h @@ -0,0 +1,14 @@ +#include_next + +static inline struct ifreq * +__if_nextreq (struct ifreq *ifr) +{ +#ifdef _HAVE_SA_LEN + if (ifr->ifr_addr.sa_len > sizeof ifr->ifr_addr) + return (struct ifreq *) ((char *) &ifr->ifr_addr + ifr->ifr_addr.sa_len); +#endif + return ifr + 1; +} + +extern void __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd) + attribute_hidden; diff --git a/sysdeps/generic/ifreq.h b/sysdeps/generic/ifreq.h index 6ebd7c83f36..b39739debb4 100644 --- a/sysdeps/generic/ifreq.h +++ b/sysdeps/generic/ifreq.h @@ -23,18 +23,6 @@ #include #include -static inline struct ifreq * -__if_nextreq (struct ifreq *ifr) -{ -#ifdef _HAVE_SA_LEN - if (ifr->ifr_addr.sa_len > sizeof ifr->ifr_addr) - return (struct ifreq *) ((char *) &ifr->ifr_addr + ifr->ifr_addr.sa_len); -#endif - return ifr + 1; -} - -extern void __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd); - static inline void __if_freereq (struct ifreq *ifreqs, int num_ifs) diff --git a/sysdeps/mach/hurd/ifreq.h b/sysdeps/mach/hurd/ifreq.h index eceeb7a2c32..3dd17f773d2 100644 --- a/sysdeps/mach/hurd/ifreq.h +++ b/sysdeps/mach/hurd/ifreq.h @@ -24,18 +24,6 @@ #include #include -static inline struct ifreq * -__if_nextreq (struct ifreq *ifr) -{ -#ifdef _HAVE_SA_LEN - if (ifr->ifr_addr.sa_len > sizeof ifr->ifr_addr) - return (struct ifreq *) ((char *) &ifr->ifr_addr + ifr->ifr_addr.sa_len); -#endif - return ifr + 1; -} - -extern void __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd); - static inline void __if_freereq (struct ifreq *ifreqs, int num_ifs)