From b5648377d923d790dd7e995d79d480066b25e6bb Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Sun, 1 Oct 2017 15:57:00 -0700 Subject: [PATCH] Hide internal sysinfo functions [BZ #18822] Hide internal sysinfo functions to allow direct access within libc.so and libc.a without using GOT nor PLT. [BZ #18822] * include/sys/sysinfo.h (__get_nprocs_conf): Add libc_hidden_proto. (__get_nprocs): Likewise. (__get_phys_pages): Likewise. (__get_avphys_pages): Likewise. (__get_child_max): Add attribute_hidden. * misc/getsysstats.c (__get_nprocs_conf): Add libc_hidden_def. (__get_nprocs): Likewise. (__get_phys_pages): Likewise. (__get_avphys_pages): Likewise. * sysdeps/mach/getsysstats.c (__get_nprocs_conf): Add libc_hidden_def. (__get_nprocs): Likewise. (__get_phys_pages): Likewise. (__get_avphys_pages): Likewise. * sysdeps/unix/sysv/linux/getsysstats.c (__get_nprocs): Add libc_hidden_def. (__get_nprocs_conf): Likewise. (__get_phys_pages): Likewise. (__get_avphys_pages): Likewise. --- ChangeLog | 24 ++++++++++++++++++++++++ include/sys/sysinfo.h | 6 +++++- misc/getsysstats.c | 4 ++++ sysdeps/mach/getsysstats.c | 4 ++++ sysdeps/unix/sysv/linux/getsysstats.c | 4 ++++ 5 files changed, 41 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 8117cc1b6a..4851dc7c12 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,27 @@ +2017-10-01 H.J. Lu + + [BZ #18822] + * include/sys/sysinfo.h (__get_nprocs_conf): Add + libc_hidden_proto. + (__get_nprocs): Likewise. + (__get_phys_pages): Likewise. + (__get_avphys_pages): Likewise. + (__get_child_max): Add attribute_hidden. + * misc/getsysstats.c (__get_nprocs_conf): Add libc_hidden_def. + (__get_nprocs): Likewise. + (__get_phys_pages): Likewise. + (__get_avphys_pages): Likewise. + * sysdeps/mach/getsysstats.c (__get_nprocs_conf): Add + libc_hidden_def. + (__get_nprocs): Likewise. + (__get_phys_pages): Likewise. + (__get_avphys_pages): Likewise. + * sysdeps/unix/sysv/linux/getsysstats.c (__get_nprocs): Add + libc_hidden_def. + (__get_nprocs_conf): Likewise. + (__get_phys_pages): Likewise. + (__get_avphys_pages): Likewise. + 2017-10-01 H.J. Lu [BZ #18822] diff --git a/include/sys/sysinfo.h b/include/sys/sysinfo.h index c33eae2883..7388356a19 100644 --- a/include/sys/sysinfo.h +++ b/include/sys/sysinfo.h @@ -7,18 +7,22 @@ /* Return number of configured processors. */ extern int __get_nprocs_conf (void); +libc_hidden_proto (__get_nprocs_conf) /* Return number of available processors. */ extern int __get_nprocs (void); +libc_hidden_proto (__get_nprocs) /* Return number of physical pages of memory in the system. */ extern long int __get_phys_pages (void); +libc_hidden_proto (__get_phys_pages) /* Return number of available physical pages of memory in the system. */ extern long int __get_avphys_pages (void); +libc_hidden_proto (__get_avphys_pages) /* Return maximum number of processes this real user ID can have. */ -extern long int __get_child_max (void); +extern long int __get_child_max (void) attribute_hidden; # endif /* !_ISOMAC */ #endif /* sys/sysinfo.h */ diff --git a/misc/getsysstats.c b/misc/getsysstats.c index d25770ec52..cbad87a3a2 100644 --- a/misc/getsysstats.c +++ b/misc/getsysstats.c @@ -26,6 +26,7 @@ __get_nprocs_conf (void) /* We don't know how to determine the number. Simply return always 1. */ return 1; } +libc_hidden_def (__get_nprocs_conf) weak_alias (__get_nprocs_conf, get_nprocs_conf) link_warning (get_nprocs_conf, "warning: get_nprocs_conf will always return 1") @@ -38,6 +39,7 @@ __get_nprocs (void) /* We don't know how to determine the number. Simply return always 1. */ return 1; } +libc_hidden_def (__get_nprocs) weak_alias (__get_nprocs, get_nprocs) link_warning (get_nprocs, "warning: get_nprocs will always return 1") @@ -50,6 +52,7 @@ __get_phys_pages (void) __set_errno (ENOSYS); return -1; } +libc_hidden_def (__get_phys_pages) weak_alias (__get_phys_pages, get_phys_pages) stub_warning (get_phys_pages) @@ -62,6 +65,7 @@ __get_avphys_pages (void) __set_errno (ENOSYS); return -1; } +libc_hidden_def (__get_avphys_pages) weak_alias (__get_avphys_pages, get_avphys_pages) stub_warning (get_avphys_pages) diff --git a/sysdeps/mach/getsysstats.c b/sysdeps/mach/getsysstats.c index 0dacab0300..3aabd61382 100644 --- a/sysdeps/mach/getsysstats.c +++ b/sysdeps/mach/getsysstats.c @@ -39,6 +39,7 @@ __get_nprocs_conf (void) return hbi.max_cpus; } +libc_hidden_def (__get_nprocs_conf) weak_alias (__get_nprocs_conf, get_nprocs_conf) /* Return the number of processors currently available on the system. */ @@ -58,6 +59,7 @@ __get_nprocs (void) return hbi.avail_cpus; } +libc_hidden_def (__get_nprocs) weak_alias (__get_nprocs, get_nprocs) /* Return the number of physical pages on the system. */ @@ -77,6 +79,7 @@ __get_phys_pages (void) return hbi.memory_size / __vm_page_size; } +libc_hidden_def (__get_phys_pages) weak_alias (__get_phys_pages, get_phys_pages) /* Return the number of available physical pages */ @@ -102,4 +105,5 @@ __get_avphys_pages (void) return vs.free_count; } +libc_hidden_def (__get_avphys_pages) weak_alias (__get_avphys_pages, get_avphys_pages) diff --git a/sysdeps/unix/sysv/linux/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c index d02c86d739..c245b3c662 100644 --- a/sysdeps/unix/sysv/linux/getsysstats.c +++ b/sysdeps/unix/sysv/linux/getsysstats.c @@ -226,6 +226,7 @@ __get_nprocs (void) return result; } +libc_hidden_def (__get_nprocs) weak_alias (__get_nprocs, get_nprocs) @@ -279,6 +280,7 @@ __get_nprocs_conf (void) return result; } +libc_hidden_def (__get_nprocs_conf) weak_alias (__get_nprocs_conf, get_nprocs_conf) @@ -320,6 +322,7 @@ __get_phys_pages (void) __sysinfo (&info); return sysinfo_mempages (info.totalram, info.mem_unit); } +libc_hidden_def (__get_phys_pages) weak_alias (__get_phys_pages, get_phys_pages) long int @@ -330,4 +333,5 @@ __get_avphys_pages (void) __sysinfo (&info); return sysinfo_mempages (info.freeram, info.mem_unit); } +libc_hidden_def (__get_avphys_pages) weak_alias (__get_avphys_pages, get_avphys_pages) -- 2.43.5