From b4744101f36021bf2dde713682abbd0cc6935168 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Sun, 1 Oct 2017 17:35:26 -0700 Subject: [PATCH] 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. --- ChangeLog | 9 +++++++++ include/ifreq.h | 14 ++++++++++++++ sysdeps/generic/ifreq.h | 12 ------------ sysdeps/mach/hurd/ifreq.h | 12 ------------ 4 files changed, 23 insertions(+), 24 deletions(-) create mode 100644 include/ifreq.h diff --git a/ChangeLog b/ChangeLog index ad10a7a135..7514e861dd 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 0000000000..94e984c73c --- /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 6ebd7c83f3..b39739debb 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 eceeb7a2c3..3dd17f773d 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)