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:
6
NEWS
6
NEWS
@ -16,7 +16,11 @@ Major new features:
|
|||||||
|
|
||||||
Deprecated and removed features, and other changes affecting compatibility:
|
Deprecated and removed features, and other changes affecting compatibility:
|
||||||
|
|
||||||
[Add deprecations, removals and changes affecting compatibility here]
|
* The deprecated <sys/sysctl.h> header and the sysctl function have been
|
||||||
|
removed. To support old binaries, the sysctl function continues to
|
||||||
|
exist as a compatibility symbol (on those architectures which had it),
|
||||||
|
but always fails with ENOSYS. This reflects the removal of the system
|
||||||
|
call from all architectures, starting with Linux 5.5.
|
||||||
|
|
||||||
Changes to build and runtime requirements:
|
Changes to build and runtime requirements:
|
||||||
|
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
#ifndef _SYS_SYSCTL_H
|
|
||||||
#include_next <sys/sysctl.h>
|
|
||||||
#endif /* _SYS_SYSCTL_H */
|
|
@ -14,7 +14,6 @@ can make changes.
|
|||||||
* Platform Type:: Determining operating system and basic
|
* Platform Type:: Determining operating system and basic
|
||||||
machine type
|
machine type
|
||||||
* Filesystem Handling:: Controlling/querying mounts
|
* Filesystem Handling:: Controlling/querying mounts
|
||||||
* System Parameters:: Getting and setting various system parameters
|
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
To get information on parameters of the system that are built into the
|
To get information on parameters of the system that are built into the
|
||||||
@ -1107,146 +1106,3 @@ to zeroes. It is more widely available than @code{umount2} but since it
|
|||||||
lacks the possibility to forcefully unmount a filesystem is deprecated
|
lacks the possibility to forcefully unmount a filesystem is deprecated
|
||||||
when @code{umount2} is also available.
|
when @code{umount2} is also available.
|
||||||
@end deftypefun
|
@end deftypefun
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@node System Parameters
|
|
||||||
@section System Parameters
|
|
||||||
|
|
||||||
This section describes the @code{sysctl} function, which gets and sets
|
|
||||||
a variety of system parameters.
|
|
||||||
|
|
||||||
The symbols used in this section are declared in the file @file{sys/sysctl.h}.
|
|
||||||
|
|
||||||
@deftypefun int sysctl (int *@var{names}, int @var{nlen}, void *@var{oldval}, size_t *@var{oldlenp}, void *@var{newval}, size_t @var{newlen})
|
|
||||||
@standards{BSD, sys/sysctl.h}
|
|
||||||
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
|
|
||||||
@c Direct syscall, Linux only.
|
|
||||||
|
|
||||||
@code{sysctl} gets or sets a specified system parameter. There are so
|
|
||||||
many of these parameters that it is not practical to list them all here,
|
|
||||||
but here are some examples:
|
|
||||||
|
|
||||||
@itemize @bullet
|
|
||||||
@item network domain name
|
|
||||||
@item paging parameters
|
|
||||||
@item network Address Resolution Protocol timeout time
|
|
||||||
@item maximum number of files that may be open
|
|
||||||
@item root filesystem device
|
|
||||||
@item when kernel was built
|
|
||||||
@end itemize
|
|
||||||
|
|
||||||
The set of available parameters depends on the kernel configuration and
|
|
||||||
can change while the system is running, particularly when you load and
|
|
||||||
unload loadable kernel modules.
|
|
||||||
|
|
||||||
The system parameters with which @code{sysctl} is concerned are arranged
|
|
||||||
in a hierarchical structure like a hierarchical filesystem. To identify
|
|
||||||
a particular parameter, you specify a path through the structure in a
|
|
||||||
way analogous to specifying the pathname of a file. Each component of
|
|
||||||
the path is specified by an integer and each of these integers has a
|
|
||||||
macro defined for it by @file{sys/sysctl.h}. @var{names} is the path, in
|
|
||||||
the form of an array of integers. Each component of the path is one
|
|
||||||
element of the array, in order. @var{nlen} is the number of components
|
|
||||||
in the path.
|
|
||||||
|
|
||||||
For example, the first component of the path for all the paging
|
|
||||||
parameters is the value @code{CTL_VM}. For the free page thresholds, the
|
|
||||||
second component of the path is @code{VM_FREEPG}. So to get the free
|
|
||||||
page threshold values, make @var{names} an array containing the two
|
|
||||||
elements @code{CTL_VM} and @code{VM_FREEPG} and make @var{nlen} = 2.
|
|
||||||
|
|
||||||
|
|
||||||
The format of the value of a parameter depends on the parameter.
|
|
||||||
Sometimes it is an integer; sometimes it is an ASCII string; sometimes
|
|
||||||
it is an elaborate structure. In the case of the free page thresholds
|
|
||||||
used in the example above, the parameter value is a structure containing
|
|
||||||
several integers.
|
|
||||||
|
|
||||||
In any case, you identify a place to return the parameter's value with
|
|
||||||
@var{oldval} and specify the amount of storage available at that
|
|
||||||
location as *@var{oldlenp}. *@var{oldlenp} does double duty because it
|
|
||||||
is also the output location that contains the actual length of the
|
|
||||||
returned value.
|
|
||||||
|
|
||||||
If you don't want the parameter value returned, specify a null pointer
|
|
||||||
for @var{oldval}.
|
|
||||||
|
|
||||||
To set the parameter, specify the address and length of the new value
|
|
||||||
as @var{newval} and @var{newlen}. If you don't want to set the parameter,
|
|
||||||
specify a null pointer as @var{newval}.
|
|
||||||
|
|
||||||
If you get and set a parameter in the same @code{sysctl} call, the value
|
|
||||||
returned is the value of the parameter before it was set.
|
|
||||||
|
|
||||||
Each system parameter has a set of permissions similar to the
|
|
||||||
permissions for a file (including the permissions on directories in its
|
|
||||||
path) that determine whether you may get or set it. For the purposes of
|
|
||||||
these permissions, every parameter is considered to be owned by the
|
|
||||||
superuser and Group 0 so processes with that effective uid or gid may
|
|
||||||
have more access to system parameters. Unlike with files, the superuser
|
|
||||||
does not invariably have full permission to all system parameters, because
|
|
||||||
some of them are designed not to be changed ever.
|
|
||||||
|
|
||||||
|
|
||||||
@code{sysctl} returns a zero return value if it succeeds. Otherwise, it
|
|
||||||
returns @code{-1} and sets @code{errno} appropriately. Besides the
|
|
||||||
failures that apply to all system calls, the following are the
|
|
||||||
@code{errno} codes for all possible failures:
|
|
||||||
|
|
||||||
@table @code
|
|
||||||
@item EPERM
|
|
||||||
The process is not permitted to access one of the components of the
|
|
||||||
path of the system parameter or is not permitted to access the system parameter
|
|
||||||
itself in the way (read or write) that it requested.
|
|
||||||
@c There is some indication in the Linux 2.2 code that the code is trying to
|
|
||||||
@c return EACCES here, but the EACCES value never actually makes it to the
|
|
||||||
@c user.
|
|
||||||
@item ENOTDIR
|
|
||||||
There is no system parameter corresponding to @var{name}.
|
|
||||||
@item EFAULT
|
|
||||||
@var{oldval} is not null, which means the process wanted to read the parameter,
|
|
||||||
but *@var{oldlenp} is zero, so there is no place to return it.
|
|
||||||
@item EINVAL
|
|
||||||
@itemize @bullet
|
|
||||||
@item
|
|
||||||
The process attempted to set a system parameter to a value that is not valid
|
|
||||||
for that parameter.
|
|
||||||
@item
|
|
||||||
The space provided for the return of the system parameter is not the right
|
|
||||||
size for that parameter.
|
|
||||||
@end itemize
|
|
||||||
@item ENOMEM
|
|
||||||
This value may be returned instead of the more correct @code{EINVAL} in some
|
|
||||||
cases where the space provided for the return of the system parameter is too
|
|
||||||
small.
|
|
||||||
|
|
||||||
@end table
|
|
||||||
|
|
||||||
@end deftypefun
|
|
||||||
|
|
||||||
If you have a Linux kernel with the @code{proc} filesystem, you can get
|
|
||||||
and set most of the same parameters by reading and writing to files in
|
|
||||||
the @code{sys} directory of the @code{proc} filesystem. In the @code{sys}
|
|
||||||
directory, the directory structure represents the hierarchical structure
|
|
||||||
of the parameters. E.g. you can display the free page thresholds with
|
|
||||||
@smallexample
|
|
||||||
cat /proc/sys/vm/freepages
|
|
||||||
@end smallexample
|
|
||||||
@c In Linux, the sysctl() and /proc instances of the parameter are created
|
|
||||||
@c together. The proc filesystem accesses the same data structure as
|
|
||||||
@c sysctl(), which has special fields in it for /proc. But it is still
|
|
||||||
@c possible to create a sysctl-only parameter.
|
|
||||||
|
|
||||||
Some more traditional and more widely available, though less general,
|
|
||||||
@glibcadj{} functions for getting and setting some of the same system
|
|
||||||
parameters are:
|
|
||||||
|
|
||||||
@itemize @bullet
|
|
||||||
@item
|
|
||||||
@code{getdomainname}, @code{setdomainname}
|
|
||||||
@item
|
|
||||||
@code{gethostname}, @code{sethostname} (@xref{Host Identification}.)
|
|
||||||
@item
|
|
||||||
@code{uname} (@xref{Platform Type}.)
|
|
||||||
@end itemize
|
|
||||||
|
@ -74,11 +74,6 @@ for header in "$@"; do
|
|||||||
(finclude/*)
|
(finclude/*)
|
||||||
continue;;
|
continue;;
|
||||||
|
|
||||||
# sys/sysctl.h produces a deprecation warning and therefore
|
|
||||||
# fails compilation with -Werror.
|
|
||||||
(sys/sysctl.h)
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
# sys/vm86.h is "unsupported on x86-64" and errors out on that target.
|
# sys/vm86.h is "unsupported on x86-64" and errors out on that target.
|
||||||
(sys/vm86.h)
|
(sys/vm86.h)
|
||||||
case "$is_x86_64" in
|
case "$is_x86_64" in
|
||||||
|
@ -54,9 +54,7 @@ CFLAGS-malloc.c += -DMORECORE_CLEARS=2
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(subdir),misc)
|
ifeq ($(subdir),misc)
|
||||||
include $(firstword $(wildcard $(sysdirs:=/sysctl.mk)))
|
sysdep_routines += adjtimex clone umount umount2 readahead sysctl \
|
||||||
|
|
||||||
sysdep_routines += adjtimex clone umount umount2 readahead \
|
|
||||||
setfsuid setfsgid epoll_pwait signalfd \
|
setfsuid setfsgid epoll_pwait signalfd \
|
||||||
eventfd eventfd_read eventfd_write prlimit \
|
eventfd eventfd_read eventfd_write prlimit \
|
||||||
personality epoll_wait tee vmsplice splice \
|
personality epoll_wait tee vmsplice splice \
|
||||||
@ -71,7 +69,7 @@ CFLAGS-open_by_handle_at.c = -fexceptions -fasynchronous-unwind-tables
|
|||||||
CFLAGS-sync_file_range.c = -fexceptions -fasynchronous-unwind-tables
|
CFLAGS-sync_file_range.c = -fexceptions -fasynchronous-unwind-tables
|
||||||
CFLAGS-tst-writev.c += "-DARTIFICIAL_LIMIT=(0x80000000-sysconf(_SC_PAGESIZE))"
|
CFLAGS-tst-writev.c += "-DARTIFICIAL_LIMIT=(0x80000000-sysconf(_SC_PAGESIZE))"
|
||||||
|
|
||||||
sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \
|
sysdep_headers += sys/mount.h sys/acct.h \
|
||||||
sys/klog.h \
|
sys/klog.h \
|
||||||
sys/user.h sys/prctl.h \
|
sys/user.h sys/prctl.h \
|
||||||
sys/kd.h sys/soundcard.h sys/vt.h \
|
sys/kd.h sys/soundcard.h sys/vt.h \
|
||||||
@ -81,7 +79,7 @@ sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \
|
|||||||
bits/a.out.h sys/inotify.h sys/signalfd.h sys/eventfd.h \
|
bits/a.out.h sys/inotify.h sys/signalfd.h sys/eventfd.h \
|
||||||
sys/timerfd.h sys/fanotify.h bits/eventfd.h bits/inotify.h \
|
sys/timerfd.h sys/fanotify.h bits/eventfd.h bits/inotify.h \
|
||||||
bits/signalfd.h bits/timerfd.h bits/epoll.h \
|
bits/signalfd.h bits/timerfd.h bits/epoll.h \
|
||||||
bits/socket_type.h bits/syscall.h bits/sysctl.h \
|
bits/socket_type.h bits/syscall.h \
|
||||||
bits/mman-linux.h bits/mman-shared.h bits/ptrace-shared.h \
|
bits/mman-linux.h bits/mman-shared.h bits/ptrace-shared.h \
|
||||||
bits/siginfo-arch.h bits/siginfo-consts-arch.h \
|
bits/siginfo-arch.h bits/siginfo-consts-arch.h \
|
||||||
bits/procfs.h bits/procfs-id.h bits/procfs-extra.h \
|
bits/procfs.h bits/procfs-id.h bits/procfs-extra.h \
|
||||||
|
@ -177,6 +177,8 @@ libc {
|
|||||||
GLIBC_2.30 {
|
GLIBC_2.30 {
|
||||||
getdents64; gettid; tgkill;
|
getdents64; gettid; tgkill;
|
||||||
}
|
}
|
||||||
|
GLIBC_2.32 {
|
||||||
|
}
|
||||||
GLIBC_PRIVATE {
|
GLIBC_PRIVATE {
|
||||||
# functions used in other libraries
|
# functions used in other libraries
|
||||||
__syscall_rt_sigqueueinfo;
|
__syscall_rt_sigqueueinfo;
|
||||||
|
@ -1 +0,0 @@
|
|||||||
/* Empty file. */
|
|
@ -1,4 +1,5 @@
|
|||||||
/* Copyright (C) 2012-2020 Free Software Foundation, Inc.
|
/* sysctl function stub. microblaze version.
|
||||||
|
Copyright (C) 2020 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -15,6 +16,14 @@
|
|||||||
License along with the GNU C Library; if not, see
|
License along with the GNU C Library; if not, see
|
||||||
<https://www.gnu.org/licenses/>. */
|
<https://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#if defined __x86_64__ && defined __ILP32__
|
/* microblaze is special because it has an ABI baseline of 2.18, but
|
||||||
# error "sysctl system call is unsupported in x32 kernel"
|
still includes the __sysctl symbol. */
|
||||||
|
|
||||||
|
#ifdef SHARED
|
||||||
|
|
||||||
|
# include <sysdeps/unix/sysv/linux/sysctl.c>
|
||||||
|
|
||||||
|
strong_alias (___sysctl, ___sysctl2)
|
||||||
|
compat_symbol (libc, ___sysctl2, __sysctl, GLIBC_2_2);
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -1,6 +1,6 @@
|
|||||||
/* Copyright (C) 2011-2020 Free Software Foundation, Inc.
|
/* sysctl function stub. powerpc64le version.
|
||||||
|
Copyright (C) 2020 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
|
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Lesser General Public
|
modify it under the terms of the GNU Lesser General Public
|
||||||
@ -13,20 +13,17 @@
|
|||||||
Lesser General Public License for more details.
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public
|
You should have received a copy of the GNU Lesser General Public
|
||||||
License along with the GNU C Library. If not, see
|
License along with the GNU C Library; if not, see
|
||||||
<https://www.gnu.org/licenses/>. */
|
<https://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <errno.h>
|
/* powerpc64le is special because it has an ABI baseline of 2.17, but
|
||||||
|
still includes the __sysctl symbol. */
|
||||||
|
|
||||||
#include <sysdep.h>
|
#ifdef SHARED
|
||||||
#include <sys/syscall.h>
|
|
||||||
|
|
||||||
/* This deprecated syscall is no longer used (replaced with /proc/sys). */
|
# include <sysdeps/unix/sysv/linux/sysctl.c>
|
||||||
int
|
|
||||||
sysctl (int *name, int nlen, void *oldval, size_t *oldlenp,
|
strong_alias (___sysctl, ___sysctl2)
|
||||||
void *newval, size_t newlen)
|
compat_symbol (libc, ___sysctl2, __sysctl, GLIBC_2_2);
|
||||||
{
|
|
||||||
__set_errno (ENOSYS);
|
#endif
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
stub_warning (sysctl)
|
|
@ -1,76 +0,0 @@
|
|||||||
/* Copyright (C) 1996-2020 Free Software Foundation, Inc.
|
|
||||||
This file is part of the GNU C Library.
|
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU Lesser General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2.1 of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
The GNU C Library is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public
|
|
||||||
License along with the GNU C Library; if not, see
|
|
||||||
<https://www.gnu.org/licenses/>. */
|
|
||||||
|
|
||||||
#ifndef _SYS_SYSCTL_H
|
|
||||||
#define _SYS_SYSCTL_H 1
|
|
||||||
|
|
||||||
#warning "The <sys/sysctl.h> header is deprecated and will be removed."
|
|
||||||
|
|
||||||
#include <features.h>
|
|
||||||
#define __need_size_t
|
|
||||||
#include <stddef.h>
|
|
||||||
/* Prevent more kernel headers than necessary to be included. */
|
|
||||||
#ifndef _LINUX_KERNEL_H
|
|
||||||
# define _LINUX_KERNEL_H 1
|
|
||||||
# define __undef_LINUX_KERNEL_H
|
|
||||||
#endif
|
|
||||||
#ifndef _LINUX_TYPES_H
|
|
||||||
# define _LINUX_TYPES_H 1
|
|
||||||
# define __undef_LINUX_TYPES_H
|
|
||||||
#endif
|
|
||||||
#ifndef _LINUX_LIST_H
|
|
||||||
# define _LINUX_LIST_H 1
|
|
||||||
# define __undef_LINUX_LIST_H
|
|
||||||
#endif
|
|
||||||
#ifndef __LINUX_COMPILER_H
|
|
||||||
# define __LINUX_COMPILER_H 1
|
|
||||||
# define __user
|
|
||||||
# define __undef__LINUX_COMPILER_H
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <linux/sysctl.h>
|
|
||||||
|
|
||||||
#ifdef __undef_LINUX_KERNEL_H
|
|
||||||
# undef _LINUX_KERNEL_H
|
|
||||||
# undef __undef_LINUX_KERNEL_H
|
|
||||||
#endif
|
|
||||||
#ifdef __undef_LINUX_TYPES_H
|
|
||||||
# undef _LINUX_TYPES_H
|
|
||||||
# undef __undef_LINUX_TYPES_H
|
|
||||||
#endif
|
|
||||||
#ifdef __undef_LINUX_LIST_H
|
|
||||||
# undef _LINUX_LIST_H
|
|
||||||
# undef __undef_LINUX_LIST_H
|
|
||||||
#endif
|
|
||||||
#ifdef __undef__LINUX_COMPILER_H
|
|
||||||
# undef __LINUX_COMPILER_H
|
|
||||||
# undef __user
|
|
||||||
# undef __undef__LINUX_COMPILER_H
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <bits/sysctl.h>
|
|
||||||
|
|
||||||
__BEGIN_DECLS
|
|
||||||
|
|
||||||
/* Read or write system parameters. */
|
|
||||||
extern int sysctl (int *__name, int __nlen, void *__oldval,
|
|
||||||
size_t *__oldlenp, void *__newval, size_t __newlen) __THROW
|
|
||||||
__attribute_deprecated__;
|
|
||||||
|
|
||||||
__END_DECLS
|
|
||||||
|
|
||||||
#endif /* _SYS_SYSCTL_H */
|
|
@ -1,4 +1,4 @@
|
|||||||
/* Read or write system information. Linux version.
|
/* sysctl function stub.
|
||||||
Copyright (C) 1996-2020 Free Software Foundation, Inc.
|
Copyright (C) 1996-2020 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
@ -17,25 +17,20 @@
|
|||||||
<https://www.gnu.org/licenses/>. */
|
<https://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <linux/sysctl.h>
|
#include <shlib-compat.h>
|
||||||
|
|
||||||
#include <sysdep.h>
|
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_32)
|
||||||
#include <sys/syscall.h>
|
int attribute_compat_text_section
|
||||||
|
___sysctl (int *name, int nlen, void *oldval, size_t *oldlenp,
|
||||||
int
|
|
||||||
__sysctl (int *name, int nlen, void *oldval, size_t *oldlenp,
|
|
||||||
void *newval, size_t newlen)
|
void *newval, size_t newlen)
|
||||||
{
|
{
|
||||||
struct __sysctl_args args =
|
__set_errno (ENOSYS);
|
||||||
{
|
return -1;
|
||||||
.name = name,
|
|
||||||
.nlen = nlen,
|
|
||||||
.oldval = oldval,
|
|
||||||
.oldlenp = oldlenp,
|
|
||||||
.newval = newval,
|
|
||||||
.newlen = newlen
|
|
||||||
};
|
|
||||||
|
|
||||||
return INLINE_SYSCALL (_sysctl, 1, &args);
|
|
||||||
}
|
}
|
||||||
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
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
# sysctl system call has been deprecated. It is provided for backward
|
|
||||||
# compatility. New target shouldn't add it (see x86_64/x32/sysctl.mk).
|
|
||||||
sysdep_routines += sysctl
|
|
2
sysdeps/unix/sysv/linux/x86_64/x32/sysctl.c
Normal file
2
sysdeps/unix/sysv/linux/x86_64/x32/sysctl.c
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/* Despite the old base symbol version, x32 does not have a sysctl
|
||||||
|
function. */
|
@ -1 +0,0 @@
|
|||||||
# X32 doesn't support sysctl.
|
|
Reference in New Issue
Block a user