From patchwork Thu Aug 4 10: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: 14310 Received: (qmail 105467 invoked by alias); 4 Aug 2016 10:03:38 -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 105356 invoked by uid 89); 4 Aug 2016 10:03:37 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=expressed, Tell X-HELO: NAM01-SN1-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 Subject: [PATCH 3/3] [AARCH64] ILP32: redirect stat syscall family to 64-bit handlers Date: Thu, 4 Aug 2016 13:02:39 +0300 Message-ID: <1470304959-9944-4-git-send-email-ynorov@caviumnetworks.com> In-Reply-To: <1470304959-9944-1-git-send-email-ynorov@caviumnetworks.com> References: <1470304959-9944-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 X-ClientProxiedBy: VI1PR0901CA0051.eurprd09.prod.outlook.com (10.167.203.147) To DM3PR07MB2249.namprd07.prod.outlook.com (10.164.33.147) X-MS-Office365-Filtering-Correlation-Id: 24e0f11a-3703-45c4-d3b3-08d3bc4e906f X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2249; 2:NKRCrjuZsY6qxwBjI7s8fe+BfiaufZV5nF1rVHIx+X49vApm6CllvltXvXxC2eYM3/zCByq6jaD1bcMO60J4pBafPZ/Y0ktmk6sOJMjw+9y0Dl2g5r81ZxIGUhtWu0Lh8JRbp2k2abVaT6ieJPY0/1WuZOTQZijs5yUJ2Xub01yPnUc9JWFNgO/tI5kv6MZB; 3:b3EYym2YX/sS0OKzNoyMwRYp+Sc4JMgjtaxmYDCFlOCJnIuAjDIwVCyIzMFVAn9jgr/PrZP3823ObB8lMhrosCpa/y595/kb49NYeCcUI1SCs6dt7ZuFfvq+1ntWWdjm X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM3PR07MB2249; X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2249; 25:0yANCfgxEV88w/V0Il1baciv4B1FEwE4tn416780EDLXlweaIGidBs01CbIoQxpQGC95Ba7fqHhY6TTthRjCmGo+pAcjXUy4+fpXmgAR2OMsnC883tij/qdMy26D0U9Tm0DSjXkuZLMOttKKa3L4hvcYEbf2AuUOUWcLbdmXKI7u+b91mbc6Ev7o+cDEwV91gKzutITabsBsuQd9wwgAUoS8Q8mXSIlZVCoW52K/BywL6ue2OrNfdYmBSHGvmb4inVfx+ybCbBtyw/xycxaata1CdwxH33oVZTkzH9MRZmqIkt9XCAqvgvQSNTVcOs+hvo1aOavhqpMG6MMHcoLLSkF1hhypVCF7UlUay5y1FMMIqxpp16ErX5+5sIzEZL/pvl3D3ft02+yHmEhUlHlfcYF/7K8j+MynYhdz5YK/1hg7Z5pb0BL/86DFaKrEDYhV9uajvQpDSaNDyJ4iIzWeWOivjlbhV5utlIVOXSCCxgrC8NCjpW5mIgEotNwOojXjc/iD7TQJDd/o7eJVQ4bLpY1NZUXNE3+g7G61UolV+o7HHoz/EfeSKDd030UCEkagqZXPw/RAq2UoZmsEYr5WV/VjadA+UzpppfjK85j7AELFIUyIYHj7QVOocOBIIv1IAjeCkyE4e4/5ZxzUXWW27pkRo1+HUdkXHhOCWs6sSV/xkFbHkLUaOJ/AXic+bb/Xy4Spgvl/XZF/kPxy2/jk5W84wORAuSbqw9mOpnBjrtja0hC7zLqSheQgVriIcScIYgojT18uVDWhHS1P99cA+B+2rSC9jYmy7znKOLvYIgLk6NCErRuLhPRxC3/z9dw/4XKMugXIJNT0mJom9BQh+A== X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2249; 31:5uze4yFMnuDwQGzg65sYRSAewUXBm5rj3+wHoZgexkEYIquUHfmwkpojP7t1XfIoxyq3ycu7XssJg4xUdxqJLEbZI9HiZskIxOvQTLenJSAzaT6pZY8asICXHW68WXEcaHEobmHRDXOR2W0CzLTTzYqT97LE9q18D9WffoGypurR/WbixTIVunR1/GRPVwQFzQYVnRYlDGwkB5pLihQwFQqh9EV5nbf8UiJ9BznjUe0=; 20:4CzrQjCVZjRJTsqTvTj3ERc9VzfsEra8jPGz6Y90gjrJXCkWGg4Qq9DSW08QAm0oOHIcs4K5wqS66c0E2hTsU7Z9+kUjRtbFhcrF6eG0jp/rfbGQ2gxstLjKifhcUa8fbPDH984L0uS+cVVJSjqsFoPqeOYqDFTQ8NO4NXtKcpF6OTFIeM2QGVZBOopc3qDj+h8DvhN9NQm8JS19CGG8+k18mWYK1cA9C3xWMU3HCG713HZUw8EUC1KK5+wcBuc7FASy5BPnb2XjphofVwDXJAl5tXK1P903QNrIugtSo72twBPApPR+CLi0YdCLOUEVODvI1R/baEs7x8NjTbjGnBtAHYcW0M3j9YVDdbLDmsY+ck0vX7vcq3Fgf4Zy7EZ6hVgELEf8oXfWc+BKs6ZJTfvmeFFpDXd3M3x0dH83VCI0R5LcOd7ohEVVOr6E12n/xUGq8r32ek/rF1QxmP7TZz12kydSH9sIPikBNPL+dbQAhiXetSCwRlfBDP3pw7zUii/4nRHNNbT/n46LufX3ErmSm8KST5aXvdS97DhLPt4ZqZqaYrDSqJtiLJ6kChPcdcF8BRzwiPpmaF9r2zH+VERu6yS6Dr3m9Vkq6SxBeLA= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(250305191791016)(22074186197030); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001); SRVR:DM3PR07MB2249; BCL:0; PCL:0; RULEID:; SRVR:DM3PR07MB2249; X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2249; 4:Nq86WCVZ3PgNONCtY953MgagpZAlNe1+SXsAnCDzKSnFww5B4DlsTGfe2+H3tbRK0K13PQ/9jZQOTZcO2UyOokW72U2hk+SLpQ1OxVS/GL6wn32V6YUiEnxpHaCQaageFI25IojK/85gHf7kv2mb0918jzh+filwOvobv+eHBJ4e9kGsJ7PG3jaPI0V6bL1jZ+ywn9b1sc4iDgqyCKQ9BaMMu3kwAt4STwoagsiMJDlazPHsriu4oxshvL5cHTD3NmLyBDYVLdOCxFwWkKnnWDrPkh86Uvs4v4xUM3toZP+GssorspTOQedAQ49lgVbu97SLPCCHeBrhA3MG10pITHe1cdVfoBHI7v5ao+EDMEiPYa7LRKW08b3NhBSnLngoV3n5Ff3Gpu8kl5JB34C4jSvCpULmkPM0ZMvbtWfJlSgV9+N/UaqSfK04SEujx3xG X-Forefront-PRVS: 00246AB517 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(189002)(199003)(305945005)(5003940100001)(2201001)(229853001)(97736004)(106356001)(107886002)(7846002)(8676002)(7736002)(68736007)(48376002)(50986999)(50226002)(92566002)(81166006)(47776003)(33646002)(15975445007)(189998001)(5001770100001)(76176999)(575784001)(7416002)(81156014)(77096005)(2906002)(3846002)(6116002)(105586002)(66066001)(19580395003)(4001430100002)(36756003)(42186005)(4326007)(586003)(19580405001)(2950100001)(76506005)(101416001)(50466002)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM3PR07MB2249; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; DM3PR07MB2249; 23:e+4IbpO+B82leBWPPFFpFBl66ruu0M8i0HeWPGj+O?= =?us-ascii?Q?Znpd+hwiUeHBUIoBdtDM8prdVWx9Fj/a/upejofFvjdI6OAMrQvUETh4KSYR?= =?us-ascii?Q?O2gCDkVlFhN7IYt1+adriAr4Vz3EAcDsIB7UiB/N1woovPQdQrkb8uQFU0Wx?= =?us-ascii?Q?4DPeMRwXzJ1Jzou/23Ux2dk9M8YYC/chNAjAbweYqxVUI6H2MqjPUqReY/zV?= =?us-ascii?Q?mUpjGCGqvMgUDXFcRciAZtD7wYXS5NaRvqe7m1azzEYDU20pPLVXUBKpXd7p?= =?us-ascii?Q?TnZq4pSX9vIYWDu0jmGo27E2mRYfxQcEz6E99PdZoGdssfmsyjBdHnn2/Q7D?= =?us-ascii?Q?XYAjtjKDrYHRQcwXlEnOqzYIw5LgyG+CTkfx9m/8qIZxbSSpJkrLYXavYklg?= =?us-ascii?Q?15/UDxrEjOA3LyvVfk2zAl3Ow8e/ZR7G7tUjhhShQnNMNpkeSlQl+RUsJ478?= =?us-ascii?Q?DJqdUIzV9p4RMpnHQeLKAbcTG2+k2fRk4brSteRHr1u85zva+tQD8eJZgE2S?= =?us-ascii?Q?tiM50LUbxbeRFiUxAmhTx1imIfcmWHZY+EpOFxexgxzHj4LiphGsuyMj/mLh?= =?us-ascii?Q?QF0huENcfEszv7Wo1khFMTsxfjmEx+hwAEwHQq9vA5qHdU1byQJ+iVTKI7S1?= =?us-ascii?Q?C8mzUJDGaneEHz3ajMiL0hH+Yqybw+0ebOK7WYR9Gi4cm3uLsm1G8Wa1UjoR?= =?us-ascii?Q?+/87eTGGGsGBvlzM8SH69xIvoZ2p/03KfxUQzxed0GyGbbu1z12T/VnD6TQt?= =?us-ascii?Q?v0VqfNW5484EobNcYvEaYWmzqM46jeyIxw0f7XMmICFlUYFNJqVaa70rGZFs?= =?us-ascii?Q?EPzRZE7Gv+kSdQFpQz4tXh2Qm/FbI6ab5ZSs8NZsauCEBftnbcAHSD3dJJ5x?= =?us-ascii?Q?IJGHulyAyI7n+ngSFv8vD348l+9iqNrPX7/ux2k7a+OaOQTtPypP+XQd67Zj?= =?us-ascii?Q?NIKZaT23/wrGJt/uNx8woT9Nvbqk3837nC3fzC1LN4d8YzTDRRZJ1XSD65mx?= =?us-ascii?Q?egBVJuvzv2IUnc7a/W8NXmSreNhwoTtG+AYNKba7UD2v131KjwEp4FhEkXPE?= =?us-ascii?Q?v1a5gXfBCoqOLZriFsG95iSc51KT+rSYQCbsIFPxXnpctZ4/eLNTAQTN4Zmq?= =?us-ascii?Q?1Dtify7ObfTpFm8AwWjHLt6Zm+ei/U5y1zqfbNtyn7HvapPe6N4NqIX0OpoZ?= =?us-ascii?Q?S63aN1s7Hqznpg81VuL32l9QHFxlxNHJvP+0eF3X21AyrtaFm3ivLU4+p0z/?= =?us-ascii?Q?QYYJ//2gCoc9xrO4l0=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2249; 6:9o0WP98mDRYCcm6OTBEJdllJ1XtZK9y+NvRZB9E8d27tO+CdnmKikV95g4zVb3Gm9BlPknAYkVT551CUtBRdWQLCcVksLglCr+l0kvZI8nh2K8K2fjf6B6by7L+qGfjuyEk0Tf9nR6DEOy5Es/thvEeyxFOPZIw0geco81LDkK5BK3/v0vPGkCtZxk8mW0CpMo61ZhqXZoBUqlIDUsaHGGUSbfY5bh7RJ1A6vWZBSl5T7qex+b8sJRfnfoKsyMRfJAba2uC+BmKh7p7GtGtiw8hotDwbJtly7VdA7b8MiUA=; 5:tjlNOW9whVgeAntsNEmenhcASjZ9UV2DKqC2dwD2wgF3g/NQvCAtFhuDRvfFLtSmt0BeQDSD/AcKX2GJp3bt/uFIBhIHjhwzLrIpJc+APVoO/sYJ3/4RAFaS2vUqk+D6GCUzrlRutJbM0TAEdNqo5A==; 24:TNtrM6qyWOkFZEmX/xCZal5rxaCoVkvR8qdtQhCfprwS/R5tWBOVmYOlb76N9XLl9lNzhidXrAZ3K+Z+EXNgExLQWP61OoGax8RK2aJ6NT8=; 7:OPLKQ1urrqRYB2CLKazoDBdIUtwGY9uzAmK1lKPD2DPBnhq5KLMeFd3w/IWSC1jbNh+/PHlH7zoGc2yITVdJEu6T3SVeYxmBRzwmLxSDzby1g6v6Khiw7cDr/OZYZNs75O8IU4dDMMtBD43/bEI+WaEGvKtlHwpqitqid/MT5PrcG6bU1qBaUb7ipPasMkbjg028qTM79hCi4OJhStm3FOQCH7z2tivJ3HDq5hkiL2QBZ1E11Z+yDQ9QklS7WG9F SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2016 10:03:20.1877 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR07MB2249 __ASSUME_SUPPORT_64_BIT_TIME_TYPES and XSTAT_IS_XSTAT64 are enabled to ensure that glibc creates stat{,fs} layouts identical to 64-bit versions, and so we can redirect corresponding syscalls 64-bit handlers. statfs() and fstatfs() are handled separately as aarch64 requires non-standard argument passing. * sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h: enable __ASSUME_SUPPORT_64_BIT_TIME_TYPES and XSTAT_IS_XSTAT64 * sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c: handle fstatfs() syscall * sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c: handle statfs() syscall Signed-off-by: Yury Norov --- sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h | 6 ++++ sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c | 35 +++++++++++++++++++++ sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c | 38 +++++++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h b/sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h index 39c0c81..be6497f 100644 --- a/sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h @@ -62,6 +62,12 @@ #define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE #define __CPU_MASK_TYPE __ULONGWORD_TYPE + +#ifdef __ILP32__ +# define __ASSUME_SUPPORT_64_BIT_TIME_TYPES +# define XSTAT_IS_XSTAT64 +#endif + /* Tell the libc code that off_t and off64_t are actually the same type for all ABI purposes, even if possibly expressed as different base types for C type-checking purposes. */ diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c new file mode 100644 index 0000000..ad5675d --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c @@ -0,0 +1,35 @@ +/* Return information about the filesystem on which FD resides. + Copyright (C) 1996-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 + . */ +#define __fstatfs __statfs_disable +#define fstatfs statfs_disable + +#include +#include +#include + +int +__fstatfs64 (int fd, struct statfs64 *buf) +{ + return INLINE_SYSCALL (fstatfs64, 2, fd, buf); +} + +#undef __fstatfs +#undef fstatfs +strong_alias (__fstatfs64, __fstatfs) +weak_alias (__fstatfs64, fstatfs64) +weak_alias (__fstatfs64, fstatfs) diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c new file mode 100644 index 0000000..66772a8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c @@ -0,0 +1,38 @@ +/* Return information about the filesystem on which FILE resides. + + Copyright (C) 2011-2015 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 + . */ +#define __statfs __statfs_disable +#define statfs statfs_disable + +#include +#include +#include + +int +__statfs64 (const char *file, struct statfs64 *buf) +{ + return INLINE_SYSCALL (statfs64, 2, file, buf); +} + +#undef __statfs +#undef statfs +weak_alias (__statfs64, statfs64) +strong_alias (__statfs64, __statfs) +libc_hidden_ver (__statfs64, __statfs) +weak_alias (__statfs64, statfs)