[13/58] Mark internal statfs functions with attribute_hidden [BZ #18822]

Message ID 20170901180029.9527-14-hjl.tools@gmail.com
State Committed
Commit e1b33bba7c30b36be33fa8bb1e6cffbb65b97730
Headers

Commit Message

H.J. Lu Sept. 1, 2017, 5:59 p.m. UTC
  Mark internal statfs functions with attribute_hidden to allow direct
access within libc.so and libc.a without using GOT nor PLT.

	[BZ #18822]
	* include/sys/statfs.h (__fstatfs): Add attribute_hidden.
	(__statfs64): Likewise.
	(__fstatfs64): Likewise.
	* include/sys/statvfs.h (__statvfs64): Likewise.
	(__fstatvfs64): Likewise.
	* sysdeps/unix/sysv/linux/pathconf.h (__statfs_link_max): Likewise.
	(__statfs_filesize_max): Likewise.
	(__statfs_symlinks): Likewise.
	(__statfs_chown_restricted): Likewise.
---
 include/sys/statfs.h               |  9 ++++++---
 include/sys/statvfs.h              |  6 ++++--
 sysdeps/unix/sysv/linux/pathconf.h | 12 ++++++++----
 3 files changed, 18 insertions(+), 9 deletions(-)
  

Comments

H.J. Lu Oct. 1, 2017, 10:02 p.m. UTC | #1
On 9/1/17, H.J. Lu <hjl.tools@gmail.com> wrote:
> Mark internal statfs functions with attribute_hidden to allow direct
> access within libc.so and libc.a without using GOT nor PLT.
>
> 	[BZ #18822]
> 	* include/sys/statfs.h (__fstatfs): Add attribute_hidden.
> 	(__statfs64): Likewise.
> 	(__fstatfs64): Likewise.
> 	* include/sys/statvfs.h (__statvfs64): Likewise.
> 	(__fstatvfs64): Likewise.
> 	* sysdeps/unix/sysv/linux/pathconf.h (__statfs_link_max): Likewise.
> 	(__statfs_filesize_max): Likewise.
> 	(__statfs_symlinks): Likewise.
> 	(__statfs_chown_restricted): Likewise.

Tested with build-many-glibcs.py.  I am checking it in.
  

Patch

diff --git a/include/sys/statfs.h b/include/sys/statfs.h
index 3fac4a3490..8a9f5a7b3b 100644
--- a/include/sys/statfs.h
+++ b/include/sys/statfs.h
@@ -6,9 +6,12 @@ 
 /* Now define the internal interfaces.  */
 extern int __statfs (const char *__file, struct statfs *__buf);
 libc_hidden_proto (__statfs)
-extern int __fstatfs (int __fildes, struct statfs *__buf);
-extern int __statfs64 (const char *__file, struct statfs64 *__buf);
-extern int __fstatfs64 (int __fildes, struct statfs64 *__buf);
+extern int __fstatfs (int __fildes, struct statfs *__buf)
+     attribute_hidden;
+extern int __statfs64 (const char *__file, struct statfs64 *__buf)
+     attribute_hidden;
+extern int __fstatfs64 (int __fildes, struct statfs64 *__buf)
+     attribute_hidden;
 
 # endif /* !_ISOMAC */
 #endif
diff --git a/include/sys/statvfs.h b/include/sys/statvfs.h
index fa3045386d..4cd1977c35 100644
--- a/include/sys/statvfs.h
+++ b/include/sys/statvfs.h
@@ -3,8 +3,10 @@ 
 
 #ifndef _ISOMAC
 /* Now define the internal interfaces.  */
-extern int __statvfs64 (const char *__file, struct statvfs64 *__buf);
-extern int __fstatvfs64 (int __fildes, struct statvfs64 *__buf);
+extern int __statvfs64 (const char *__file, struct statvfs64 *__buf)
+     attribute_hidden;
+extern int __fstatvfs64 (int __fildes, struct statvfs64 *__buf)
+     attribute_hidden;
 
 libc_hidden_proto (statvfs)
 libc_hidden_proto (fstatvfs)
diff --git a/sysdeps/unix/sysv/linux/pathconf.h b/sysdeps/unix/sysv/linux/pathconf.h
index 5de2915f40..b9de04f268 100644
--- a/sysdeps/unix/sysv/linux/pathconf.h
+++ b/sysdeps/unix/sysv/linux/pathconf.h
@@ -24,17 +24,21 @@ 
 /* Used like: return __statfs_link_max (__statfs (name, &buf), &buf,
 					name, -1); */
 extern long int __statfs_link_max (int result, const struct statfs *fsbuf,
-				   const char *file, int fd);
+				   const char *file, int fd)
+     attribute_hidden;
 
 
 /* Used like: return __statfs_filesize_max (__statfs (name, &buf), &buf); */
-extern long int __statfs_filesize_max (int result, const struct statfs *fsbuf);
+extern long int __statfs_filesize_max (int result, const struct statfs *fsbuf)
+     attribute_hidden;
 
 
 /* Used like: return __statfs_link_max (__statfs (name, &buf), &buf); */
-extern long int __statfs_symlinks (int result, const struct statfs *fsbuf);
+extern long int __statfs_symlinks (int result, const struct statfs *fsbuf)
+     attribute_hidden;
 
 
 /* Used like: return __statfs_chown_restricted (__statfs (name, &buf), &buf);*/
 extern long int __statfs_chown_restricted (int result,
-					   const struct statfs *fsbuf);
+					   const struct statfs *fsbuf)
+     attribute_hidden;