From patchwork Wed Sep 14 12:02:39 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 15626 Received: (qmail 85963 invoked by alias); 14 Sep 2016 12:03:45 -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 85858 invoked by uid 89); 14 Sep 2016 12:03:44 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=H*r:sk:NAM03-B, H*RU:sk:NAM03-B, HX-HELO:sk:NAM03-B, Hx-spam-relays-external:sk:NAM03-B X-HELO: NAM03-BY2-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; From: Yury Norov To: CC: Yury Norov , Arnd Bergmann Subject: [PATCH 4/4] [AARCH64] ILP32: stat syscalls Date: Wed, 14 Sep 2016 15:02:39 +0300 Message-ID: <1473854559-11103-5-git-send-email-ynorov@caviumnetworks.com> In-Reply-To: <1473854559-11103-1-git-send-email-ynorov@caviumnetworks.com> References: <1473854559-11103-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 X-ClientProxiedBy: AM2PR03CA0027.eurprd03.prod.outlook.com (10.160.207.37) To CY1PR07MB2248.namprd07.prod.outlook.com (10.164.112.150) X-MS-Office365-Filtering-Correlation-Id: 82e037c8-be39-43ef-c879-08d3dc972567 X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2248; 2:o3l7ap3ASCion3eFgVegQZFBz813jsyuBUxfArwOEB5jOTOM1btUOLh7sdkLfuSxwBQ8fjQ6xYppYu1if7881FF4VPvRCOqURbnsVJ+rJAerw+ruBbEfZ05mlocNj6UFl00zS7JhgrBcbE9uii73zTpJ8tOiQXqyebqY2VmJi9gNFugklmk7FBeHR+/17bVb; 3:Zv4MHfqIO6a0pHKCp+YAChk/sratQilmaYZEjrKP/PeKgWAvANG/gj8eqR5wHHH8f94aLnOsYB9vTpKo58ZaYn7HW+KbFxRpjBbTrqBiaVxtmHIku+f/JJ/r0ntu9SSI; 25:JITrcyEjA1Yf1fCLnlOZDrV0h2JpHW21y3ePJBRhGyvArN4s9cQQl3Pcmwprl2ytz3/IFt1lBgnbZ4PcK1g/613w2CWSPYaLm2E+9709Bicn9uiHaCiKGn7Ps4k5XwVfEMfWdVOHdzfz65tR2yPJymR/Y1fGSKLc5QVQ4wHwNfTkBV81GTUif86by8mpWg1vQJDcc3RvbMmcWr3MoU+zfixfsF+oHpG89uMsfnULtmsZqVwphiPoGfnm7rJbz0MuCNidKwvQYEH8fQ8yhTYCnf1j9jF/+BLMPW9csFoU74KfcS0ged/lZ4TEtI1GcFpyYQe5BclXyyRzEHnL0WtnXwLVuE1LpAl46lJL1XHaHCeGlWSUCwyup4x9gReqRQZncVqGULWOSrlap9Cg0Cl9VNVylF/giSX9BztQgcF6/1k= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR07MB2248; X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2248; 31:SPboAMCBqPDpciISVyQwXfD2Cjaz/cbb/kQE7XkfqI8yS9N3mVla77UaXNXXoBN4m0iUDFo/vWy11nZRQ+ntTRTj1hdHxLSa2QI0MsE7AR+jPCbpxeBPHfuQw7I4zU9iiopxVVVavx5DDo+oS2tOThbRlMCE1EH+RGZ1keGZj+AyjJ9Ou2rD0DBUid808JgylN6invktGQUIZO1tAC/X31qZcGxP/xjZ9EE4W/WbNBI=; 20:Lfe6wf/jia1Lsxo3o1ZbKagRWu1JTHvpCpL9aYlK9/3jUuQRJNMZ9EE83SCZeuac/sIypNTTNcw6Ks7Nd1zpU+Nmq3lYZ6qyEjRdzg/zSIZ5EJy0qSxbvULQsssF2ppiOgIm80TBG5E/MxT3OG7kkEvhZukMaG+F83D7Bq2zNO5JXNzOqrHFaHnJvEwQj62HGAOMoagG+jZOVUET95s7aYdLk598w7P4jVMGUqC3qWW2oasVKE0GZRlj1J6RYsKlaBfQpnhzdw2zrivgsDEog5Jo+9aryHkwc5JHAYj0jnzaIcH7UiaMUyJvUaT32HvUBRe8Us3zu/ieA72mtHh2pC19IuAv9jL8qqStSgUxuszRTV3zHzVLhg6qIlVDlcxbla2DDRjfn2mw+7o/qgn5bAerMSgaz/wXAOXYKjDzIsgBEN/5rjOXx+WJq64NyMa+yYMqx6C8hE/Qb175Xm1RTGHhwH0yBynBbC0+pwlRsVqUKjY6u5aAEo2vWf32roHeAHkNiHFak8lnNTA267tRONG4/lDVv1bybEEaUDlT4hbpiVwBmj2pYNM0jufYuP3C0sYF4qJ2S2VYMydQwFDH03Wh5+YXxJarHSL1cFR1t4k= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(250305191791016)(22074186197030); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001); SRVR:CY1PR07MB2248; BCL:0; PCL:0; RULEID:; SRVR:CY1PR07MB2248; X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2248; 4:o0/9/zZOYb9jtao5X4+1JLragKXHHwO25NsOvoJ+yHr80+h+/IRkEuRMAS6uATotxet9BMfOjVwIZzPHbNRMkyss47qlCz5JoUIYeQKIVMvQ9EdFcMbOjkwLIOEj4ZST9ZRqy3PuknK1MN7Ae8wZ8/DUn0VVAGNwh7pekqPUYNHZRNZhV8cIOApeTtAANR2ikbL3Gt2KkQ367lcNqXdXQHKUr9EW4dF0yUqSrgSO7g2agdQ1FXCJIoyX/zTPDJ1/r4AU9sTQSf5ZPmJAnQbIhfxWdCWvLCiHbysLF1ZBEUyw2u1kpcL6yqSnG9mRITD4yNwCZmXwiixfTtJcqLuwl2V3g/EIZpgXKlEWs8wFFiFIMU0ErvgZohSghFZbn/vug9mgy/129O24lDCQHSu1K28LbIvffErxrlR7RVLqzIJg5demWdSrZxZmVIXzk6i3/zYf4VQlYjBLnxKbeFzZ8g== X-Forefront-PRVS: 006546F32A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6069001)(7916002)(377424004)(199003)(40224003)(189002)(2351001)(6116002)(42186005)(5003940100001)(36756003)(2950100001)(68736007)(110136003)(19580395003)(15975445007)(81166006)(48376002)(92566002)(4326007)(2906002)(33646002)(19580405001)(3846002)(189998001)(66066001)(50466002)(50226002)(47776003)(586003)(105586002)(305945005)(8676002)(97736004)(50986999)(77096005)(101416001)(76506005)(229853001)(7846002)(106356001)(5660300001)(81156014)(7736002)(76176999)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR07MB2248; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: caviumnetworks.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR07MB2248; 23:wYeDWU2aR9IE1XdjXk+Lzp51U5hb7rZLVG0TeSigA?= =?us-ascii?Q?UlWaPJE46sSUtOObHxm0bBd7CVILN8tegXfRnQMm8OGXCq6gGSx9/8P49+3i?= =?us-ascii?Q?nqt/YUPUSa1bb04vVeu8Istlb0Vnrpo6tChYfjPCxFUiyvLyi9bZ3GEMGP5t?= =?us-ascii?Q?yLKWYRf5TRAGrwOSvav0RTzg0PUGqkug6Vuw3wi0jY8KYYKGwg73ht3XbWcX?= =?us-ascii?Q?4ECVQCqojl+vLLeNyCDBK2hHWJ3mUSaBv5Bs7zdOa2AOnpbhKK6u4xEQocIn?= =?us-ascii?Q?ZeZOC5yhCwygEP5aUPns8J7tbef7eONB/H6VnI0qpMwMO2QbmpnknXjrBPyK?= =?us-ascii?Q?Gl2Rn2AQEtjfPWSKdNzD0zyXSTjEObNUPCvJlK95d/9tQpklseDdl9FApy6o?= =?us-ascii?Q?ZRZ0ZTzu552LqihFUEBXYVR8mjUXwO5r6XS5cX8ts9nfxYbCisqLyKaNZZkw?= =?us-ascii?Q?CVZoAimNZvKxAbltG8HpsuYTn2PgfhUhSUwa4spwBZ1ROjQ+ANexb+2eBc4o?= =?us-ascii?Q?tIyjivOrEBUEL0RiIgTrG41tjldj8wVT5n7HzNJqU5xqCp/eiffXlmXhwuIF?= =?us-ascii?Q?+ERnjsFrKwLtKsUnV2lfZwYi9qfb1kND5yJZgWY4TQ0NSpntjLXnPfyKB+Yt?= =?us-ascii?Q?UYAIdx0baDbTHwKW18TXwDInoursHj7EJxCz6t9lqvnxGxyT1Ud4R9nEfYWl?= =?us-ascii?Q?O2/NQuDGbJe1ebonc71kg95FeRU6cNVYyBXHbVlV6UxEK5veiM2s0Xxy0Kn9?= =?us-ascii?Q?iFQAfT+Aj+YHQ0Sw8ufdYV3dTrJEk6Qx0frasOoYcNQ+ziFrvEJ4RuMgyw4g?= =?us-ascii?Q?xAfAi3xFiDusSdI5V/TfogwyCCbS3jjTm0BjtaGqv9EN8SbgS05oHlxsLdLa?= =?us-ascii?Q?qC6kC7zIKgRnKo+88Og6QO8JZqJbk1sRfKoxuOlZS2ckixIJl2FWkLCJB5Kc?= =?us-ascii?Q?xDCjh8eVWInDdjZIWxNdLNzIbeDwiBA7dv5qTNGSMF4PTGz+lbEomth3xoYJ?= =?us-ascii?Q?qMOGPeDNwHpIVGcsGSQyMYew5Opc8oI6pC6FuYbUbFXJVPgd5BwjE8G7Mh5z?= =?us-ascii?Q?qBUe9wAPWWJsIRGIc6UbkFbWkseZscLsmus2S1VlrN1Msmqas4/5tdUGRDI8?= =?us-ascii?Q?6Qq7OOTakTrrm5VGkmAuW7SEOnNQGw/tSWXz9hmhORv4YVYVQHLUXMGg0cVj?= =?us-ascii?Q?AK1G70yprcbm4HWKIeBKbMQker2EMv/ToV+?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2248; 6:ArdynHxvmI8ebNfMMWU/pr53AMcz4H72Tq55uvOGOwhYJCly5itPqwvpD10aw56bLari8xdjmAISpkWMVux6TH1Lcx2AXyneXazsCoxKQlNHrVrBNO1TSn9eYak2jndwObantiBVx7rEss1+icL9+TdZw5Ib2bLnFahvKPkbMh8uw3YfzFGleEULjH88ivxDJFjXekkD7hGr48ic4qKbz2SaGbEHRdvW98EyaIBsyfjJvBEauo1x0tUI1vZDVkHPDPCfi2aGH0tQbpKnNRcoJuqwvcK0GGtMTzJKosRM4N4=; 5:Jc8XffaxFnpEb00I3xS5q6s0wR4G10PFXSVCgz/gLkAdcwYJFLkpvVqwsunkSeJNoRKmHixo/12FRQc1gf+DelDxqOg/lMCUO1rahn3AODlVQ4Gpku2okG8k58oKgNlYymz3Tqddb7GfG81/G9ulsA==; 24:wADWOQM3HDgk/+1rTZLgIMtxGKB3ib7zY/H9zmmk3tu7RiocqO+615WLxzJLSgttZWdF2cIJowHnjnQzB8Aix+ttGbNPHikhs2H16UnIOO0=; 7:RCE288hElko5pS46Iopedqe9MHR/DYlCCUl+LAaeTuyvmUXfCLG2KTpXfJNo3XiykBECLrZxHXMvjG5Wyu7mnu5jejy73NDkFcMj26QO9Eg4bI2loAyl2+br+yQ8BSwsI9S0/ynqZPbNx3MzKWD8LSc+81AwufKEio16OTrBkT5QTxm6huP8tVgp88lLbi640Qce2zhfDP7mcJXyzYYHlefPekym1EoECG1AuSxxoTZK2V7YjeNEVxuFI6pzaPsD SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Sep 2016 12:03:31.1352 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR07MB2248 Implementation details: - struct stat, stat64, layouts are taken from sysdeps/unix/sysv/linux/aarch64/bits. struct stat has broken st_ino field (legacy from arm32), so it's handled in corresponding header in a way to make this structure identical to struct stat64. - XSTAT_IS_XSTAT64 is defined to use the same implementations for stat syscalls. - STAT_IS_KERNEL_STAT is defined, and _STAT_VER is defined to _STAT_VER_KERNEL for ilp32 to bypass __xstat_conv(). 2016-09-09: Yury Norov * sysdeps/unix/sysv/linux/aarch64/bits/stat.h: New file * sysdeps/unix/sysv/linux/aarch64/ilp32/kernel_stat.h: Likewise Signed-off-by: Yury Norov --- sysdeps/unix/sysv/linux/aarch64/bits/stat.h | 166 +++++++++++++++++++++ .../unix/sysv/linux/aarch64/ilp32/kernel_stat.h | 2 + 2 files changed, 168 insertions(+) create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/stat.h create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/kernel_stat.h diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/stat.h b/sysdeps/unix/sysv/linux/aarch64/bits/stat.h new file mode 100644 index 0000000..adf8f4e --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/bits/stat.h @@ -0,0 +1,166 @@ +/* Structs stat and stat64 + Copyright (C) 1992-2016 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 + . */ + +#if !defined _SYS_STAT_H && !defined _FCNTL_H +# error "Never include directly; use instead." +#endif + +#ifndef _BITS_STAT_H +#define _BITS_STAT_H 1 + +/* Versions of the `struct stat' data structure. */ +#define _STAT_VER_LINUX_OLD 1 +#define _STAT_VER_KERNEL 1 +#define _STAT_VER_SVR4 2 +#define _STAT_VER_LINUX 3 +# ifdef __ILP32__ +# define _STAT_VER _STAT_VER_KERNEL +# else +# define _STAT_VER _STAT_VER_LINUX /* The one defined below. */ +# endif + +/* Versions of the `xmknod' interface. */ +#define _MKNOD_VER_LINUX 1 +#define _MKNOD_VER_SVR4 2 +#define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */ + + +struct stat + { + __dev_t st_dev; /* Device. */ +#ifdef __LP64__ + __ino_t st_ino; /* File serial number. */ +#else + unsigned short int __pad1; + unsigned int __st_ino; /* 32bit file serial number. */ +#endif + __mode_t st_mode; /* File mode. */ + __nlink_t st_nlink; /* Link count. */ + __uid_t st_uid; /* User ID of the file's owner. */ + __gid_t st_gid; /* Group ID of the file's group.*/ + __dev_t st_rdev; /* Device number, if device. */ + unsigned short int __pad2; + __off_t st_size; /* Size of file, in bytes. */ + __blksize_t st_blksize; /* Optimal block size for I/O. */ + + __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */ +#ifdef __USE_XOPEN2K8 + /* Nanosecond resolution timestamps are stored in a format + equivalent to 'struct timespec'. This is the type used + whenever possible but the Unix namespace rules do not allow the + identifier 'timespec' to appear in the header. + Therefore we have to handle the use of this header in strictly + standard-compliant sources special. */ + struct timespec st_atim; /* Time of last access. */ + struct timespec st_mtim; /* Time of last modification. */ + struct timespec st_ctim; /* Time of last status change. */ +# define st_atime st_atim.tv_sec /* Backward compatibility. */ +# define st_mtime st_mtim.tv_sec +# define st_ctime st_ctim.tv_sec +#else + __time_t st_atime; /* Time of last access. */ + unsigned long int st_atimensec; /* Nscecs of last access. */ + __time_t st_mtime; /* Time of last modification. */ + unsigned long int st_mtimensec; /* Nsecs of last modification. */ + __time_t st_ctime; /* Time of last status change. */ + unsigned long int st_ctimensec; /* Nsecs of last status change. */ +#endif +#ifdef __LP64__ + int __glibc_reserved[2]; +#else + __ino64_t st_ino; /* File serial number. */ +#endif + }; + +struct stat64 + { + __dev_t st_dev; /* Device. */ + unsigned int __pad1; + + unsigned int __st_ino; /* 32bit file serial number. */ + __mode_t st_mode; /* File mode. */ + __nlink_t st_nlink; /* Link count. */ + __uid_t st_uid; /* User ID of the file's owner. */ + __gid_t st_gid; /* Group ID of the file's group.*/ + __dev_t st_rdev; /* Device number, if device. */ + unsigned int __pad2; + __off64_t st_size; /* Size of file, in bytes. */ + __blksize_t st_blksize; /* Optimal block size for I/O. */ + + __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */ +# ifdef __USE_XOPEN2K8 + /* Nanosecond resolution timestamps are stored in a format + equivalent to 'struct timespec'. This is the type used + whenever possible but the Unix namespace rules do not allow the + identifier 'timespec' to appear in the header. + Therefore we have to handle the use of this header in strictly + standard-compliant sources special. */ + struct timespec st_atim; /* Time of last access. */ + struct timespec st_mtim; /* Time of last modification. */ + struct timespec st_ctim; /* Time of last status change. */ +# else + __time_t st_atime; /* Time of last access. */ + unsigned long int st_atimensec; /* Nscecs of last access. */ + __time_t st_mtime; /* Time of last modification. */ + unsigned long int st_mtimensec; /* Nsecs of last modification. */ + __time_t st_ctime; /* Time of last status change. */ + unsigned long int st_ctimensec; /* Nsecs of last status change. */ +# endif + __ino64_t st_ino; /* File serial number. */ + }; + +/* Tell code we have these members. */ +#define _STATBUF_ST_BLKSIZE +#define _STATBUF_ST_RDEV +/* Nanosecond resolution time values are supported. */ +#define _STATBUF_ST_NSEC + +/* Encoding of the file mode. */ + +#define __S_IFMT 0170000 /* These bits determine file type. */ + +/* File types. */ +#define __S_IFDIR 0040000 /* Directory. */ +#define __S_IFCHR 0020000 /* Character device. */ +#define __S_IFBLK 0060000 /* Block device. */ +#define __S_IFREG 0100000 /* Regular file. */ +#define __S_IFIFO 0010000 /* FIFO. */ +#define __S_IFLNK 0120000 /* Symbolic link. */ +#define __S_IFSOCK 0140000 /* Socket. */ + +/* POSIX.1b objects. Note that these macros always evaluate to zero. But + they do it by enforcing the correct use of the macros. */ +#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode) +#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode) +#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode) + +/* Protection bits. */ + +#define __S_ISUID 04000 /* Set user ID on execution. */ +#define __S_ISGID 02000 /* Set group ID on execution. */ +#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */ +#define __S_IREAD 0400 /* Read by owner. */ +#define __S_IWRITE 0200 /* Write by owner. */ +#define __S_IEXEC 0100 /* Execute by owner. */ + +#ifdef __USE_ATFILE +# define UTIME_NOW ((1l << 30) - 1l) +# define UTIME_OMIT ((1l << 30) - 2l) +#endif + +#endif /* bits/stat.h */ diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/kernel_stat.h b/sysdeps/unix/sysv/linux/aarch64/ilp32/kernel_stat.h new file mode 100644 index 0000000..4efd399 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/kernel_stat.h @@ -0,0 +1,2 @@ +#define XSTAT_IS_XSTAT64 1 +#define STAT_IS_KERNEL_STAT