1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-28 00:21:52 +03:00

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>
This commit is contained in:
Florian Weimer
2020-04-15 17:17:32 +02:00
parent c4d4419433
commit 076f09afba
14 changed files with 51 additions and 277 deletions

View File

@ -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