mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 12:30:06 +00: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:
parent
5dad6ffbb2
commit
744e829637
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>
|
||||
|
||||
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>
|
||||
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:
|
||||
|
||||
* GCC 6.2 or later is required to build the GNU C Library.
|
||||
|
@ -1,13 +1,3 @@
|
||||
#ifndef _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 */
|
||||
|
@ -53,7 +53,6 @@ trap "rm -f '$cih_test_c'" 0
|
||||
|
||||
failed=0
|
||||
is_x86_64=unknown
|
||||
is_x32=unknown
|
||||
for header in "$@"; do
|
||||
# Skip various headers for which this test gets a false failure.
|
||||
case "$header" in
|
||||
@ -75,27 +74,10 @@ for header in "$@"; do
|
||||
(finclude/*)
|
||||
continue;;
|
||||
|
||||
# sys/sysctl.h is unsupported for x32.
|
||||
# sys/sysctl.h produces a deprecation warning and therefore
|
||||
# fails compilation with -Werror.
|
||||
(sys/sysctl.h)
|
||||
case "$is_x32" in
|
||||
(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
|
||||
;;
|
||||
continue;;
|
||||
|
||||
# sys/vm86.h is "unsupported on x86-64" and errors out on that target.
|
||||
(sys/vm86.h)
|
||||
|
@ -18,6 +18,8 @@
|
||||
#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>
|
||||
@ -66,7 +68,8 @@ __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;
|
||||
size_t *__oldlenp, void *__newval, size_t __newlen) __THROW
|
||||
__attribute_deprecated__;
|
||||
|
||||
__END_DECLS
|
||||
|
||||
|
@ -17,8 +17,7 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <string.h> /* For the real memset prototype. */
|
||||
#include <sys/sysctl.h>
|
||||
#include <linux/sysctl.h>
|
||||
|
||||
#include <sysdep.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);
|
||||
}
|
||||
libc_hidden_def (__sysctl)
|
||||
weak_alias (__sysctl, sysctl)
|
||||
|
Loading…
Reference in New Issue
Block a user