From patchwork Tue Jun 28 16:39:31 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 13439 Received: (qmail 29069 invoked by alias); 28 Jun 2016 16:42:48 -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 28765 invoked by uid 89); 28 Jun 2016 16:42:47 -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=vary, Never, *__buf, UD:cs X-HELO: na01-bn1-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; From: Yury Norov To: , CC: , , , , , , , , , , , , , , , , Andrew Pinski , Yury Norov Subject: [PATCH 16/23] [AARCH64] Make lp64 and ilp32 directories. Date: Tue, 28 Jun 2016 19:39:31 +0300 Message-ID: <1467131978-669-17-git-send-email-ynorov@caviumnetworks.com> In-Reply-To: <1467131978-669-1-git-send-email-ynorov@caviumnetworks.com> References: <1467131978-669-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 X-ClientProxiedBy: AM5PR0901CA0015.eurprd09.prod.outlook.com (10.164.186.153) To DM3PR07MB2252.namprd07.prod.outlook.com (10.164.33.150) X-MS-Office365-Filtering-Correlation-Id: c9ac862e-11ac-4f04-17fd-08d39f733400 X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2252; 2:quo95WkZW4iMquOnkeR8uMQmuhMJv0jgEQ+uhZkBz0fzifNtju4qYzxr02Z1JNSl9SoDgYfGdT+/tU3W7j5Z8tvxFvTku8Q5nIEftWhkacVVkrF0hkeq+8jzjuu/2wB2tcd8oZnBD65BlKwG9/1wtIjd5GpBSB0Btc+3NzrM4Krx5N/8CyWHnZtw3P1wLjr5; 3:TMWhevXFi6yD6xoCwnZq2IequIllH+GnnSpqx0ZD1MGhwpQkl/uttQCfqQ6lM5Eaojd3oPnPHC2eaZVMKPhzjFQfdY5/NVNDQZobhg4y++J7B7mVCaWWheTtNiUJpKTs X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM3PR07MB2252; X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2252; 25:K6HxgC2LaBEMZ8nqazdsQaoddh9yOjPODoDujlYlZqQVEmjo95+K+k1yLX1DIuL9SQ3s7IQM7lOXLqT4a+K2GTqF8FjH/uFJcIN8x+ClD8AqN66HSppYL2JNIlYs+govV49rnKq2+povH91DbB0xrZpGNE6mp1hs66IjL5D1QH9c095kYWNIXW3eSTcOLU2R+i+WGvEUkgh67q6HXttL0uub0pOBDVUZqmMSy+de7UQmM4/AMEAYjPILxGZhKz6JodiGTftvUTEncyQgGmfUAPAlnJRBDgAksFW4yXdv4TNjg3oxqw+yrWI4s4WAddNcXDvENgghVuVx+0vfVXklx6V1Fzs1BAW2inXmgPxUH+rpL2CGdmyLp25uSDtkC/cieV8eKG4z2+0biIXFBUOWDuXAF1noXhHT8K7nwhBMG8hoAFcyaDqVleREzL3+Agid2tLW8rhjw4uz1OPfjgtmUYkkmvA24vGo8bXtjbin5Y4VzS56OWe2+8WXlbb7q/3d+cDYve+55kr6HxwAUlIABA5SuJdIbiTCh4x5v34tl4r8sXUG3RsT3CPqdoZ5gr9a2HN1j4CUSi50zSs3ISFnX7sT8aVc+xSvAJw5XgMSANreVLCBlTQizsqcK7DSOmE0eikHwXcTWT5Beio0rZq8jb+jCBHYJ8LKTZheNTsCEk4wK3n5PfwaVjZ/9YVhnarhCcVVzaqdANHRlOstV+Y1PY0cX666Ax1ziSnDPVMqmhy7Gdk1HmzO4FXMCwHCu4L0dktlLwlywAJflMGaFUJsk62/OLSYp7I3Ej+sYdnvw6ENVWTohYtqn36GA1YpPzSLf0MFlSN57mflAb6+ZKIuyw== X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2252; 20:MNyKDIjMCMMGo/SMuTz8qXAZf0v6RTZsQnlxOu7emgN2RYdijEdBiakopgApcBC+IJQVi0ePxv8wCu2XA+UtGBr807y6/JS38TDApG5fOYd1EWqWs274Jdq0fKb3hAaak/xix2xBwM/I7Gpi84u8sGb45xPzpjrxPu8OZ0Y2IlR+sONuYnTy59x2oW5qR4VvlzJ9nj1I43MRdIpzu1PaSq87F1peUaPQ3N9dRntsofAk8U1Mr/YWnP+cgiofhx3xskIoKvl81aQIGfuC6oVheV9B0wwlkCdjLYlx3St3B9gktcqdt8wcN6ztounfBVTb9uhjNiERPFmonTWzC6jaOpqCd3NZUrGix8g5d+uNtCD8M9FQK7P0r7GoG2Id52axlledDtPOgTfqkiY+Y+pI23gf31hLdYv++gXttcQpYUlkpLP/a1im/bkf3hs4+DJ5qhb0AOV6knnJs3ou+hqx1g/3wFjPpi6p7PrDp7c5DEKTaW+5WHcQ2n4CScNJthll8OXZrUW2BHSfPtSO4pp/hLbUqrEsK6IdnTnYIzTmCqnRh81hI4pVpA+85+mxbhcgY/batR+JobjkY4hmDWeI45Rv/pmAQcsknk2281kFqE8= 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)(3002001)(10201501046); SRVR:DM3PR07MB2252; BCL:0; PCL:0; RULEID:; SRVR:DM3PR07MB2252; X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2252; 4:yxjrMQ9jPVBPuo37C34rSvN/G88U+Vx8i7mMuQujh1oWVAKA7yZKvWcjBYXvObk4BrXipUdUVQckyxj6bde4/c5lFE4I4BrcCakf4hUwpcYXQUHRqUMvHgmdUT9ALA5zE8Fg+bGTjB8NT06TDuXzVnP2547+U58jfyV59jH/tUphp1C77Wi9s9ibSR+hsd9sN+qlHP2CJskYidA3sBBmEzL2IsRYYPGA8VJsYd9NvsPJwj0yrYP5CGOWP9/lwxENoRYPVJ1dkDEsUoA5vHtj5laiVUpn7nQmQ0bl+qQ7vinIbPNbhVeGiQY/gj/FWoAh1XT6GKGyGiO8KofACAjDMuZSMElaQ0pKsPD+ICKb+NSUb7k3rcpm1pKQckxgkgRSvDBBpH2CiI2kK9hNrWyiUD4jJ592FbEgef65/WHbjX23jsqJVgKWcw41495RLIlI X-Forefront-PRVS: 0987ACA2E2 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(979002)(6009001)(6069001)(7916002)(199003)(189002)(48376002)(229853001)(586003)(42186005)(15975445007)(2950100001)(50466002)(305945005)(4326007)(189998001)(19580405001)(19580395003)(107886002)(7846002)(5003940100001)(7736002)(50226002)(33646002)(76176999)(97736004)(68736007)(81166006)(81156014)(66066001)(5001770100001)(47776003)(76506005)(6116002)(3846002)(8676002)(4001430100002)(36756003)(50986999)(106356001)(105586002)(575784001)(2906002)(92566002)(101416001)(77096005)(2004002)(2101003)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM3PR07MB2252; 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; DM3PR07MB2252; 23:G77C3sqMSrX59E59SL57IltY5EgYs5523Q19e1h9m?= =?us-ascii?Q?KqIx6l9SYiwcML1Q/qjRH8f0ygFkwdHGUM1Y+9U9k1PdoXc/ChG344K/i/cp?= =?us-ascii?Q?sfPHMbqrAwcRxSdp/SoWR46Q05rsIBKxr5Txj3f5Kg/FhKc17P805I2amvOX?= =?us-ascii?Q?mmUkgWUDW2Tcbz8rQOsJ+aqkXeAmiS1bTCUnKr4FYhXsyhLbCJ2E7/QlmAL5?= =?us-ascii?Q?ZpFKfxo0wCIibYjQqhQt6p54n+iXJcxG23pqYZ2rHtnmNa2bQnxQh5i4qcQg?= =?us-ascii?Q?7+F7Ghd7qKjLzXsxjYp9rbPUEMaD7B1Jx5EkMR22pt4enuC2YhLQ1veHIM/x?= =?us-ascii?Q?6ThvIZCcUOH4jsFIWRs0j6MZg/aNnN4WUe6F4IgwIXMg66H1Xtz0bxf3b3CX?= =?us-ascii?Q?5JVxVBagwfWA1JOOxTK4mTbz/i4I0ej1wYFvG0y9P1S7SgavGFhFxoBolevy?= =?us-ascii?Q?Sp/YGFyz6ht06FvrWEVZ97gMGHarAgrUJieg6j96K1LeAu1Z4q+6pvcg1oJA?= =?us-ascii?Q?QozBB0F0oh0W1/00LERajlKrHfJZc1mXhCgoTkS+PA8R0Mm8tJIkyjB75ipO?= =?us-ascii?Q?vv7aqA8f7HQBanDvS4Z0AqUYpkVGyNRtdPoxa7UsbFreGuwnAsyb81qmgDZp?= =?us-ascii?Q?ajryLi7N/j5qwrBH3VfR6Rm78+He96aqy7mkwO/1MnaIaAEPYGM+dM1O9uCY?= =?us-ascii?Q?0Y+Z8LsYdwZIXOCmc9cNjrRzyC+NQRD1YmFtHtemRHLKllDdi15oXTxwExsI?= =?us-ascii?Q?ut8Vot6bILquOF1oom9XHVlMWKcfmJI4MQhYC9bhIY8K3UYIkvPXi840qFdb?= =?us-ascii?Q?oVZPDlkMmu2bwU0qLcgPXTmvTI+7XegsnXDS8mgx3+vniWH+KQGemzyp+Mpp?= =?us-ascii?Q?mKWolw3cmzYTf2YCu+HqbZI1cqdUkRRmTYR1JovkiUVeOPSJo9JWfJ7Gma/2?= =?us-ascii?Q?lcoVjlUoQQl6s6KA/0Mb7eoRF0gxB5IocUJ8YYSfPmqDjioWx3eJWn/FNWgF?= =?us-ascii?Q?WQoIjdqtuSZLZIpyuUczb1EMYXvHxmbUYO/Q76Q4TAN6pcgc7fBqcdSjc1ob?= =?us-ascii?Q?Qk/L39DGR9GKX+y1/Mn+cWG32PMDVcxs8CcSiEGWtmnzL/Wqj6HZCIurglT1?= =?us-ascii?Q?Z3oUtpzixxnL2+dMnfTLtb1+DhpOoWoBoeEcaXSkdxgoE012oNuD/bPA3yQr?= =?us-ascii?Q?/r0VcnP7F/fJy5iKG26ARpy2ArYn0J5sSd+rdQ87/CJmc+wzDkHNlzqRRxSA?= =?us-ascii?Q?HK6Ok7rZqElJoSeW5yLsrNg76FfuvV9P3yHPofiPcIxVgNSz6NTgT4Ge5d75?= =?us-ascii?Q?CVN3qowZAsnfZZ6X5tlmKk=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2252; 6:qMyFDH5O6Lb53/ftO2V+nH6QquDSlyRRQ7ay0TTs69dYQCxKyv2cXPv3ZL0lWWhnYI/kL7coY7vEQuxHiEQvN/kORWnKZ48EGEYI0kakVqJKV7RtwEtIgzWs5nNj9XPFFc1yVgUtn8i4ztrnb4+FHBwqoNz78mDTPQaXwN8KQxmQlDiI+RuP8k2lT0xvalDm/kW3brANb8R5l0YSRQJtHhKXiMrhEQPyk22RdIqljsSB7qSD9i95OM2sfjsjgWiNAINvrFxh0J7cmhwsCiprdH2J6VXSKLfuBlx2ZvT+uAYF5JBOV6YnrUz2+uXkCobZ; 5:xcQCbPmfqSN8vYKBv1Wj26I+PxB7RwRcBNi3b4opSpYSReiFR3My0QxczBXuMW3C3two+mvY1LGH2I3GX/khUTb1u6mTUPFQIeM/AuL78lcWec4Kjp0f6//YjiJ8jaSqBUqNc9Fy6Yv1c3EJ9y8tkQ==; 24:Jj2P//oe10FakJDNrFOgKLHgH2dRj8VNRP3DTdooVubyQJmtNKo9pLE3fQxi/hHYcEa3szeX6RoV5hBm3IpHDC3IX0SfFOcMBKGnX7b7mqk=; 7:EhCkGV+e42HTcEXsP7+XCD2Xpu1vFQSkYi++4HylMMaSFHNrqtdgbBY0oGtuKylWqA5ufJH9YDqye83aSX5/ElSUApJpxcT7PF9AoHqcAP9+3ucgO/pcS79GXdheUyzXCIlfG6jhesH4bNU2WYzwQAksbiwiugU1BUKzVRaFGvJoJRdckAcPHYI68S4IG1iBqfl7aThlL5P+hcGsP3fz2xioTQY8NJQlZYbh/7f+vbcSYPrnyYcItgw9+APnAswI0/o0RB/NSI51F6jJZ6EZsw== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2016 16:42:32.7885 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR07MB2252 From: Andrew Pinski The patch makes the ilp32 and lp64 have their own directory under aarch64. ILP32 uses most of the same system calls as AARCH32 but has a 64bit off_t, ino_t etc and 32-bit time_t. We need make the functions that handle this set of types. Signed-off-by: Yury Norov --- sysdeps/aarch64/Implies | 6 -- sysdeps/aarch64/ilp32/Implies | 6 ++ sysdeps/aarch64/lp64/Implies | 7 ++ sysdeps/unix/sysv/linux/aarch64/Implies | 2 - sysdeps/unix/sysv/linux/aarch64/bits/fcntl.h | 6 +- sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h | 86 ++++++++++++++++++++++ sysdeps/unix/sysv/linux/aarch64/ilp32/Implies | 4 + .../unix/sysv/linux/aarch64/ilp32/dl-fxstatat64.c | 7 ++ sysdeps/unix/sysv/linux/aarch64/ilp32/dl-xstat64.c | 6 ++ sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c | 77 +++++++++++++++++++ sysdeps/unix/sysv/linux/aarch64/ilp32/getdents64.c | 1 + sysdeps/unix/sysv/linux/aarch64/ilp32/lseek64.c | 0 sysdeps/unix/sysv/linux/aarch64/ilp32/mmap64.c | 1 + sysdeps/unix/sysv/linux/aarch64/ilp32/msgctl.c | 32 ++++++++ sysdeps/unix/sysv/linux/aarch64/ilp32/readdir64.c | 1 + sysdeps/unix/sysv/linux/aarch64/ilp32/semctl.c | 53 +++++++++++++ .../unix/sysv/linux/aarch64/ilp32/shlib-versions | 7 ++ sysdeps/unix/sysv/linux/aarch64/ilp32/shmctl.c | 32 ++++++++ .../unix/sysv/linux/aarch64/ilp32/syscalls.list | 0 sysdeps/unix/sysv/linux/aarch64/ioctl.S | 31 -------- sysdeps/unix/sysv/linux/aarch64/lp64/Implies | 4 + sysdeps/unix/sysv/linux/aarch64/lp64/ioctl.S | 31 ++++++++ sysdeps/unix/sysv/linux/aarch64/lp64/mmap.c | 34 +++++++++ .../unix/sysv/linux/aarch64/lp64/shlib-versions | 7 ++ sysdeps/unix/sysv/linux/aarch64/mmap.c | 34 --------- sysdeps/unix/sysv/linux/aarch64/shlib-versions | 7 -- 26 files changed, 401 insertions(+), 81 deletions(-) delete mode 100644 sysdeps/aarch64/Implies create mode 100644 sysdeps/aarch64/ilp32/Implies create mode 100644 sysdeps/aarch64/lp64/Implies create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/Implies create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/dl-fxstatat64.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/dl-xstat64.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/getdents64.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/lseek64.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/mmap64.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/msgctl.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/readdir64.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/semctl.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/shlib-versions create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/shmctl.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/syscalls.list delete mode 100644 sysdeps/unix/sysv/linux/aarch64/ioctl.S create mode 100644 sysdeps/unix/sysv/linux/aarch64/lp64/Implies create mode 100644 sysdeps/unix/sysv/linux/aarch64/lp64/ioctl.S create mode 100644 sysdeps/unix/sysv/linux/aarch64/lp64/mmap.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/lp64/shlib-versions delete mode 100644 sysdeps/unix/sysv/linux/aarch64/mmap.c delete mode 100644 sysdeps/unix/sysv/linux/aarch64/shlib-versions diff --git a/sysdeps/aarch64/Implies b/sysdeps/aarch64/Implies deleted file mode 100644 index e5adf4d..0000000 --- a/sysdeps/aarch64/Implies +++ /dev/null @@ -1,6 +0,0 @@ -wordsize-64 -ieee754/ldbl-128 -ieee754/dbl-64/wordsize-64 -ieee754/dbl-64 -ieee754/flt-32 -aarch64/soft-fp diff --git a/sysdeps/aarch64/ilp32/Implies b/sysdeps/aarch64/ilp32/Implies new file mode 100644 index 0000000..705bc5b --- /dev/null +++ b/sysdeps/aarch64/ilp32/Implies @@ -0,0 +1,6 @@ +aarch64 +wordsize-32 +ieee754/ldbl-128 +ieee754/dbl-64 +ieee754/flt-32 +aarch64/soft-fp diff --git a/sysdeps/aarch64/lp64/Implies b/sysdeps/aarch64/lp64/Implies new file mode 100644 index 0000000..d2fbde7 --- /dev/null +++ b/sysdeps/aarch64/lp64/Implies @@ -0,0 +1,7 @@ +aarch64 +wordsize-64 +ieee754/ldbl-128 +ieee754/dbl-64/wordsize-64 +ieee754/dbl-64 +ieee754/flt-32 +aarch64/soft-fp diff --git a/sysdeps/unix/sysv/linux/aarch64/Implies b/sysdeps/unix/sysv/linux/aarch64/Implies index 4409e19..c508f2e 100644 --- a/sysdeps/unix/sysv/linux/aarch64/Implies +++ b/sysdeps/unix/sysv/linux/aarch64/Implies @@ -1,3 +1 @@ aarch64/nptl -unix/sysv/linux/generic -unix/sysv/linux/wordsize-64 diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/fcntl.h b/sysdeps/unix/sysv/linux/aarch64/bits/fcntl.h index 658f696..7dcbe65 100644 --- a/sysdeps/unix/sysv/linux/aarch64/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/aarch64/bits/fcntl.h @@ -25,7 +25,11 @@ #define __O_NOFOLLOW 0100000 #define __O_DIRECT 0200000 -#define __O_LARGEFILE 0 +#ifdef __ILP32__ +# define __O_LARGEFILE 0400000 +#else +# define __O_LARGEFILE 0 +#endif # define F_GETLK64 5 # define F_SETLK64 6 diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h b/sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h new file mode 100644 index 0000000..39c0c81 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h @@ -0,0 +1,86 @@ +/* bits/typesizes.h -- underlying types for *_t. Linux/AARCh64 version. + Copyright (C) 2011-2015 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 + . */ + +#ifndef _BITS_TYPES_H +# error "Never include directly; use instead." +#endif + +#ifndef _BITS_TYPESIZES_H +#define _BITS_TYPESIZES_H 1 + +/* See for the meaning of these macros. This file exists so + that need not vary across different GNU platforms. */ + +#define __DEV_T_TYPE __UQUAD_TYPE +#define __UID_T_TYPE __U32_TYPE +#define __GID_T_TYPE __U32_TYPE +#define __INO_T_TYPE __UQUAD_TYPE +#define __INO64_T_TYPE __UQUAD_TYPE +#define __MODE_T_TYPE __U32_TYPE +#define __NLINK_T_TYPE __U32_TYPE +#define __OFF_T_TYPE __SQUAD_TYPE +#define __OFF64_T_TYPE __SQUAD_TYPE +#define __PID_T_TYPE __S32_TYPE +#define __RLIM_T_TYPE __ULONGWORD_TYPE +#define __RLIM64_T_TYPE __UQUAD_TYPE +#define __BLKCNT_T_TYPE __SQUAD_TYPE +#define __BLKCNT64_T_TYPE __SQUAD_TYPE +#define __FSBLKCNT_T_TYPE __UQUAD_TYPE +#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +#define __FSFILCNT_T_TYPE __UQUAD_TYPE +#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +#define __FSWORD_T_TYPE __SWORD_TYPE +#define __ID_T_TYPE __U32_TYPE +#define __CLOCK_T_TYPE __SLONGWORD_TYPE +#define __TIME_T_TYPE __SLONGWORD_TYPE +#define __USECONDS_T_TYPE __U32_TYPE +#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE +#define __DADDR_T_TYPE __S32_TYPE +#define __KEY_T_TYPE __S32_TYPE +#define __CLOCKID_T_TYPE __S32_TYPE +#define __TIMER_T_TYPE void * +#define __BLKSIZE_T_TYPE __S32_TYPE +#define __FSID_T_TYPE struct { int __val[2]; } +/* ssize_t is always singed long in both ABIs. */ +#define __SSIZE_T_TYPE __SLONGWORD_TYPE +#define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE +#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE +#define __CPU_MASK_TYPE __ULONGWORD_TYPE + +/* 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. */ +# define __OFF_T_MATCHES_OFF64_T 1 + +/* Same for ino_t and ino64_t. */ +# define __INO_T_MATCHES_INO64_T 1 + +/* And for __blkcnt_t and __blkcnt64_t. */ +# define __BLKCNT_T_TYPE_MATCHES_BLKCNT64_T_TYPE 1 + +/* And for __fsblkcnt_t and __fsblkcnt64_t. */ +# define __FSBLKCNT_T_TYPE_MATCHES_FSBLKCNT64_T_TYPE 1 + +/* And for __fsbilcnt_t and __fsbilcnt64_t. */ +# define __FSFILCNT_T_TYPE_MATCHES_FSFILCNT64_T_TYPE 1 + +/* Number of descriptors that can fit in an `fd_set'. */ +#define __FD_SETSIZE 1024 + + +#endif /* bits/typesizes.h */ diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/Implies b/sysdeps/unix/sysv/linux/aarch64/ilp32/Implies new file mode 100644 index 0000000..151f0e4 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/Implies @@ -0,0 +1,4 @@ +aarch64/nptl +unix/sysv/linux/aarch64 +unix/sysv/linux/generic +unix/sysv/linux/generic/wordsize-32 diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/dl-fxstatat64.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/dl-fxstatat64.c new file mode 100644 index 0000000..b679bfa --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/dl-fxstatat64.c @@ -0,0 +1,7 @@ +/* In this implementation we do not really care whether the call fails + because of missing kernel support since we do not even call the + function in this case. */ +#undef __ASSUME_ATFCTS +#define __ASSUME_ATFCTS 1 +#include "fxstatat64.c" + diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/dl-xstat64.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/dl-xstat64.c new file mode 100644 index 0000000..e77b753 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/dl-xstat64.c @@ -0,0 +1,6 @@ +/* In this implementation we do not really care whether the call fails + because of missing kernel support since we do not even call the + function in this case. */ +#undef __ASSUME_ATFCTS +#define __ASSUME_ATFCTS 1 +#include "xstat64.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c new file mode 100644 index 0000000..1183f49 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c @@ -0,0 +1,77 @@ +/* Copyright (C) 2007-2015 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 +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +struct kernel_dirent64 + { + uint64_t d_ino; + int64_t d_off; + unsigned short int d_reclen; + unsigned char d_type; + char d_name[256]; + }; + +static size_t conv (char *buf, size_t nbytes) +{ + char *end = buf + nbytes; + struct dirent *u = (struct dirent *) buf; + struct kernel_dirent64 *k = (struct kernel_dirent64 *) buf; + size_t sizd = offsetof(struct kernel_dirent64, d_name) + - offsetof(struct dirent, d_name); + + while ((char*) k < end) + { + struct kernel_dirent64 *nk = (char *) k + k->d_reclen; + size_t name_len = k->d_reclen - offsetof(struct kernel_dirent64, d_name); + + u->d_ino = k->d_ino; + u->d_off = k->d_off; + u->d_reclen = k->d_reclen - sizd; + u->d_type = k->d_type; + memcpy (u->d_name, k->d_name, name_len); + + u = (char *) u + u->d_reclen; + k = nk; +} + +return (size_t) u - (size_t) buf; +} + +ssize_t +__getdents (int fd, char *buf, size_t nbytes) +{ + + int ret; + + ret = INLINE_SYSCALL (getdents64, 3, fd, buf, nbytes); + if (ret == -1) + return ret; + + return conv(buf, ret); +} + diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/getdents64.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/getdents64.c new file mode 100644 index 0000000..9686730 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/getdents64.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/lseek64.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/lseek64.c new file mode 100644 index 0000000..e69de29 diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/mmap64.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/mmap64.c new file mode 100644 index 0000000..6f1a141 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/mmap64.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/msgctl.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/msgctl.c new file mode 100644 index 0000000..caa9f36 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/msgctl.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2007-2015 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 +#include +#include +#include + +int __msgctl (int msqid, int cmd, struct msqid_ds *buf); + +int +__msgctl (int msqid, int cmd, struct msqid_ds *buf) +{ + return INLINE_SYSCALL (msgctl, 3, msqid, cmd | __IPC_64, buf); +} + +#include +versioned_symbol (libc, __msgctl, msgctl, GLIBC_2_0); diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/readdir64.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/readdir64.c new file mode 100644 index 0000000..5263dcb --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/readdir64.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/semctl.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/semctl.c new file mode 100644 index 0000000..0c90527 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/semctl.c @@ -0,0 +1,53 @@ +/* Copyright (C) 2007-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 + . */ + +#include +#include +#include +#include +#include + +/* Define a `union semun' that is for glibc here. */ +union semun +{ + int val; /* value for SETVAL */ + struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */ + unsigned short int *array; /* array for GETALL & SETALL */ + struct seminfo *__buf; /* buffer for IPC_INFO */ +}; + +int __semctl (int semid, int semnum, int cmd, ...); + +int +__semctl (int semid, int semnum, int cmd, ...) +{ + union semun arg; + va_list ap; + + va_start (ap, cmd); + + /* Get the argument. */ + arg = va_arg (ap, union semun); + + va_end (ap); + + return INLINE_SYSCALL (semctl, 4, semid, semnum, cmd | __IPC_64, + arg.array); +} + +#include +versioned_symbol (libc, __semctl, semctl, GLIBC_2_0); diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/shlib-versions b/sysdeps/unix/sysv/linux/aarch64/ilp32/shlib-versions new file mode 100644 index 0000000..17db764 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/shlib-versions @@ -0,0 +1,7 @@ +DEFAULT GLIBC_2.21 + +%ifdef HAVE_AARCH64_BE +ld=ld-linux-aarch64_be_ilp32.so.1 +%else +ld=ld-linux-aarch64_ilp32.so.1 +%endif diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/shmctl.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/shmctl.c new file mode 100644 index 0000000..ea0fa94 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/shmctl.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2007-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 + . */ + +#include +#include +#include +#include + +int __shmctl (int shmid, int cmd, struct shmid_ds *buf); + +int +__shmctl (int shmid, int cmd, struct shmid_ds *buf) +{ + return INLINE_SYSCALL (shmctl, 3, shmid, cmd | __IPC_64, buf); +} + +#include +versioned_symbol (libc, __shmctl, shmctl, GLIBC_2_0); diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/syscalls.list b/sysdeps/unix/sysv/linux/aarch64/ilp32/syscalls.list new file mode 100644 index 0000000..e69de29 diff --git a/sysdeps/unix/sysv/linux/aarch64/ioctl.S b/sysdeps/unix/sysv/linux/aarch64/ioctl.S deleted file mode 100644 index eddd613..0000000 --- a/sysdeps/unix/sysv/linux/aarch64/ioctl.S +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 2012-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 - . */ - -#include - - .text -ENTRY(__ioctl) - mov x8, #__NR_ioctl - sxtw x0, w0 - svc #0x0 - cmn x0, #4095 - b.cs .Lsyscall_error - ret -PSEUDO_END (__ioctl) - -weak_alias (__ioctl, ioctl) diff --git a/sysdeps/unix/sysv/linux/aarch64/lp64/Implies b/sysdeps/unix/sysv/linux/aarch64/lp64/Implies new file mode 100644 index 0000000..6418211 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/lp64/Implies @@ -0,0 +1,4 @@ +aarch64/nptl +unix/sysv/linux/aarch64 +unix/sysv/linux/generic +unix/sysv/linux/wordsize-64 diff --git a/sysdeps/unix/sysv/linux/aarch64/lp64/ioctl.S b/sysdeps/unix/sysv/linux/aarch64/lp64/ioctl.S new file mode 100644 index 0000000..eddd613 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/lp64/ioctl.S @@ -0,0 +1,31 @@ +/* Copyright (C) 2012-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 + . */ + +#include + + .text +ENTRY(__ioctl) + mov x8, #__NR_ioctl + sxtw x0, w0 + svc #0x0 + cmn x0, #4095 + b.cs .Lsyscall_error + ret +PSEUDO_END (__ioctl) + +weak_alias (__ioctl, ioctl) diff --git a/sysdeps/unix/sysv/linux/aarch64/lp64/mmap.c b/sysdeps/unix/sysv/linux/aarch64/lp64/mmap.c new file mode 100644 index 0000000..0133381 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/lp64/mmap.c @@ -0,0 +1,34 @@ +/* Copyright (C) 2009-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 + . */ + +#include +#include +#include +#include +#include +#include + +__ptr_t +__mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset) +{ + return (__ptr_t) INLINE_SYSCALL (mmap, 6, addr, len, prot, flags, fd, offset); +} + +weak_alias (__mmap, mmap) +weak_alias (__mmap, mmap64) +weak_alias (__mmap, __mmap64) diff --git a/sysdeps/unix/sysv/linux/aarch64/lp64/shlib-versions b/sysdeps/unix/sysv/linux/aarch64/lp64/shlib-versions new file mode 100644 index 0000000..e1768a7 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/lp64/shlib-versions @@ -0,0 +1,7 @@ +DEFAULT GLIBC_2.17 + +%ifdef HAVE_AARCH64_BE +ld=ld-linux-aarch64_be.so.1 +%else +ld=ld-linux-aarch64.so.1 +%endif diff --git a/sysdeps/unix/sysv/linux/aarch64/mmap.c b/sysdeps/unix/sysv/linux/aarch64/mmap.c deleted file mode 100644 index 0133381..0000000 --- a/sysdeps/unix/sysv/linux/aarch64/mmap.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 2009-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 - . */ - -#include -#include -#include -#include -#include -#include - -__ptr_t -__mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset) -{ - return (__ptr_t) INLINE_SYSCALL (mmap, 6, addr, len, prot, flags, fd, offset); -} - -weak_alias (__mmap, mmap) -weak_alias (__mmap, mmap64) -weak_alias (__mmap, __mmap64) diff --git a/sysdeps/unix/sysv/linux/aarch64/shlib-versions b/sysdeps/unix/sysv/linux/aarch64/shlib-versions deleted file mode 100644 index e1768a7..0000000 --- a/sysdeps/unix/sysv/linux/aarch64/shlib-versions +++ /dev/null @@ -1,7 +0,0 @@ -DEFAULT GLIBC_2.17 - -%ifdef HAVE_AARCH64_BE -ld=ld-linux-aarch64_be.so.1 -%else -ld=ld-linux-aarch64.so.1 -%endif