diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2017-09-04 13:38:36 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2017-09-04 13:38:51 -0700 |
commit | 0a587a8a98ca32c98e6b00f557e6af6c8eedc602 (patch) | |
tree | e59c30b9b79ba979be469c5ce74450204c0ef0b3 | |
parent | 1650e19265e577d2b9e90929cf47895985f32b87 (diff) | |
download | glibc-0a587a8a98ca32c98e6b00f557e6af6c8eedc602.tar.gz glibc-0a587a8a98ca32c98e6b00f557e6af6c8eedc602.tar.xz glibc-0a587a8a98ca32c98e6b00f557e6af6c8eedc602.zip |
Hide __chmod and __mkdir [BZ #18822]
Hide internal __chmod and __mkdir functions to allow direct access within libc.so and libc.a without using GOT nor PLT. [BZ #18822] * include/sys/stat.h (__chmod): Add libc_hidden_proto. (__mkdir): Likewise. * io/chmod.c (__chmod): Add libc_hidden_def. * io/mkdir.c (__mkdir): Likewise. * sysdeps/mach/hurd/chmod.c (__chmod): Likewise. * sysdeps/mach/hurd/mkdir.c (__mkdir): Likewise. * sysdeps/unix/sysv/linux/generic/chmod.c (__chmod): Likewise. * sysdeps/unix/sysv/linux/generic/mkdir.c (__mkdir): Likewise.
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | include/sys/stat.h | 2 | ||||
-rw-r--r-- | io/chmod.c | 1 | ||||
-rw-r--r-- | io/mkdir.c | 1 | ||||
-rw-r--r-- | sysdeps/mach/hurd/chmod.c | 1 | ||||
-rw-r--r-- | sysdeps/mach/hurd/mkdir.c | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/generic/chmod.c | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/generic/mkdir.c | 2 |
8 files changed, 22 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index c4e175abc6..ead6d79223 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2017-09-04 H.J. Lu <hongjiu.lu@intel.com> + + [BZ #18822] + * include/sys/stat.h (__chmod): Add libc_hidden_proto. + (__mkdir): Likewise. + * io/chmod.c (__chmod): Add libc_hidden_def. + * io/mkdir.c (__mkdir): Likewise. + * sysdeps/mach/hurd/chmod.c (__chmod): Likewise. + * sysdeps/mach/hurd/mkdir.c (__mkdir): Likewise. + * sysdeps/unix/sysv/linux/generic/chmod.c (__chmod): Likewise. + * sysdeps/unix/sysv/linux/generic/mkdir.c (__mkdir): Likewise. + 2017-09-04 Joseph Myers <joseph@codesourcery.com> * sysdeps/unix/sysv/linux/syscall-names.list: Update kernel diff --git a/include/sys/stat.h b/include/sys/stat.h index 4f31c00eca..eb44754185 100644 --- a/include/sys/stat.h +++ b/include/sys/stat.h @@ -7,9 +7,11 @@ extern int __stat (const char *__file, struct stat *__buf); extern int __fstat (int __fd, struct stat *__buf); extern int __lstat (const char *__file, struct stat *__buf); extern int __chmod (const char *__file, __mode_t __mode); +libc_hidden_proto (__chmod) extern int __fchmod (int __fd, __mode_t __mode); extern __mode_t __umask (__mode_t __mask); extern int __mkdir (const char *__path, __mode_t __mode); +libc_hidden_proto (__mkdir) extern int __mknod (const char *__path, __mode_t __mode, __dev_t __dev); #if IS_IN (libc) || IS_IN (rtld) diff --git a/io/chmod.c b/io/chmod.c index 0b85565ec2..3cacbf612f 100644 --- a/io/chmod.c +++ b/io/chmod.c @@ -35,4 +35,5 @@ __chmod (const char *file, mode_t mode) } stub_warning (chmod) +libc_hidden_def (__chmod) weak_alias (__chmod, chmod) diff --git a/io/mkdir.c b/io/mkdir.c index 0b8499a707..43a790de33 100644 --- a/io/mkdir.c +++ b/io/mkdir.c @@ -36,4 +36,5 @@ __mkdir (const char *path, mode_t mode) } stub_warning (mkdir) +libc_hidden_def (__mkdir) weak_alias (__mkdir, mkdir) diff --git a/sysdeps/mach/hurd/chmod.c b/sysdeps/mach/hurd/chmod.c index 943f9855d4..612e62d0b2 100644 --- a/sysdeps/mach/hurd/chmod.c +++ b/sysdeps/mach/hurd/chmod.c @@ -35,4 +35,5 @@ __chmod (const char *file, mode_t mode) return 0; } +libc_hidden_def (__chmod) weak_alias (__chmod, chmod) diff --git a/sysdeps/mach/hurd/mkdir.c b/sysdeps/mach/hurd/mkdir.c index 58c2ac4291..1efac949f6 100644 --- a/sysdeps/mach/hurd/mkdir.c +++ b/sysdeps/mach/hurd/mkdir.c @@ -40,4 +40,5 @@ __mkdir (const char *file_name, mode_t mode) return 0; } +libc_hidden_def (__mkdir) weak_alias (__mkdir, mkdir) diff --git a/sysdeps/unix/sysv/linux/generic/chmod.c b/sysdeps/unix/sysv/linux/generic/chmod.c index 41d6d9851f..551c67cd07 100644 --- a/sysdeps/unix/sysv/linux/generic/chmod.c +++ b/sysdeps/unix/sysv/linux/generic/chmod.c @@ -28,4 +28,6 @@ __chmod (const char *file, mode_t mode) { return INLINE_SYSCALL (fchmodat, 3, AT_FDCWD, file, mode); } + +libc_hidden_def (__chmod) weak_alias (__chmod, chmod) diff --git a/sysdeps/unix/sysv/linux/generic/mkdir.c b/sysdeps/unix/sysv/linux/generic/mkdir.c index 6571d29ca3..7eebe90ba7 100644 --- a/sysdeps/unix/sysv/linux/generic/mkdir.c +++ b/sysdeps/unix/sysv/linux/generic/mkdir.c @@ -30,4 +30,6 @@ __mkdir (const char *path, mode_t mode) { return INLINE_SYSCALL (mkdirat, 3, AT_FDCWD, path, mode); } + +libc_hidden_def (__mkdir) weak_alias (__mkdir, mkdir) |