diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2017-10-01 15:50:56 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2017-10-01 15:51:11 -0700 |
commit | 4587a421c54a8912b3e24913c7e1501293042b40 (patch) | |
tree | 21ff4ebe25d895d5c55ebbc59a33d0f1603b7e2a /include | |
parent | 9635ce69626bfe41196bdef8efe4aba8d8a7b58f (diff) | |
download | glibc-4587a421c54a8912b3e24913c7e1501293042b40.zip glibc-4587a421c54a8912b3e24913c7e1501293042b40.tar.gz glibc-4587a421c54a8912b3e24913c7e1501293042b40.tar.bz2 |
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.h | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/include/dirent.h b/include/dirent.h index d7dbf83..6fcc2f3 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 |