This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH 47/58] Hide internal __setrlimit function [BZ #18822]
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: libc-alpha at sourceware dot org
- Date: Fri, 1 Sep 2017 11:00:18 -0700
- Subject: [PATCH 47/58] Hide internal __setrlimit function [BZ #18822]
- Authentication-results: sourceware.org; auth=none
- References: <20170901180029.9527-1-hjl.tools@gmail.com>
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.
---
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 +++
5 files changed, 7 insertions(+)
diff --git a/include/sys/resource.h b/include/sys/resource.h
index 688c46c4ae..c55d4e63bd 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 6e3a1fbc54..e02b6a826a 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 3ea9af2e7c..693422a537 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 8773c78236..50a21636ef 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 db1960fc18..ff835c8733 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.13.5