aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux
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 /sysdeps/unix/sysv/linux
parent9635ce69626bfe41196bdef8efe4aba8d8a7b58f (diff)
downloadglibc-4587a421c54a8912b3e24913c7e1501293042b40.tar
glibc-4587a421c54a8912b3e24913c7e1501293042b40.tar.gz
glibc-4587a421c54a8912b3e24913c7e1501293042b40.tar.bz2
glibc-4587a421c54a8912b3e24913c7e1501293042b40.zip
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 'sysdeps/unix/sysv/linux')
-rw-r--r--sysdeps/unix/sysv/linux/i386/readdir64.c1
-rw-r--r--sysdeps/unix/sysv/linux/readdir64.c1
-rw-r--r--sysdeps/unix/sysv/linux/wordsize-64/readdir.c1
3 files changed, 3 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/readdir64.c b/sysdeps/unix/sysv/linux/i386/readdir64.c
index da3defd379..013bb252f4 100644
--- a/sysdeps/unix/sysv/linux/i386/readdir64.c
+++ b/sysdeps/unix/sysv/linux/i386/readdir64.c
@@ -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)
diff --git a/sysdeps/unix/sysv/linux/readdir64.c b/sysdeps/unix/sysv/linux/readdir64.c
index 224f53db88..6d154fe988 100644
--- a/sysdeps/unix/sysv/linux/readdir64.c
+++ b/sysdeps/unix/sysv/linux/readdir64.c
@@ -4,4 +4,5 @@
#include <sysdeps/posix/readdir.c>
+libc_hidden_def (__readdir64)
weak_alias (__readdir64, readdir64)
diff --git a/sysdeps/unix/sysv/linux/wordsize-64/readdir.c b/sysdeps/unix/sysv/linux/wordsize-64/readdir.c
index e197d93b00..0d5798849d 100644
--- a/sysdeps/unix/sysv/linux/wordsize-64/readdir.c
+++ b/sysdeps/unix/sysv/linux/wordsize-64/readdir.c
@@ -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)