From patchwork Fri Oct 11 19:15:52 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 176028 Delivered-To: patch@linaro.org Received: by 2002:a92:7e96:0:0:0:0:0 with SMTP id q22csp1171840ill; Fri, 11 Oct 2019 12:16:25 -0700 (PDT) X-Google-Smtp-Source: APXvYqzMPbjupvOkwIpiq78yVQabN7pQ2qdlcdrPlGR6kDNyzCef6W9mfUKOWwGM42E8H/fnAbUH X-Received: by 2002:a17:906:520a:: with SMTP id g10mr15369455ejm.85.1570821385711; Fri, 11 Oct 2019 12:16:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570821385; cv=none; d=google.com; s=arc-20160816; b=cCGtVZrgtj91bzKZ/zxhCqH6od2HnadqqhwmrUxczSOtyS+GTNCeX2qgzxbijtVCn3 E/cltkRZJVvajaZgJGzknxF2DibQjAoHW6+6znFtjhsO/ObcBt++2ZnVl60z21nGki5R f3ft2xcL37WWqwpzvdrGtmPwecwGyRdOTZCYXeHj1H/Hljw61BRY+qgBXOqc7xD1NJCw HZ04fyt/SjXaexiNnRpEuvo1Dh8kOsrLDQNflhx+0sB0dH7Ic0QHfVees/bdvrSPgCxR D9YpvACaq3tmlPay2KhYkfZeo40UegLNzGu4TXv56j1cCEguqzC8FIzvNx4x0JRWNhUt 1BoA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:date:subject:cc:to:from:dkim-signature:delivered-to :sender:list-help:list-post:list-archive:list-subscribe :list-unsubscribe:list-id:precedence:mailing-list:dkim-signature :domainkey-signature; bh=DIkUAopx2giCnFW47p4R+6/ec4A8EJQ9AWGT/n+f598=; b=rDHn5BtZLjvmVY3HzPBpLloxZS8l3JgBp8crHLEN8kvgX15i6YNWoFYKzg4m1XVR7V kCvxT6OILdtLypUplSYICy07U45yEpq00MGQwoUfRE/9/o5lihv0ihfkz/z5EkzPIvKl TY3o/cQV+ZjnsMxsMyW2pSS6XLqRmkxnIO3d94jWNgN+cvayhWnZdsAHZYHDH/HyL9Hr fFEVpFIgcJfBJymbwnvtNHBcKljYT7/rnW+1GsWn0EpT94mltC09bY9FF3r90v2akboT PqJRUYsdBXa1TKqj7jrD8Qay8v0K28vHEEmth/cK8BdPBQkdpGMQhJOGULMpHYzXr6Ra 99Gw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=q6TKYP71; dkim=pass header.i=@linaro.org header.s=google header.b=XYDecINt; spf=pass (google.com: domain of libc-alpha-return-105882-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom="libc-alpha-return-105882-patch=linaro.org@sourceware.org"; dmarc=pass (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 si6si5992656ejb.195.2019.10.11.12.16.24 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 11 Oct 2019 12:16:25 -0700 (PDT) Received-SPF: pass (google.com: domain of libc-alpha-return-105882-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=q6TKYP71; dkim=pass header.i=@linaro.org header.s=google header.b=XYDecINt; spf=pass (google.com: domain of libc-alpha-return-105882-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom="libc-alpha-return-105882-patch=linaro.org@sourceware.org"; dmarc=pass (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:cc:subject:date:message-id; q=dns; s= default; b=qq3p9jVeQZY7SbKejucL2srHNidqkcLv6jP9Ry6j3LR6Qgr8Qnush JQycGpY6E6X230GIRaznBiIpcbcchkdka5bkwp+hu+SPoktxtK9SGjPIHYM6LPLB 1Z/kPkr0xCF0vkcFzINRAMIyaXqYuhrq2mObdVaJee+JCJIBwwen4U= 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:cc:subject:date:message-id; s=default; bh=cKtj//WuHz9KtK1pgjxzxAVAgzU=; b=q6TKYP71SmCM9vM8fORqcOcvdSB2 Cq1Kb5mrfxbd4As09A5vC+tM9MoqTyWObh1ggmzSit1iLxHJt2r02eYV1x1jhau+ jU65PvNePxfFZ0byq59JqRtVxATv54nWSKw8VfW3A5TBXCL6dS/vXCMyQrTzTzTJ D4BuH/U+0LoOsUs= Received: (qmail 23289 invoked by alias); 11 Oct 2019 19:16:07 -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 23254 invoked by uid 89); 11 Oct 2019 19:16:04 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-21.1 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.1 spammy=1627, SPARC X-HELO: mail-qk1-f175.google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=DIkUAopx2giCnFW47p4R+6/ec4A8EJQ9AWGT/n+f598=; b=XYDecINtmkAVDTwzZoR/p2ZbJd3VDAxAmwVowoeTnLWA2ImvRQPN0WBHyWPI7oEmTI fHsdwJ9tCaKc3u6v/SG6sLaibxD7hAxVxI9zkWxMcA69ovteUSfsvJ/1TuVpUbV8UVNz lq1ng/nAuw/jbfY+8aQvqm1yYpgJ4+Fw8zGnzxQvPZtf7twaaaF4V47qks61nRKzJ8uJ YWOUssKNBokvOZUMInDSdft3Wpd6mGovrzZ+AQ62/MRWQGMr1P3nD5LYQkGdG27Vf9OR 8t2mI2edbJt833JFvcJ73dGI5BCQwuljsL2kaU5Vt3UPu4yBKMkbinPAD38VKABltc9b OGwA== Return-Path: From: Adhemerval Zanella To: libc-alpha@sourceware.org Cc: "Paul A . Clarke" Subject: [PATCH 1/3] ipc: Refactor sysvipc internal definitions Date: Fri, 11 Oct 2019 16:15:52 -0300 Message-Id: <20191011191554.10870-1-adhemerval.zanella@linaro.org> This patch refactor the internal sysvipc in two main points: 1. Add a new __ASSUME_SYSVIPC_DEFAULT_IPC_64 to infer the __IPC_64 value in wire-up or ipc syscall. The defaut value assumed for __IPC_64 is also changed from 0x100 to 0x0, aligning with Linux generic UAPI. The idea is to simplify the Linux 5.1 wire-up for sysvipc syscalls for some 32-bit ABIs (which expectes __IPC_64 being 0x0) and simplify new ports (which would not require add a ipc_priv.h to override the __IPC_64 value). 2. It removes some duplicated definition from sysvipc compat code at ipc_priv.h. The idea is also to make it simpler to enable the new wireup sysvipc on Linux v5.1. There is no semantic change expected on any port. Checked with a build against all affected ABIs. * sysdeps/unix/sysv/linux/ipc_priv.h (__OLD_IPC_ID_TYPE, __OLD_IPC_MODE_TYPE, __OLD_IPC_SEQ_TYPE): Define. (__old_ipc_perm): Use the new defines. * sysdeps/unix/sysv/linux/alpha/ipc_priv.h (__OLD_IPC_ID_TYPE, __OLD_IPC_MODE_TYPE, __OLD_IPC_SEQ_TYPE): Define. (__old_ipc_perm): Use the new defines. * sysdeps/unix/sysv/linux/mips/mips64/ipc_priv.h (__OLD_IPC_ID_TYPE, __OLD_IPC_MODE_TYPE, __OLD_IPC_SEQ_TYPE): Define. (__old_ipc_perm): Use the new defines. * sysdeps/unix/sysv/linux/powerpc/ipc_priv.h (__OLD_IPC_ID_TYPE, __OLD_IPC_MODE_TYPE, __OLD_IPC_SEQ_TYPE): Define. (__old_ipc_perm): Use the new defines. * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_SYSVIPC_DEFAULT_IPC_64): Define. * sysdeps/unix/sysv/linux/alpha/kernel-features.h (__ASSUME_SYSVIPC_DEFAULT_IPC_64): Undefine. * sysdeps/unix/sysv/linux/arm/kernel-features.h (__ASSUME_SYSVIPC_DEFAULT_IPC_64): Likewise. * sysdeps/unix/sysv/linux/i386/kernel-features.h (__ASSUME_SYSVIPC_DEFAULT_IPC_64): Likewise. * sysdeps/unix/sysv/linux/m68k/kernel-features.h (__ASSUME_SYSVIPC_DEFAULT_IPC_64): Likewise. * sysdeps/unix/sysv/linux/mips/kernel-features.h (__ASSUME_SYSVIPC_DEFAULT_IPC_64): Likewise. * sysdeps/unix/sysv/linux/microblaze/kernel-features.h (__ASSUME_SYSVIPC_DEFAULT_IPC_64): Likewise. * sysdeps/unix/sysv/linux/powerpc/kernel-features.h (__ASSUME_SYSVIPC_DEFAULT_IPC_64): Likewise. * sysdeps/unix/sysv/linux/s390/kernel-features.h (__ASSUME_SYSVIPC_DEFAULT_IPC_64): Likewise. * sysdeps/unix/sysv/linux/sh/kernel-features.h (__ASSUME_SYSVIPC_DEFAULT_IPC_64): Likewise. * sysdeps/unix/sysv/linux/sparc/kernel-features.h [!__arch64__] (__ASSUME_SYSVIPC_DEFAULT_IPC_64): Likewise. * sysdeps/unix/sysv/linux/nios2/kernel-features.h: New file. * sysdeps/unix/sysv/linux/hppa/ipc_priv.h: Remove file. * sysdeps/unix/sysv/linux/ia64/ipc_priv.h: Likewise. * sysdeps/unix/sysv/linux/nios2/ipc_priv.h: Likewise. * sysdeps/unix/sysv/linux/csky/ipc_priv.h: Likewise. * sysdeps/unix/sysv/linux/riscv/ipc_priv.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/ipc_priv.h: Likewise. * sysdeps/unix/sysv/linux/x86_64/ipc_priv.h: Likewise. --- sysdeps/unix/sysv/linux/alpha/ipc_priv.h | 18 +++-------- .../unix/sysv/linux/alpha/kernel-features.h | 3 ++ sysdeps/unix/sysv/linux/arm/kernel-features.h | 2 ++ sysdeps/unix/sysv/linux/hppa/ipc_priv.h | 21 ------------ .../unix/sysv/linux/i386/kernel-features.h | 1 + sysdeps/unix/sysv/linux/ia64/ipc_priv.h | 21 ------------ sysdeps/unix/sysv/linux/ipc_priv.h | 31 +++++++++++++----- sysdeps/unix/sysv/linux/kernel-features.h | 3 ++ .../unix/sysv/linux/m68k/kernel-features.h | 1 + .../sysv/linux/microblaze/kernel-features.h | 1 + .../unix/sysv/linux/mips/kernel-features.h | 2 ++ .../unix/sysv/linux/mips/mips64/ipc_priv.h | 18 +++-------- sysdeps/unix/sysv/linux/nios2/ipc_priv.h | 21 ------------ .../ipc_priv.h => nios2/kernel-features.h} | 9 +++--- sysdeps/unix/sysv/linux/powerpc/ipc_priv.h | 28 +++------------- .../unix/sysv/linux/powerpc/kernel-features.h | 1 + sysdeps/unix/sysv/linux/riscv/ipc_priv.h | 21 ------------ .../unix/sysv/linux/s390/kernel-features.h | 1 + sysdeps/unix/sysv/linux/sh/kernel-features.h | 1 + .../unix/sysv/linux/sparc/kernel-features.h | 3 ++ .../unix/sysv/linux/sparc/sparc64/ipc_priv.h | 20 ++++-------- sysdeps/unix/sysv/linux/x86_64/ipc_priv.h | 32 ------------------- 22 files changed, 65 insertions(+), 194 deletions(-) delete mode 100644 sysdeps/unix/sysv/linux/hppa/ipc_priv.h delete mode 100644 sysdeps/unix/sysv/linux/ia64/ipc_priv.h delete mode 100644 sysdeps/unix/sysv/linux/nios2/ipc_priv.h rename sysdeps/unix/sysv/linux/{csky/ipc_priv.h => nios2/kernel-features.h} (75%) delete mode 100644 sysdeps/unix/sysv/linux/riscv/ipc_priv.h delete mode 100644 sysdeps/unix/sysv/linux/x86_64/ipc_priv.h -- 2.17.1 diff --git a/sysdeps/unix/sysv/linux/alpha/ipc_priv.h b/sysdeps/unix/sysv/linux/alpha/ipc_priv.h index 881d943063..0bf9da5694 100644 --- a/sysdeps/unix/sysv/linux/alpha/ipc_priv.h +++ b/sysdeps/unix/sysv/linux/alpha/ipc_priv.h @@ -16,17 +16,7 @@ License along with the GNU C Library; if not, see . */ -#include /* For __key_t */ - -#define __IPC_64 0x100 - -struct __old_ipc_perm -{ - __key_t __key; /* Key. */ - unsigned int uid; /* Owner's user ID. */ - unsigned int gid; /* Owner's group ID. */ - unsigned int cuid; /* Creator's user ID. */ - unsigned int cgid; /* Creator's group ID. */ - unsigned int mode; /* Read/write permission. */ - unsigned short int __seq; /* Sequence number. */ -}; +#define __OLD_IPC_ID_TYPE unsigned int +#define __OLD_IPC_MODE_TYPE unsigned int +#define __OLD_IPC_SEQ_TYPE unsigned short int +#include diff --git a/sysdeps/unix/sysv/linux/alpha/kernel-features.h b/sysdeps/unix/sysv/linux/alpha/kernel-features.h index 3928b4b62c..ac127adff7 100644 --- a/sysdeps/unix/sysv/linux/alpha/kernel-features.h +++ b/sysdeps/unix/sysv/linux/alpha/kernel-features.h @@ -52,4 +52,7 @@ # undef __ASSUME_STATX #endif +/* Alpha support old sysvipc even being a 64-bit architecture. */ +#undef __ASSUME_SYSVIPC_DEFAULT_IPC_64 + #endif /* _KERNEL_FEATURES_H */ diff --git a/sysdeps/unix/sysv/linux/arm/kernel-features.h b/sysdeps/unix/sysv/linux/arm/kernel-features.h index 6b32970e2b..d66f3a4ab7 100644 --- a/sysdeps/unix/sysv/linux/arm/kernel-features.h +++ b/sysdeps/unix/sysv/linux/arm/kernel-features.h @@ -54,3 +54,5 @@ #if __BYTE_ORDER == __BIG_ENDIAN # define __ASSUME_SYSVIPC_BROKEN_MODE_T #endif + +#undef __ASSUME_SYSVIPC_DEFAULT_IPC_64 diff --git a/sysdeps/unix/sysv/linux/hppa/ipc_priv.h b/sysdeps/unix/sysv/linux/hppa/ipc_priv.h deleted file mode 100644 index a52e2c7b37..0000000000 --- a/sysdeps/unix/sysv/linux/hppa/ipc_priv.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Old SysV permission definition for Linux. Hppa version. - Copyright (C) 2017-2019 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 - . */ - -#include /* For __key_t */ - -#define __IPC_64 0x0 diff --git a/sysdeps/unix/sysv/linux/i386/kernel-features.h b/sysdeps/unix/sysv/linux/i386/kernel-features.h index 8e982c41e6..33ba18e791 100644 --- a/sysdeps/unix/sysv/linux/i386/kernel-features.h +++ b/sysdeps/unix/sysv/linux/i386/kernel-features.h @@ -45,6 +45,7 @@ /* i686 only supports ipc syscall. */ #undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS +#undef __ASSUME_SYSVIPC_DEFAULT_IPC_64 #undef __ASSUME_CLONE_DEFAULT #define __ASSUME_CLONE_BACKWARDS 1 diff --git a/sysdeps/unix/sysv/linux/ia64/ipc_priv.h b/sysdeps/unix/sysv/linux/ia64/ipc_priv.h deleted file mode 100644 index 29451a379a..0000000000 --- a/sysdeps/unix/sysv/linux/ia64/ipc_priv.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Old SysV permission definition for Linux. IA64 version. - Copyright (C) 2017-2019 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 - . */ - -#include /* For __key_t */ - -#define __IPC_64 0x0 diff --git a/sysdeps/unix/sysv/linux/ipc_priv.h b/sysdeps/unix/sysv/linux/ipc_priv.h index deae555bfb..20c6873d94 100644 --- a/sysdeps/unix/sysv/linux/ipc_priv.h +++ b/sysdeps/unix/sysv/linux/ipc_priv.h @@ -17,18 +17,33 @@ . */ #include /* For __key_t */ - -#define __IPC_64 0x100 +#include + +#ifdef __ASSUME_SYSVIPC_DEFAULT_IPC_64 +# define __IPC_64 0x0 +#else +# define __IPC_64 0x100 +#endif + +#ifndef __OLD_IPC_ID_TYPE +# define __OLD_IPC_ID_TYPE unsigned short int +#endif +#ifndef __OLD_IPC_MODE_TYPE +# define __OLD_IPC_MODE_TYPE unsigned short int +#endif +#ifndef __OLD_IPC_SEQ_TYPE +# define __OLD_IPC_SEQ_TYPE unsigned short int +#endif struct __old_ipc_perm { __key_t __key; /* Key. */ - unsigned short int uid; /* Owner's user ID. */ - unsigned short int gid; /* Owner's group ID. */ - unsigned short int cuid; /* Creator's user ID. */ - unsigned short int cgid; /* Creator's group ID. */ - unsigned short int mode; /* Read/write permission. */ - unsigned short int __seq; /* Sequence number. */ + __OLD_IPC_ID_TYPE uid; /* Owner's user ID. */ + __OLD_IPC_ID_TYPE gid; /* Owner's group ID. */ + __OLD_IPC_ID_TYPE cuid; /* Creator's user ID. */ + __OLD_IPC_ID_TYPE cgid; /* Creator's group ID. */ + __OLD_IPC_MODE_TYPE mode; /* Read/write permission. */ + __OLD_IPC_SEQ_TYPE __seq; /* Sequence number. */ }; #define SEMCTL_ARG_ADDRESS(__arg) &__arg.array diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index 7305686081..e6be76ff46 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h @@ -85,6 +85,9 @@ /* Support for SysV IPC through wired syscalls. All supported architectures either support ipc syscall and/or all the ipc correspondent syscalls. */ #define __ASSUME_DIRECT_SYSVIPC_SYSCALLS 1 +/* The generic default __IPC_64 value is 0x0, however some architectures + require a different value of 0x100. */ +#define __ASSUME_SYSVIPC_DEFAULT_IPC_64 1 /* All supported architectures reserve a 32-bit for MODE field in sysvipc ipc_perm. However, some kernel ABI interfaces still expect a 16-bit diff --git a/sysdeps/unix/sysv/linux/m68k/kernel-features.h b/sysdeps/unix/sysv/linux/m68k/kernel-features.h index becc05d4dd..7ff9b5e28d 100644 --- a/sysdeps/unix/sysv/linux/m68k/kernel-features.h +++ b/sysdeps/unix/sysv/linux/m68k/kernel-features.h @@ -53,3 +53,4 @@ /* m68k only supports ipc syscall. */ #undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS #define __ASSUME_SYSVIPC_BROKEN_MODE_T +#undef __ASSUME_SYSVIPC_DEFAULT_IPC_64 diff --git a/sysdeps/unix/sysv/linux/microblaze/kernel-features.h b/sysdeps/unix/sysv/linux/microblaze/kernel-features.h index 19c77a42bd..2dd9810f93 100644 --- a/sysdeps/unix/sysv/linux/microblaze/kernel-features.h +++ b/sysdeps/unix/sysv/linux/microblaze/kernel-features.h @@ -72,3 +72,4 @@ #if __BYTE_ORDER == __BIG_ENDIAN # define __ASSUME_SYSVIPC_BROKEN_MODE_T #endif +#undef __ASSUME_SYSVIPC_DEFAULT_IPC_64 diff --git a/sysdeps/unix/sysv/linux/mips/kernel-features.h b/sysdeps/unix/sysv/linux/mips/kernel-features.h index a284417253..7123b362ee 100644 --- a/sysdeps/unix/sysv/linux/mips/kernel-features.h +++ b/sysdeps/unix/sysv/linux/mips/kernel-features.h @@ -50,3 +50,5 @@ #undef __ASSUME_CLONE_DEFAULT #define __ASSUME_CLONE_BACKWARDS 1 + +#undef __ASSUME_SYSVIPC_DEFAULT_IPC_64 diff --git a/sysdeps/unix/sysv/linux/mips/mips64/ipc_priv.h b/sysdeps/unix/sysv/linux/mips/mips64/ipc_priv.h index 10d5c52dd0..459ee3d2e7 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/ipc_priv.h +++ b/sysdeps/unix/sysv/linux/mips/mips64/ipc_priv.h @@ -16,17 +16,7 @@ License along with the GNU C Library; if not, see . */ -#include - -#define __IPC_64 0x100 - -struct __old_ipc_perm -{ - __key_t __key; /* Key. */ - int uid; /* Owner's user ID. */ - int gid; /* Owner's group ID. */ - int cuid; /* Creator's user ID. */ - int cgid; /* Creator's group ID. */ - int mode; /* Read/write permission. */ - unsigned short int __seq; /* Sequence number. */ -}; +#define __OLD_IPC_ID_TYPE int +#define __OLD_IPC_MODE_TYPE int +#define __OLD_IPC_SEQ_TYPE unsigned short int +#include diff --git a/sysdeps/unix/sysv/linux/nios2/ipc_priv.h b/sysdeps/unix/sysv/linux/nios2/ipc_priv.h deleted file mode 100644 index 7e15313999..0000000000 --- a/sysdeps/unix/sysv/linux/nios2/ipc_priv.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Old SysV permission definition for Linux. Nios II version. - Copyright (C) 2017-2019 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 - . */ - -#include /* For __key_t */ - -#define __IPC_64 0x0 diff --git a/sysdeps/unix/sysv/linux/csky/ipc_priv.h b/sysdeps/unix/sysv/linux/nios2/kernel-features.h similarity index 75% rename from sysdeps/unix/sysv/linux/csky/ipc_priv.h rename to sysdeps/unix/sysv/linux/nios2/kernel-features.h index e8e8a256ea..c95e7051d9 100644 --- a/sysdeps/unix/sysv/linux/csky/ipc_priv.h +++ b/sysdeps/unix/sysv/linux/nios2/kernel-features.h @@ -1,5 +1,6 @@ -/* Old SysV permission definition for Linux. C-SKY version. - Copyright (C) 2017-2019 Free Software Foundation, Inc. +/* Set flags signalling availability of kernel features based on given + kernel version number. NIOS2 version. + Copyright (C) 2019 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 @@ -16,6 +17,6 @@ License along with the GNU C Library; if not, see . */ -#include /* For __key_t */ +#include_next -#define __IPC_64 0x0 +#undef __ASSUME_SYSVIPC_DEFAULT_IPC_64 diff --git a/sysdeps/unix/sysv/linux/powerpc/ipc_priv.h b/sysdeps/unix/sysv/linux/powerpc/ipc_priv.h index 96372bc9ad..a8ebf23cd2 100644 --- a/sysdeps/unix/sysv/linux/powerpc/ipc_priv.h +++ b/sysdeps/unix/sysv/linux/powerpc/ipc_priv.h @@ -16,27 +16,7 @@ License along with the GNU C Library; if not, see . */ -#include /* For __key_t */ - -#define __IPC_64 0x100 - -struct __old_ipc_perm -{ - __key_t __key; /* Key. */ - unsigned int uid; /* Owner's user ID. */ - unsigned int gid; /* Owner's group ID. */ - unsigned int cuid; /* Creator's user ID. */ - unsigned int cgid; /* Creator's group ID. */ - unsigned int mode; /* Read/write permission. */ - unsigned short int __seq; /* Sequence number. */ -}; - -#define SEMCTL_ARG_ADDRESS(__arg) &__arg.array - -#define MSGRCV_ARGS(__msgp, __msgtyp) \ - ((long int []){ (long int) __msgp, __msgtyp }) - -#define SEMTIMEDOP_IPC_ARGS(__nsops, __sops, __timeout) \ - (__nsops), 0, (__sops), (__timeout) - -#include +#define __OLD_IPC_ID_TYPE unsigned int +#define __OLD_IPC_MODE_TYPE unsigned int +#define __OLD_IPC_SEQ_TYPE unsigned short int +#include diff --git a/sysdeps/unix/sysv/linux/powerpc/kernel-features.h b/sysdeps/unix/sysv/linux/powerpc/kernel-features.h index d177a91ab3..b93f7f8f13 100644 --- a/sysdeps/unix/sysv/linux/powerpc/kernel-features.h +++ b/sysdeps/unix/sysv/linux/powerpc/kernel-features.h @@ -46,6 +46,7 @@ /* powerpc only supports ipc syscall. */ #undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS +#undef __ASSUME_SYSVIPC_DEFAULT_IPC_64 #undef __ASSUME_CLONE_DEFAULT #define __ASSUME_CLONE_BACKWARDS 1 diff --git a/sysdeps/unix/sysv/linux/riscv/ipc_priv.h b/sysdeps/unix/sysv/linux/riscv/ipc_priv.h deleted file mode 100644 index dd755a9f2c..0000000000 --- a/sysdeps/unix/sysv/linux/riscv/ipc_priv.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Old SysV permission definition for Linux. RISC-V version. - Copyright (C) 2018-2019 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 - . */ - -#include /* For __key_t */ - -#define __IPC_64 0x0 diff --git a/sysdeps/unix/sysv/linux/s390/kernel-features.h b/sysdeps/unix/sysv/linux/s390/kernel-features.h index 6dca32c6c7..f1f8dad305 100644 --- a/sysdeps/unix/sysv/linux/s390/kernel-features.h +++ b/sysdeps/unix/sysv/linux/s390/kernel-features.h @@ -50,6 +50,7 @@ #ifndef __s390x__ # define __ASSUME_SYSVIPC_BROKEN_MODE_T #endif +#undef __ASSUME_SYSVIPC_DEFAULT_IPC_64 #undef __ASSUME_CLONE_DEFAULT #define __ASSUME_CLONE_BACKWARDS2 diff --git a/sysdeps/unix/sysv/linux/sh/kernel-features.h b/sysdeps/unix/sysv/linux/sh/kernel-features.h index fae54c8df5..dce9d41653 100644 --- a/sysdeps/unix/sysv/linux/sh/kernel-features.h +++ b/sysdeps/unix/sysv/linux/sh/kernel-features.h @@ -48,6 +48,7 @@ #if __BYTE_ORDER == __BIG_ENDIAN # define __ASSUME_SYSVIPC_BROKEN_MODE_T #endif +#undef __ASSUME_SYSVIPC_DEFAULT_IPC_64 /* Support for several syscalls was added in 4.8. */ #if __LINUX_KERNEL_VERSION < 0x040800 diff --git a/sysdeps/unix/sysv/linux/sparc/kernel-features.h b/sysdeps/unix/sysv/linux/sparc/kernel-features.h index c523461d95..25194117f6 100644 --- a/sysdeps/unix/sysv/linux/sparc/kernel-features.h +++ b/sysdeps/unix/sysv/linux/sparc/kernel-features.h @@ -60,6 +60,9 @@ /* sparc only supports ipc syscall. */ #undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS +#ifndef __arch64__ +# undef __ASSUME_SYSVIPC_DEFAULT_IPC_64 +#endif /* Support for the renameat2 syscall was added in 3.16. */ #if __LINUX_KERNEL_VERSION < 0x031000 diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/ipc_priv.h b/sysdeps/unix/sysv/linux/sparc/sparc64/ipc_priv.h index 00f8510056..414755f15a 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/ipc_priv.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/ipc_priv.h @@ -16,26 +16,18 @@ License along with the GNU C Library; if not, see . */ -#include /* For __key_t */ - -#define __IPC_64 0x0 - -struct __old_ipc_perm -{ - __key_t __key; /* Key. */ - unsigned int uid; /* Owner's user ID. */ - unsigned int gid; /* Owner's group ID. */ - unsigned int cuid; /* Creator's user ID. */ - unsigned int cgid; /* Creator's group ID. */ - unsigned int mode; /* Read/write permission. */ - unsigned short int __seq; /* Sequence number. */ -}; +#define __OLD_IPC_ID_TYPE unsigned int +#define __OLD_IPC_MODE_TYPE unsigned int +#define __OLD_IPC_SEQ_TYPE unsigned short int +#include /* SPARC semctl multiplex syscall expects the union pointed address, not the union address itself. */ +#undef SEMCTL_ARG_ADDRESS #define SEMCTL_ARG_ADDRESS(__arg) __arg.array /* Also for msgrcv it does not use the kludge on final 2 arguments. */ +#undef MSGRCV_ARGS #define MSGRCV_ARGS(__msgp, __msgtyp) __msgp, __msgtyp #define SEMTIMEDOP_IPC_ARGS(__nsops, __sops, __timeout) \ diff --git a/sysdeps/unix/sysv/linux/x86_64/ipc_priv.h b/sysdeps/unix/sysv/linux/x86_64/ipc_priv.h deleted file mode 100644 index e89c9b56c5..0000000000 --- a/sysdeps/unix/sysv/linux/x86_64/ipc_priv.h +++ /dev/null @@ -1,32 +0,0 @@ -/* Old SysV permission definition for Linux. x86_64 version. - Copyright (C) 2016-2019 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 - . */ - -#include /* For __key_t */ - -#define __IPC_64 0x0 - -struct __old_ipc_perm -{ - __key_t __key; /* Key. */ - unsigned short uid; /* Owner's user ID. */ - unsigned short gid; /* Owner's group ID. */ - unsigned short cuid; /* Creator's user ID. */ - unsigned short cgid; /* Creator's group ID. */ - unsigned short mode; /* Read/write permission. */ - unsigned short int __seq; /* Sequence number. */ -};