From patchwork Mon Apr 23 22:36:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 134029 Delivered-To: patch@linaro.org Received: by 10.46.151.6 with SMTP id r6csp1531885lji; Mon, 23 Apr 2018 15:37:30 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+57r7XZqNWk9i+RGXDHoIm8rO4hbyYNIJPJrkeAexsd0K5hbO3Rvax6a4WR+yRgHOErcMx X-Received: by 10.98.104.199 with SMTP id d190mr21360029pfc.111.1524523050674; Mon, 23 Apr 2018 15:37:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524523050; cv=none; d=google.com; s=arc-20160816; b=0HQqT/o8cDZaQfjNnX/hbByyVA9D0jMaTdA5l/oxpdVkrigGp/VfoLuJq/+AzMHnT/ yPbUpbH6Ji9MGwfLUh4BIHyc7cf7xR6TwEwDj0oJK0GrApmztm/IqLGr2sC/m3+2VPsq G/o0qe+Fv+BEmkrApSc51ZZ+m7AC0OIXeOalVZ8hQClstiuI2eBK/YJbSt22zNT6+zT4 3Xi8lST59ObkaL+xQpFu3x1xCQ6nAKGAcuUC5lZxTOMdqnY2iS1zRgAMh9jpjVoIw8uy 3zMMhuTZ9oKdeuxEB7myWryaM5UDgq+GRW2suwNLhSoNqH8TWfSR8izwOAOyjpCIAR/F K+Yg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:date:subject:to:from:delivered-to:sender:list-help :list-post:list-archive:list-subscribe:list-unsubscribe:list-id :precedence:mailing-list:dkim-signature:domainkey-signature :arc-authentication-results; bh=1A/1fizJfRlfWP4qFe34fTggwO6Z0e36HQ9u56yioFo=; b=AxpgCNh9Fv+IOvYViVciK4T9AqVPcew7aYRQITcdlbgake1nzwGfa23mL1o+KeKqWq KFN5EQkmK8v1tlOMYnd6MSmq86XUS3CaBRSqbNDDSKD8MTupjveJeBRAJ2LT6lYgF/F1 akVz2sBdIUqv8ep6cdigFnL5QPZfFgPv7FNiStB7NabAgSbJSsImEZURK7P13Z3TwkB7 v215/EEVgERrIum6UiQA5BDU0ao2VM5bPbz2WXmWNlZcNI3hQkXzKRsGkk93YC0O6Stz A27tWxao5HlqifNOqW4nb8Y0BnGy5NlsdeGADJ9xJ6M1iTcU/eISGZupNYQ4ftam87fT 6UjA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=FUYhyuGo; spf=pass (google.com: domain of libc-alpha-return-91790-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-91790-patch=linaro.org@sourceware.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id z23-v6si12917925plo.597.2018.04.23.15.37.30 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 Apr 2018 15:37:30 -0700 (PDT) Received-SPF: pass (google.com: domain of libc-alpha-return-91790-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=FUYhyuGo; spf=pass (google.com: domain of libc-alpha-return-91790-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-91790-patch=linaro.org@sourceware.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id; q=dns; s= default; b=kx2IHNiwzw9Fg9jOFxrD6Hp3UZAmmXcjRRv0MJx7si3crzRvKRI81 qmsMg9e481mV9fMwYTaGMjrPOgTXtV/19DVbL52UJajMQk2LJKOsdwetH9sA94kl R/wWyDTD/slw3epcDq9a7oIXBZ1agqkhBm9ay/pA0LfTy3cPFT5iB4= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id; s=default; bh=PnQ0LsmjtMjr0vG5VK7YcNFniBs=; b=FUYhyuGoiTA3XYzeg8EVvh5hzA8G 7WTwVX2Ia2CVvzIB3ek0V1SAYbcfBgFlpQfSuPUM9gklLVoay493KgGryYJlw8tV DjzRwWqzqSRA1kGkOxUa3Rbe1MXGJveKb8PpNDApOniUB1xWnMh67t9IMs5Z2v+I CxDpF7KmARvqi/Q= Received: (qmail 34345 invoked by alias); 23 Apr 2018 22:37:11 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 34307 invoked by uid 89); 23 Apr 2018 22:37:10 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.4 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=articles, issuing, Articles X-HELO: mail-qk0-f196.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=1A/1fizJfRlfWP4qFe34fTggwO6Z0e36HQ9u56yioFo=; b=cj6gqw8Opgh+HUkJZxFbkHBc55MWyI9b6hZhxh0BxroEggpgX2RDwOokU4QrpkkRZA +broZ+dkNtzVdMar70/RNOYRlPNp2+8kOyT4pbxT4T+gSaqyFOFeMffH8QQaZEewpVgH txmjALjak0SfmqtE7kLhevMJUnoABBurviqMGlEYUZgqy0zDEbQvV4tuZLiKqp4ypRPj isqufxc8Xm7yD+pMNWhxusZGPQFWjwAVdp0nRRd5L2FF7JTs9UHMQcHpCf9cy9vBFqhI hw24ZN4QqgU9xu5dFTOSJmFwOw2lM4tFJo8tBAG+dG/umG7/RRbZB5r12knweTRWs+b+ yj+Q== X-Gm-Message-State: ALQs6tBrEPLdwRVLCjv/K5DHxhks3g8dxTeS35u8uTtRg6lx50F0G++2 Ny4OrS4Q8mcMpk7U3w1Mzh0xeMFUMkQ= X-Received: by 10.55.35.202 with SMTP id j193mr15004120qkj.196.1524523023647; Mon, 23 Apr 2018 15:37:03 -0700 (PDT) From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH 1/2] Deprecate sysctl syscall interface Date: Mon, 23 Apr 2018 19:36:57 -0300 Message-Id: <1524523018-7216-1-git-send-email-adhemerval.zanella@linaro.org> The sysctl syscall has been long deprecated [1] (since Linux 2.6.24) with its usage issues a kernel warning stating it. Also on GLIBC new portsi, which uses generic syscall interface, builds a stub version that returns ENOSYS (so new ports should not rely on it anyway and some kernel config do disable it by not setting CONFIG_SYSCTL_SYSCALL). Every interface is directly accessed through /proc/sys and the only real case scanarion I am aware is to have a fail-proof way to gather entropy in cases where /dev/urandom or /proc is not available. However, as noted previously, this is quite fragile (new ports do not provide it) and GLIBC now provides getentropy to this specific case (although it is only supported on Linux 3.17). If sysctl is stricly required, it still can be issues through syscall(). This patch deprecate sysctl interface by issuing ENOSYS as default and adds compat symbol for architectures which still defines __NR_sysctl. Checked on x86_64-linux-gnu and i686-linux-gnu. Also checked with a check-abi on all affected ABIs. * sysdeps/unix/sysv/linux/arm/ioperm.c (sysctl_call): New function. (init_iosys): Call syscall_call instead of sysctl. * sysdeps/unix/sysv/linux/generic/sysctl.c: Remove file. * sysdeps/unix/sysv/linux/sysctl.c: New file. * sysdeps/unix/sysv/linux/alpha/Versions [GLIBC_2.28] (sysctl): New symbol. * sysdeps/unix/sysv/linux/arm/Versions: Likewise. * sysdeps/unix/sysv/linux/i386/Versions: Likewise. * sysdeps/unix/sysv/linux/hppa/Versions:iLikewise. * sysdeps/unix/sysv/linux/ia64/Versions: Likewise. * sysdeps/unix/sysv/linux/powerpc/Versions: Likewise. * sysdeps/unix/sysv/linux/m68k/Versions: Likewise. * sysdeps/unix/sysv/linux/microblaze/Versions: Likewise. * sysdeps/unix/sysv/linux/mips/Versions: Likewise. * sysdeps/unix/sysv/linux/s390/Versions: Likewise. * sysdeps/unix/sysv/linux/sh/Versions: Likewise. * sysdeps/unix/sysv/linux/sparc/Versions: Likewise. * sysdeps/unix/sysv/linux/x86_64/Versions: Likewise. * sysdeps/unix/sysv/linux/alpha/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/hppa/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/ia64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/microblaze/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/sh/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/arm/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/i386/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/x86_64/64/libc.abilist: Likewise. [1] https://lwn.net/Articles/247243/ --- ChangeLog | 44 ++++++++++++++++++++++ sysdeps/unix/sysv/linux/alpha/Versions | 3 ++ sysdeps/unix/sysv/linux/alpha/libc.abilist | 2 + sysdeps/unix/sysv/linux/arm/Versions | 3 ++ sysdeps/unix/sysv/linux/arm/ioperm.c | 21 ++++++++++- sysdeps/unix/sysv/linux/arm/libc.abilist | 2 + sysdeps/unix/sysv/linux/generic/sysctl.c | 32 ---------------- sysdeps/unix/sysv/linux/hppa/Versions | 3 ++ sysdeps/unix/sysv/linux/hppa/libc.abilist | 2 + sysdeps/unix/sysv/linux/i386/Versions | 3 ++ sysdeps/unix/sysv/linux/i386/libc.abilist | 2 + sysdeps/unix/sysv/linux/ia64/Versions | 3 ++ sysdeps/unix/sysv/linux/ia64/libc.abilist | 2 + sysdeps/unix/sysv/linux/m68k/Versions | 3 ++ sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist | 2 + sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist | 2 + sysdeps/unix/sysv/linux/microblaze/Versions | 3 ++ sysdeps/unix/sysv/linux/microblaze/libc.abilist | 2 + sysdeps/unix/sysv/linux/mips/Versions | 3 ++ .../unix/sysv/linux/mips/mips32/fpu/libc.abilist | 2 + .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist | 2 + .../unix/sysv/linux/mips/mips64/n32/libc.abilist | 2 + .../unix/sysv/linux/mips/mips64/n64/libc.abilist | 2 + sysdeps/unix/sysv/linux/powerpc/Versions | 3 ++ .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist | 2 + .../linux/powerpc/powerpc32/nofpu/libc.abilist | 2 + .../sysv/linux/powerpc/powerpc64/libc-le.abilist | 2 + .../unix/sysv/linux/powerpc/powerpc64/libc.abilist | 2 + sysdeps/unix/sysv/linux/s390/Versions | 3 ++ sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist | 2 + sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist | 2 + sysdeps/unix/sysv/linux/sh/Versions | 3 ++ sysdeps/unix/sysv/linux/sh/libc.abilist | 2 + sysdeps/unix/sysv/linux/sparc/Versions | 3 ++ sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist | 2 + sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist | 2 + sysdeps/unix/sysv/linux/sysctl.c | 44 ++++++++++++++++------ sysdeps/unix/sysv/linux/x86_64/64/libc.abilist | 2 + sysdeps/unix/sysv/linux/x86_64/Versions | 3 ++ sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist | 1 + 40 files changed, 180 insertions(+), 45 deletions(-) delete mode 100644 sysdeps/unix/sysv/linux/generic/sysctl.c -- 2.7.4 diff --git a/sysdeps/unix/sysv/linux/alpha/Versions b/sysdeps/unix/sysv/linux/alpha/Versions index 3b7971c..da8b0c1 100644 --- a/sysdeps/unix/sysv/linux/alpha/Versions +++ b/sysdeps/unix/sysv/linux/alpha/Versions @@ -88,6 +88,9 @@ libc { GLIBC_2.27 { getrlimit; setrlimit; getrlimit64; setrlimit64; } + GLIBC_2.28 { + sysctl; + } GLIBC_PRIVATE { __libc_alpha_cache_shape; } diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist index 8674a87..09fc772 100644 --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist @@ -2054,6 +2054,8 @@ GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F GLIBC_2.27 wcstof64x F GLIBC_2.27 wcstof64x_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 __ctype_b_loc F GLIBC_2.3 __ctype_tolower_loc F diff --git a/sysdeps/unix/sysv/linux/arm/Versions b/sysdeps/unix/sysv/linux/arm/Versions index 7e5ba53..de5c1e9 100644 --- a/sysdeps/unix/sysv/linux/arm/Versions +++ b/sysdeps/unix/sysv/linux/arm/Versions @@ -10,6 +10,9 @@ libc { GLIBC_2.24 { recvmsg; sendmsg; } + GLIBC_2.28 { + sysctl; + } GLIBC_PRIVATE { # A copy of sigaction lives in libpthread, and needs these. __default_sa_restorer; __default_rt_sa_restorer; diff --git a/sysdeps/unix/sysv/linux/arm/ioperm.c b/sysdeps/unix/sysv/linux/arm/ioperm.c index 4c0bb63..0762475 100644 --- a/sysdeps/unix/sysv/linux/arm/ioperm.c +++ b/sysdeps/unix/sysv/linux/arm/ioperm.c @@ -61,14 +61,31 @@ static struct { */ static int +sysctl_call (int *name, int nlen, void *oldval, size_t *oldlenp, + void *newval, size_t newlen) +{ + struct kernel_sysctl_args + { + int *name; + int nlen; + void *oldval; + size_t *oldlenp; + void *newval; + size_t newlen; + unsigned long __unused[4]; + } args = { name, nlen, oldval, oldlenp, newval, newlen }; + return INLINE_SYSCALL_CALL (_sysctl, &args); +} + +static int init_iosys (void) { static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE }; static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT }; size_t len = sizeof(io.base); - if (! __sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0) - && ! __sysctl (ioshift_name, 3, &io.shift, &len, NULL, 0)) + if (! sysctl_call (iobase_name, 3, &io.io_base, &len, NULL, 0) + && ! sysctl_call (ioshift_name, 3, &io.shift, &len, NULL, 0)) { io.initdone = 1; return 0; diff --git a/sysdeps/unix/sysv/linux/arm/libc.abilist b/sysdeps/unix/sysv/linux/arm/libc.abilist index 044ec10..35741a8 100644 --- a/sysdeps/unix/sysv/linux/arm/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/libc.abilist @@ -130,6 +130,8 @@ GLIBC_2.27 wcstof32x F GLIBC_2.27 wcstof32x_l F GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 _Exit F GLIBC_2.4 _IO_2_1_stderr_ D 0xa0 diff --git a/sysdeps/unix/sysv/linux/generic/sysctl.c b/sysdeps/unix/sysv/linux/generic/sysctl.c deleted file mode 100644 index 61e7fa8..0000000 --- a/sysdeps/unix/sysv/linux/generic/sysctl.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 2011-2018 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - 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 - . */ - -#include - -#include -#include - -/* This deprecated syscall is no longer used (replaced with /proc/sys). */ -int -sysctl (int *name, int nlen, void *oldval, size_t *oldlenp, - void *newval, size_t newlen) -{ - __set_errno (ENOSYS); - return -1; -} -stub_warning (sysctl) diff --git a/sysdeps/unix/sysv/linux/hppa/Versions b/sysdeps/unix/sysv/linux/hppa/Versions index b5098b2..4cbc3cd 100644 --- a/sysdeps/unix/sysv/linux/hppa/Versions +++ b/sysdeps/unix/sysv/linux/hppa/Versions @@ -35,4 +35,7 @@ libc { GLIBC_2.19 { fanotify_mark; } + GLIBC_2.28 { + sysctl; + } } diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist index 2360130..1da5f49 100644 --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist @@ -1894,6 +1894,8 @@ GLIBC_2.27 wcstof32x F GLIBC_2.27 wcstof32x_l F GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 __ctype_b_loc F GLIBC_2.3 __ctype_tolower_loc F diff --git a/sysdeps/unix/sysv/linux/i386/Versions b/sysdeps/unix/sysv/linux/i386/Versions index b59ace4..b8679e1 100644 --- a/sysdeps/unix/sysv/linux/i386/Versions +++ b/sysdeps/unix/sysv/linux/i386/Versions @@ -45,6 +45,9 @@ libc { # f* fallocate64; } + GLIBC_2.28 { + sysctl; + } GLIBC_PRIVATE { __modify_ldt; __uname; } diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist index 39c993f..2a1c99c 100644 --- a/sysdeps/unix/sysv/linux/i386/libc.abilist +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist @@ -2064,6 +2064,8 @@ GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F GLIBC_2.27 wcstof64x F GLIBC_2.27 wcstof64x_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 __ctype_b_loc F GLIBC_2.3 __ctype_tolower_loc F diff --git a/sysdeps/unix/sysv/linux/ia64/Versions b/sysdeps/unix/sysv/linux/ia64/Versions index 116f4e8..3da728c 100644 --- a/sysdeps/unix/sysv/linux/ia64/Versions +++ b/sysdeps/unix/sysv/linux/ia64/Versions @@ -25,6 +25,9 @@ libc { GLIBC_2.24 { recvmsg; sendmsg; } + GLIBC_2.28 { + sysctl; + } } libpthread { GLIBC_2.3.3 { diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist index 68496aa..8b51692 100644 --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist @@ -1928,6 +1928,8 @@ GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F GLIBC_2.27 wcstof64x F GLIBC_2.27 wcstof64x_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 __ctype_b_loc F GLIBC_2.3 __ctype_tolower_loc F diff --git a/sysdeps/unix/sysv/linux/m68k/Versions b/sysdeps/unix/sysv/linux/m68k/Versions index 7ecc96e..93be63d 100644 --- a/sysdeps/unix/sysv/linux/m68k/Versions +++ b/sysdeps/unix/sysv/linux/m68k/Versions @@ -40,6 +40,9 @@ libc { GLIBC_2.12 { __m68k_read_tp; } + GLIBC_2.28 { + sysctl; + } GLIBC_PRIVATE { __vdso_atomic_cmpxchg_32; __vdso_atomic_barrier; } diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist index b676025..d26f322 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist @@ -131,6 +131,8 @@ GLIBC_2.27 wcstof32x F GLIBC_2.27 wcstof32x_l F GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.4 GLIBC_2.4 A GLIBC_2.4 _Exit F GLIBC_2.4 _IO_2_1_stderr_ D 0x98 diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist index cdd1df5..04dcf51 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist @@ -2008,6 +2008,8 @@ GLIBC_2.27 wcstof32x F GLIBC_2.27 wcstof32x_l F GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 __ctype_b_loc F GLIBC_2.3 __ctype_tolower_loc F diff --git a/sysdeps/unix/sysv/linux/microblaze/Versions b/sysdeps/unix/sysv/linux/microblaze/Versions index aa48a3c..d1ee89c 100644 --- a/sysdeps/unix/sysv/linux/microblaze/Versions +++ b/sysdeps/unix/sysv/linux/microblaze/Versions @@ -2,4 +2,7 @@ libc { GLIBC_2.18 { fallocate64; } + GLIBC_2.28 { + sysctl; + } } diff --git a/sysdeps/unix/sysv/linux/microblaze/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/libc.abilist index e4265fd..dd4656c 100644 --- a/sysdeps/unix/sysv/linux/microblaze/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/libc.abilist @@ -2129,3 +2129,5 @@ GLIBC_2.27 wcstof32x F GLIBC_2.27 wcstof32x_l F GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F diff --git a/sysdeps/unix/sysv/linux/mips/Versions b/sysdeps/unix/sysv/linux/mips/Versions index 453f276..ac26de3 100644 --- a/sysdeps/unix/sysv/linux/mips/Versions +++ b/sysdeps/unix/sysv/linux/mips/Versions @@ -37,6 +37,9 @@ libc { GLIBC_2.11 { fallocate64; } + GLIBC_2.28 { + sysctl; + } GLIBC_PRIVATE { # nptl/pthread_cond_timedwait.c uses INTERNAL_VSYSCALL(clock_gettime). __vdso_clock_gettime; diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist index 3a7e0b4..8283a0a 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist @@ -1983,6 +1983,8 @@ GLIBC_2.27 wcstof32x F GLIBC_2.27 wcstof32x_l F GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 __ctype_b_loc F GLIBC_2.3 __ctype_tolower_loc F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist index 5e80592..081fc77 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist @@ -1981,6 +1981,8 @@ GLIBC_2.27 wcstof32x F GLIBC_2.27 wcstof32x_l F GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 __ctype_b_loc F GLIBC_2.3 __ctype_tolower_loc F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist index 1973fac..f6b7502 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist @@ -1989,6 +1989,8 @@ GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F GLIBC_2.27 wcstof64x F GLIBC_2.27 wcstof64x_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 __ctype_b_loc F GLIBC_2.3 __ctype_tolower_loc F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist index 5e18ab8..abfd0e0 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist @@ -1984,6 +1984,8 @@ GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F GLIBC_2.27 wcstof64x F GLIBC_2.27 wcstof64x_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 __ctype_b_loc F GLIBC_2.3 __ctype_tolower_loc F diff --git a/sysdeps/unix/sysv/linux/powerpc/Versions b/sysdeps/unix/sysv/linux/powerpc/Versions index 8ebeea1..228f8f1 100644 --- a/sysdeps/unix/sysv/linux/powerpc/Versions +++ b/sysdeps/unix/sysv/linux/powerpc/Versions @@ -5,6 +5,9 @@ ld { } } libc { + GLIBC_2.28 { + sysctl; + } GLIBC_PRIVATE { __vdso_get_tbfreq; __vdso_clock_gettime; diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist index 676aa50..836fdab 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist @@ -2012,6 +2012,8 @@ GLIBC_2.27 wcstof32x F GLIBC_2.27 wcstof32x_l F GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 __ctype_b_loc F GLIBC_2.3 __ctype_tolower_loc F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist index 2016c7c..e68ef0e 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist @@ -2017,6 +2017,8 @@ GLIBC_2.27 wcstof32x F GLIBC_2.27 wcstof32x_l F GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 __ctype_b_loc F GLIBC_2.3 __ctype_tolower_loc F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist index 3d19e38..e15404f 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist @@ -2229,3 +2229,5 @@ GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F GLIBC_2.27 wcstof64x F GLIBC_2.27 wcstof64x_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist index c57ab21..5983ac1 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist @@ -131,6 +131,8 @@ GLIBC_2.27 wcstof32x F GLIBC_2.27 wcstof32x_l F GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 _Exit F GLIBC_2.3 _IO_2_1_stderr_ D 0xe0 diff --git a/sysdeps/unix/sysv/linux/s390/Versions b/sysdeps/unix/sysv/linux/s390/Versions index 55518a7..640579d 100644 --- a/sysdeps/unix/sysv/linux/s390/Versions +++ b/sysdeps/unix/sysv/linux/s390/Versions @@ -3,6 +3,9 @@ libc { __longjmp_chk; getcontext; } + GLIBC_2.28 { + sysctl; + } GLIBC_PRIVATE { __vdso_clock_gettime; __vdso_clock_getres; diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist index 2590372..fad7b94 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist @@ -2022,6 +2022,8 @@ GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F GLIBC_2.27 wcstof64x F GLIBC_2.27 wcstof64x_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 __ctype_b_loc F GLIBC_2.3 __ctype_tolower_loc F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist index 5d6800c..8e88894 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist @@ -1923,6 +1923,8 @@ GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F GLIBC_2.27 wcstof64x F GLIBC_2.27 wcstof64x_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 __ctype_b_loc F GLIBC_2.3 __ctype_tolower_loc F diff --git a/sysdeps/unix/sysv/linux/sh/Versions b/sysdeps/unix/sysv/linux/sh/Versions index e0938c4..c0bc2da 100644 --- a/sysdeps/unix/sysv/linux/sh/Versions +++ b/sysdeps/unix/sysv/linux/sh/Versions @@ -30,4 +30,7 @@ libc { GLIBC_2.16 { fanotify_mark; } + GLIBC_2.28 { + sysctl; + } } diff --git a/sysdeps/unix/sysv/linux/sh/libc.abilist b/sysdeps/unix/sysv/linux/sh/libc.abilist index c04872c..4b8f56f 100644 --- a/sysdeps/unix/sysv/linux/sh/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/libc.abilist @@ -1898,6 +1898,8 @@ GLIBC_2.27 wcstof32x F GLIBC_2.27 wcstof32x_l F GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 __ctype_b_loc F GLIBC_2.3 __ctype_tolower_loc F diff --git a/sysdeps/unix/sysv/linux/sparc/Versions b/sysdeps/unix/sysv/linux/sparc/Versions index 4dc1cd7..49c18b1 100644 --- a/sysdeps/unix/sysv/linux/sparc/Versions +++ b/sysdeps/unix/sysv/linux/sparc/Versions @@ -29,6 +29,9 @@ libc { __getshmlba; } + GLIBC_2.28 { + sysctl; + } } libpthread { diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist index 85cbe30..5bb6028 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist @@ -2015,6 +2015,8 @@ GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F GLIBC_2.27 wcstof64x F GLIBC_2.27 wcstof64x_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 __ctype_b_loc F GLIBC_2.3 __ctype_tolower_loc F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist index f7a1ab8..1ea1a9e 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist @@ -1952,6 +1952,8 @@ GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F GLIBC_2.27 wcstof64x F GLIBC_2.27 wcstof64x_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 __ctype_b_loc F GLIBC_2.3 __ctype_tolower_loc F diff --git a/sysdeps/unix/sysv/linux/sysctl.c b/sysdeps/unix/sysv/linux/sysctl.c index bb5e31a..c73290b 100644 --- a/sysdeps/unix/sysv/linux/sysctl.c +++ b/sysdeps/unix/sysv/linux/sysctl.c @@ -16,18 +16,37 @@ License along with the GNU C Library; if not, see . */ +#include #include -#include /* For the real memset prototype. */ -#include - -#include -#include +#include +/* This deprecated syscall is no longer used (replaced with /proc/sys). */ int -__sysctl (int *name, int nlen, void *oldval, size_t *oldlenp, - void *newval, size_t newlen) +__deprecated_sysctl (int *name, int nlen, void *oldval, size_t *oldlenp, + void *newval, size_t newlen) { - struct __sysctl_args args = + __set_errno (ENOSYS); + return -1; +} +#ifndef __NR__sysctl +weak_alias (__deprecated_sysctl, sysctl) +#else +versioned_symbol (libc, __deprecated_sysctl, sysctl, GLIBC_2_28); +# if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_28) +int +__old_sysctl (int *name, int nlen, void *oldval, size_t *oldlenp, + void *newval, size_t newlen) +{ + struct kernel_sysctl_args + { + int *name; + int nlen; + void *oldval; + size_t *oldlenp; + void *newval; + size_t newlen; + unsigned long __unused[4]; + } args = { .name = name, .nlen = nlen, @@ -37,7 +56,10 @@ __sysctl (int *name, int nlen, void *oldval, size_t *oldlenp, .newlen = newlen }; - return INLINE_SYSCALL (_sysctl, 1, &args); + return INLINE_SYSCALL_CALL (_sysctl, &args); } -libc_hidden_def (__sysctl) -weak_alias (__sysctl, sysctl) +compat_symbol (libc, __old_sysctl, sysctl, GLIBC_2_0); +strong_alias (__old_sysctl, __sysctl) +# endif +#endif +stub_warning (sysctl) diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist index 2a3cc40..576d3bd 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist @@ -1905,6 +1905,8 @@ GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F GLIBC_2.27 wcstof64x F GLIBC_2.27 wcstof64x_l F +GLIBC_2.28 GLIBC_2.28 A +GLIBC_2.28 sysctl F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 __ctype_b_loc F GLIBC_2.3 __ctype_tolower_loc F diff --git a/sysdeps/unix/sysv/linux/x86_64/Versions b/sysdeps/unix/sysv/linux/x86_64/Versions index 2a7ed28..f76a5ff 100644 --- a/sysdeps/unix/sysv/linux/x86_64/Versions +++ b/sysdeps/unix/sysv/linux/x86_64/Versions @@ -6,6 +6,9 @@ libc { modify_ldt; } + GLIBC_2.28 { + sysctl; + } } librt { diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist index 8bc16b9..31d612f 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist @@ -2148,3 +2148,4 @@ GLIBC_2.27 wcstof64 F GLIBC_2.27 wcstof64_l F GLIBC_2.27 wcstof64x F GLIBC_2.27 wcstof64x_l F +GLIBC_2.28 GLIBC_2.28 A