]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Mark internal dirent functions with attribute_hidden [BZ #18822]
authorH.J. Lu <hjl.tools@gmail.com>
Sun, 1 Oct 2017 22:50:56 +0000 (15:50 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Sun, 1 Oct 2017 22:51:11 +0000 (15:51 -0700)
Mark internal dirent functions with attribute_hidden to allow direct
access within libc.so and libc.a without using GOT nor PLT.  __readdir64
is hidden with libc_hidden_proto and libc_hidden_def since the exported
readdir64 is an alias of __readdir64.

[BZ #18822]
* include/dirent.h (__opendir): Always add attribute_hidden.
(__fdopendir): Likewise.
(__closedir): Likewise.
(__readdir): Likewise.
(__readdir64): Add libc_hidden_proto.
* sysdeps/mach/hurd/readdir64.c (__readdir64): Add libc_hidden_def.
* sysdeps/unix/sysv/linux/i386/readdir64.c (__readdir64): Likewise.
* sysdeps/unix/sysv/linux/readdir64.c (__readdir64): Likewise.
* sysdeps/unix/sysv/linux/wordsize-64/readdir.c (__GI___readdir64):
New alias.

ChangeLog
include/dirent.h
sysdeps/mach/hurd/readdir64.c
sysdeps/unix/sysv/linux/i386/readdir64.c
sysdeps/unix/sysv/linux/readdir64.c
sysdeps/unix/sysv/linux/wordsize-64/readdir.c

index 98d572b8da003039e468102be96fc48f348c9f20..628b11452f9e110ab0e495ec73133312632e6a50 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2017-10-01  H.J. Lu  <hongjiu.lu@intel.com>
+
+       [BZ #18822]
+       * include/dirent.h (__opendir): Always add attribute_hidden.
+       (__fdopendir): Likewise.
+       (__closedir): Likewise.
+       (__readdir): Likewise.
+       (__readdir64): Add libc_hidden_proto.
+       * sysdeps/mach/hurd/readdir64.c (__readdir64): Add libc_hidden_def.
+       * sysdeps/unix/sysv/linux/i386/readdir64.c (__readdir64): Likewise.
+       * sysdeps/unix/sysv/linux/readdir64.c (__readdir64): Likewise.
+       * sysdeps/unix/sysv/linux/wordsize-64/readdir.c (__GI___readdir64):
+       New alias.
+
 2017-10-01  H.J. Lu  <hongjiu.lu@intel.com>
 
        [BZ #18822]
index d7dbf8396476c163a7ae3860fb9e2f3e14650cc0..6fcc2f391ba4ae8e60cf46ad552acbf7af73589c 100644 (file)
@@ -15,12 +15,13 @@ struct scandir_cancel_struct
 };
 
 /* Now define the internal interfaces.  */
-extern DIR *__opendir (const char *__name);
+extern DIR *__opendir (const char *__name) attribute_hidden;
 extern DIR *__opendirat (int dfd, const char *__name) attribute_hidden;
-extern DIR *__fdopendir (int __fd);
-extern int __closedir (DIR *__dirp);
-extern struct dirent *__readdir (DIR *__dirp);
+extern DIR *__fdopendir (int __fd) attribute_hidden;
+extern int __closedir (DIR *__dirp) attribute_hidden;
+extern struct dirent *__readdir (DIR *__dirp) attribute_hidden;
 extern struct dirent64 *__readdir64 (DIR *__dirp);
+libc_hidden_proto (__readdir64)
 extern int __readdir_r (DIR *__dirp, struct dirent *__entry,
                        struct dirent **__result);
 extern int __readdir64_r (DIR *__dirp, struct dirent64 *__entry,
@@ -77,10 +78,6 @@ libc_hidden_proto (__scandirat)
 libc_hidden_proto (scandirat64)
 
 #  if IS_IN (rtld)
-extern __typeof (__closedir) __closedir attribute_hidden;
-extern __typeof (__fdopendir) __fdopendir attribute_hidden;
-extern __typeof (__readdir) __readdir attribute_hidden;
-extern __typeof (__readdir64) __readdir64 attribute_hidden;
 extern __typeof (__rewinddir) __rewinddir attribute_hidden;
 #  endif
 # endif
index f422fcff04634d85ac46b35be5f634077ddbf5d8..bad0bcb559538ad7fa4802646d00e4fc03e57109 100644 (file)
@@ -98,4 +98,5 @@ __readdir64 (DIR *dirp)
   return dp;
 }
 
+libc_hidden_def (__readdir64)
 weak_alias (__readdir64, readdir64)
index da3defd37913df9e84c618da48162b85606f2c58..013bb252f45e63c6870b5c901e8d4407a072394d 100644 (file)
@@ -27,6 +27,7 @@
 #undef __GETDENTS
 #undef DIRENT_TYPE
 
+libc_hidden_def (__readdir64)
 versioned_symbol (libc, __readdir64, readdir64, GLIBC_2_2);
 
 #if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
index 224f53db88871d382a9e33ef9d309b7d43880a45..6d154fe988ce3a13a7de08c4cf8892c15eef203a 100644 (file)
@@ -4,4 +4,5 @@
 
 #include <sysdeps/posix/readdir.c>
 
+libc_hidden_def (__readdir64)
 weak_alias (__readdir64, readdir64)
index e197d93b00ef016515591e37bb9ad92b48f9714e..0d5798849dd4d7f52655dc5e704567d2d2da13aa 100644 (file)
@@ -3,5 +3,6 @@
 #include <sysdeps/posix/readdir.c>
 #undef __readdir64
 strong_alias (__readdir, __readdir64)
+strong_alias (__readdir, __GI___readdir64)
 #undef readdir64
 weak_alias (__readdir, readdir64)