summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2017-10-01 15:50:56 -0700
committerH.J. Lu <hjl.tools@gmail.com>2017-10-01 15:51:11 -0700
commit4587a421c54a8912b3e24913c7e1501293042b40 (patch)
tree21ff4ebe25d895d5c55ebbc59a33d0f1603b7e2a /include
parent9635ce69626bfe41196bdef8efe4aba8d8a7b58f (diff)
Mark internal dirent functions with attribute_hidden [BZ #18822]
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.
Diffstat (limited to 'include')
-rw-r--r--include/dirent.h13
1 files changed, 5 insertions, 8 deletions
diff --git a/include/dirent.h b/include/dirent.h
index d7dbf83964..6fcc2f391b 100644
--- a/include/dirent.h
+++ b/include/dirent.h
@@ -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