aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/sysctl.c
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2020-04-15 17:17:32 +0200
committerFlorian Weimer <fweimer@redhat.com>2020-04-15 17:17:32 +0200
commit076f09afbac1aa57756faa7a8feadb7936a724e4 (patch)
tree403647ecb96c88decbd178be4999cc5caf097b21 /sysdeps/unix/sysv/linux/sysctl.c
parentc4d4419433f1b2c9c4d54ee6da2b0d2a30e3fda8 (diff)
downloadglibc-076f09afbac1aa57756faa7a8feadb7936a724e4.zip
glibc-076f09afbac1aa57756faa7a8feadb7936a724e4.tar.gz
glibc-076f09afbac1aa57756faa7a8feadb7936a724e4.tar.bz2
Linux: Remove <sys/sysctl.h> and the sysctl function
Linux 5.5 remove the system call in commit 61a47c1ad3a4dc6882f01ebdc88138ac62d0df03 ("Linux: Remove <sys/sysctl.h>"). Therefore, the compat function is just a stub that sets ENOSYS. Due to SHLIB_COMPAT, new ports will not add the sysctl function anymore automatically. x32 already lacks the sysctl function, so an empty sysctl.c file is used to suppress it. Otherwise, a new compat symbol would be added. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Diffstat (limited to 'sysdeps/unix/sysv/linux/sysctl.c')
-rw-r--r--sysdeps/unix/sysv/linux/sysctl.c35
1 files changed, 15 insertions, 20 deletions
diff --git a/sysdeps/unix/sysv/linux/sysctl.c b/sysdeps/unix/sysv/linux/sysctl.c
index 5ea8be8..389b958 100644
--- a/sysdeps/unix/sysv/linux/sysctl.c
+++ b/sysdeps/unix/sysv/linux/sysctl.c
@@ -1,4 +1,4 @@
-/* Read or write system information. Linux version.
+/* sysctl function stub.
Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -17,25 +17,20 @@
<https://www.gnu.org/licenses/>. */
#include <errno.h>
-#include <linux/sysctl.h>
+#include <shlib-compat.h>
-#include <sysdep.h>
-#include <sys/syscall.h>
-
-int
-__sysctl (int *name, int nlen, void *oldval, size_t *oldlenp,
- void *newval, size_t newlen)
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_32)
+int attribute_compat_text_section
+___sysctl (int *name, int nlen, void *oldval, size_t *oldlenp,
+ void *newval, size_t newlen)
{
- struct __sysctl_args args =
- {
- .name = name,
- .nlen = nlen,
- .oldval = oldval,
- .oldlenp = oldlenp,
- .newval = newval,
- .newlen = newlen
- };
-
- return INLINE_SYSCALL (_sysctl, 1, &args);
+ __set_errno (ENOSYS);
+ return -1;
}
-weak_alias (__sysctl, sysctl)
+compat_symbol (libc, ___sysctl, sysctl, GLIBC_2_0);
+
+# if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_17)
+strong_alias (___sysctl, ___sysctl2)
+compat_symbol (libc, ___sysctl2, __sysctl, GLIBC_2_2);
+# endif
+#endif