This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 24/58] 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.
---
 include/sys/stat.h                      | 2 ++
 io/chmod.c                              | 1 +
 io/mkdir.c                              | 1 +
 sysdeps/mach/hurd/chmod.c               | 1 +
 sysdeps/mach/hurd/mkdir.c               | 1 +
 sysdeps/unix/sysv/linux/generic/chmod.c | 2 ++
 sysdeps/unix/sysv/linux/generic/mkdir.c | 2 ++
 7 files changed, 10 insertions(+)

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)
-- 
2.13.5


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]