This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH 42/58] Hide internal __ifreq function [BZ #18822]
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: libc-alpha at sourceware dot org
- Date: Fri, 1 Sep 2017 11:00:13 -0700
- Subject: [PATCH 42/58] Hide internal __ifreq function [BZ #18822]
- Authentication-results: sourceware.org; auth=none
- References: <20170901180029.9527-1-hjl.tools@gmail.com>
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.
---
include/ifreq.h | 14 ++++++++++++++
sysdeps/generic/ifreq.h | 12 ------------
sysdeps/mach/hurd/ifreq.h | 12 ------------
3 files changed, 14 insertions(+), 24 deletions(-)
create mode 100644 include/ifreq.h
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 <ifreq.h>
+
+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 <sys/socket.h>
#include <sys/ioctl.h>
-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 <sys/ioctl.h>
#include <sys/mman.h>
-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)
--
2.13.5