From dd3121df08d5ee44ba770d12365022aa802fb364 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Sun, 1 Oct 2017 17:46:39 -0700 Subject: [PATCH] Hide internal __setrlimit function [BZ #18822] Hide internal __setrlimit function to allow direct access within libc.so and libc.a without using GOT nor PLT. [BZ #18822] * include/sys/resource.h (__setrlimit): Add libc_hidden_proto. * resource/setrlimit.c (__setrlimit): Add libc_hidden_def. * sysdeps/mach/hurd/setrlimit.c (__setrlimit): Likewise. * sysdeps/unix/sysv/linux/setrlimit.c (__setrlimit): Likewise. * sysdeps/unix/sysv/linux/setrlimit64.c (__GI___setrlimit): New. --- ChangeLog | 9 +++++++++ include/sys/resource.h | 1 + resource/setrlimit.c | 1 + sysdeps/mach/hurd/setrlimit.c | 1 + sysdeps/unix/sysv/linux/setrlimit.c | 1 + sysdeps/unix/sysv/linux/setrlimit64.c | 3 +++ 6 files changed, 16 insertions(+) diff --git a/ChangeLog b/ChangeLog index 709f983..86d30be 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,15 @@ 2017-10-01 H.J. Lu [BZ #18822] + * include/sys/resource.h (__setrlimit): Add libc_hidden_proto. + * resource/setrlimit.c (__setrlimit): Add libc_hidden_def. + * sysdeps/mach/hurd/setrlimit.c (__setrlimit): Likewise. + * sysdeps/unix/sysv/linux/setrlimit.c (__setrlimit): Likewise. + * sysdeps/unix/sysv/linux/setrlimit64.c (__GI___setrlimit): New. + +2017-10-01 H.J. Lu + + [BZ #18822] * include/monetary.h (__vstrfmon_l): Add attribute_hidden. 2017-10-01 H.J. Lu diff --git a/include/sys/resource.h b/include/sys/resource.h index 688c46c..c55d4e6 100644 --- a/include/sys/resource.h +++ b/include/sys/resource.h @@ -23,5 +23,6 @@ extern int __getrusage (enum __rusage_who __who, struct rusage *__usage) extern int __setrlimit (enum __rlimit_resource __resource, const struct rlimit *__rlimits); +libc_hidden_proto (__setrlimit); #endif #endif diff --git a/resource/setrlimit.c b/resource/setrlimit.c index 6e3a1fb..e02b6a8 100644 --- a/resource/setrlimit.c +++ b/resource/setrlimit.c @@ -29,6 +29,7 @@ __setrlimit (enum __rlimit_resource resource, const struct rlimit *rlimits) __set_errno (ENOSYS); return -1; } +libc_hidden_def (__setrlimit) weak_alias (__setrlimit, setrlimit) stub_warning (setrlimit) diff --git a/sysdeps/mach/hurd/setrlimit.c b/sysdeps/mach/hurd/setrlimit.c index 3ea9af2..693422a 100644 --- a/sysdeps/mach/hurd/setrlimit.c +++ b/sysdeps/mach/hurd/setrlimit.c @@ -53,4 +53,5 @@ __setrlimit (enum __rlimit_resource resource, const struct rlimit *rlimits) return 0; } +libc_hidden_def (__setrlimit) weak_alias (__setrlimit, setrlimit) diff --git a/sysdeps/unix/sysv/linux/setrlimit.c b/sysdeps/unix/sysv/linux/setrlimit.c index 8773c78..50a2163 100644 --- a/sysdeps/unix/sysv/linux/setrlimit.c +++ b/sysdeps/unix/sysv/linux/setrlimit.c @@ -48,6 +48,7 @@ __setrlimit (enum __rlimit_resource resource, const struct rlimit *rlim) return INLINE_SYSCALL_CALL (prlimit64, 0, resource, &rlim64, NULL); } +libc_hidden_def (__setrlimit) # if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) strong_alias (__setrlimit, __setrlimit_1) compat_symbol (libc, __setrlimit, setrlimit, GLIBC_2_0); diff --git a/sysdeps/unix/sysv/linux/setrlimit64.c b/sysdeps/unix/sysv/linux/setrlimit64.c index db1960f..ff835c8 100644 --- a/sysdeps/unix/sysv/linux/setrlimit64.c +++ b/sysdeps/unix/sysv/linux/setrlimit64.c @@ -43,4 +43,7 @@ weak_alias (__setrlimit64, setrlimit64) #if __RLIM_T_MATCHES_RLIM64_T strong_alias (__setrlimit64, __setrlimit) weak_alias (__setrlimit64, setrlimit) +# ifdef SHARED +__hidden_ver1 (__setrlimit64, __GI___setrlimit, __setrlimit64); +# endif #endif -- 2.7.4