mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
Linux: Deprecate <sys/sysctl.h> and sysctl
Now that there are no internal users of __sysctl left, it is possible to add an unconditional deprecation warning to <sys/sysctl.h>. To avoid a test failure due this warning in check-install-headers, skip the test for sys/sysctl.h. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
This commit is contained in:
13
ChangeLog
13
ChangeLog
@ -1,3 +1,16 @@
|
|||||||
|
2019-06-12 Florian Weimer <fweimer@redhat.com>
|
||||||
|
|
||||||
|
Linux: Deprecate sysctl.
|
||||||
|
* include/sysctl.h (__sysctl): Remove declaration.
|
||||||
|
* scripts/check-installed-headers.sh (sys/sysctl.h): Disable
|
||||||
|
check.
|
||||||
|
* sysdeps/unix/sysv/linux/sys/sysctl.h: Add deprecation warning.
|
||||||
|
(sysctl): Add deprecation attribute.
|
||||||
|
* sysdeps/unix/sysv/linux/sysctl.c: Include <linux/sysctl.h>
|
||||||
|
directly, to avoid the deprecation warning. Do not include
|
||||||
|
<string.h>.
|
||||||
|
(__sysctl): Remove hidden alias.
|
||||||
|
|
||||||
2019-06-12 Florian Weimer <fweimer@redhat.com>
|
2019-06-12 Florian Weimer <fweimer@redhat.com>
|
||||||
|
|
||||||
Linux: Use kernel headers for statx definitions if available.
|
Linux: Use kernel headers for statx definitions if available.
|
||||||
|
5
NEWS
5
NEWS
@ -61,6 +61,11 @@ Deprecated and removed features, and other changes affecting compatibility:
|
|||||||
* On 32-bit Arm, support for the port-based I/O emulation and the <sys/io.h>
|
* On 32-bit Arm, support for the port-based I/O emulation and the <sys/io.h>
|
||||||
header have been removed.
|
header have been removed.
|
||||||
|
|
||||||
|
* The Linux-specific <sys/sysctl.h> header and the sysctl function have been
|
||||||
|
deprecated and will be removed from a future version of glibc.
|
||||||
|
Application should directly access /proc instead. For obtaining random
|
||||||
|
bits, the getentropy function can be used.
|
||||||
|
|
||||||
Changes to build and runtime requirements:
|
Changes to build and runtime requirements:
|
||||||
|
|
||||||
* GCC 6.2 or later is required to build the GNU C Library.
|
* GCC 6.2 or later is required to build the GNU C Library.
|
||||||
|
@ -1,13 +1,3 @@
|
|||||||
#ifndef _SYS_SYSCTL_H
|
#ifndef _SYS_SYSCTL_H
|
||||||
#include_next <sys/sysctl.h>
|
#include_next <sys/sysctl.h>
|
||||||
|
|
||||||
# ifndef _ISOMAC
|
|
||||||
|
|
||||||
/* Read or write system parameters (Linux, FreeBSD specific). */
|
|
||||||
extern int __sysctl (int *__name, int __nlen, void *__oldval,
|
|
||||||
size_t *__oldlenp, void *__newval, size_t __newlen);
|
|
||||||
libc_hidden_proto (__sysctl)
|
|
||||||
|
|
||||||
|
|
||||||
# endif /* !_ISOMAC */
|
|
||||||
#endif /* _SYS_SYSCTL_H */
|
#endif /* _SYS_SYSCTL_H */
|
||||||
|
@ -53,7 +53,6 @@ trap "rm -f '$cih_test_c'" 0
|
|||||||
|
|
||||||
failed=0
|
failed=0
|
||||||
is_x86_64=unknown
|
is_x86_64=unknown
|
||||||
is_x32=unknown
|
|
||||||
for header in "$@"; do
|
for header in "$@"; do
|
||||||
# Skip various headers for which this test gets a false failure.
|
# Skip various headers for which this test gets a false failure.
|
||||||
case "$header" in
|
case "$header" in
|
||||||
@ -75,27 +74,10 @@ for header in "$@"; do
|
|||||||
(finclude/*)
|
(finclude/*)
|
||||||
continue;;
|
continue;;
|
||||||
|
|
||||||
# sys/sysctl.h is unsupported for x32.
|
# sys/sysctl.h produces a deprecation warning and therefore
|
||||||
|
# fails compilation with -Werror.
|
||||||
(sys/sysctl.h)
|
(sys/sysctl.h)
|
||||||
case "$is_x32" in
|
continue;;
|
||||||
(yes) continue;;
|
|
||||||
(no) ;;
|
|
||||||
(unknown)
|
|
||||||
cat >"$cih_test_c" <<EOF
|
|
||||||
#if defined __x86_64__ && defined __ILP32__
|
|
||||||
# error "is x32"
|
|
||||||
#endif
|
|
||||||
EOF
|
|
||||||
if $cc_cmd -fsyntax-only "$cih_test_c" > /dev/null 2>&1
|
|
||||||
then
|
|
||||||
is_x32=no
|
|
||||||
else
|
|
||||||
is_x32=yes
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
|
|
||||||
# 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)
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
#ifndef _SYS_SYSCTL_H
|
#ifndef _SYS_SYSCTL_H
|
||||||
#define _SYS_SYSCTL_H 1
|
#define _SYS_SYSCTL_H 1
|
||||||
|
|
||||||
|
#warning "The <sys/sysctl.h> header is deprecated and will be removed."
|
||||||
|
|
||||||
#include <features.h>
|
#include <features.h>
|
||||||
#define __need_size_t
|
#define __need_size_t
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
@ -66,7 +68,8 @@ __BEGIN_DECLS
|
|||||||
|
|
||||||
/* Read or write system parameters. */
|
/* Read or write system parameters. */
|
||||||
extern int sysctl (int *__name, int __nlen, void *__oldval,
|
extern int sysctl (int *__name, int __nlen, void *__oldval,
|
||||||
size_t *__oldlenp, void *__newval, size_t __newlen) __THROW;
|
size_t *__oldlenp, void *__newval, size_t __newlen) __THROW
|
||||||
|
__attribute_deprecated__;
|
||||||
|
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
||||||
|
@ -17,8 +17,7 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <string.h> /* For the real memset prototype. */
|
#include <linux/sysctl.h>
|
||||||
#include <sys/sysctl.h>
|
|
||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <sys/syscall.h>
|
#include <sys/syscall.h>
|
||||||
@ -39,5 +38,4 @@ __sysctl (int *name, int nlen, void *oldval, size_t *oldlenp,
|
|||||||
|
|
||||||
return INLINE_SYSCALL (_sysctl, 1, &args);
|
return INLINE_SYSCALL (_sysctl, 1, &args);
|
||||||
}
|
}
|
||||||
libc_hidden_def (__sysctl)
|
|
||||||
weak_alias (__sysctl, sysctl)
|
weak_alias (__sysctl, sysctl)
|
||||||
|
Reference in New Issue
Block a user