From patchwork Tue Jun 21 05:07:04 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 13265 Received: (qmail 28276 invoked by alias); 21 Jun 2016 05:13:35 -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 20718 invoked by uid 89); 21 Jun 2016 05:13:31 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.6 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=4095, prot, name_len, 20092016 X-HELO: na01-by2-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 20/27] [AARCH64] Make lp64 and ilp32 directories. Date: Tue, 21 Jun 2016 08:07:04 +0300 Message-ID: <1466485631-3532-22-git-send-email-ynorov@caviumnetworks.com> In-Reply-To: <1466485631-3532-1-git-send-email-ynorov@caviumnetworks.com> References: <1466485631-3532-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 X-ClientProxiedBy: HE1PR03CA0002.eurprd03.prod.outlook.com (10.163.170.140) To SN1PR07MB2255.namprd07.prod.outlook.com (10.164.47.149) X-MS-Office365-Filtering-Correlation-Id: 650e552e-07e5-43db-6c6a-08d39992803a X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2255; 2:p2XcVk8r8ZXzo4ZW0auW6UppvDHDPSU24w56XJomZSUn4VKsbpFGiHVegpjWP9clkttlvL7ubYkslGcuJGsw2bRD9xO5EfcFIjZHC0wPfD/HloiZ+OcvNwQrfrX12744QY7Xga6agVvMDRzuMHQ4QSwgnVJOHueQWPdyCT2EjEBjxK4ok60dD7ZV/5bj+JLX; 3:rNzONyZIMPdeqGXA8H30X7RXycjV1ufS31w4+oxoHVb/1Ayvxg7JCS4Ejp1hAv/N9bruV+FrmuV8/QlN0yH7J+KP912bFuu/mLIVbWVCxrCoe6tP6hNGTXZunkkv/9e5 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR07MB2255; X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2255; 25:YI942FXZt/P3H7QeWmI6DWAjnjegyJPDBlTE/lA4WBGseGD565zaMkvLHoNtG6y6Lk846b+8wuTQklbZn/Fs/b5553Ehk8GASd6u+BqKN8RdgNodDzGq889k+Cx/u6zUYquCLYvP5LEiZta+d1rXVvSzfpn9nWzBXb/KiTPjUi8Xdyi5HJE8CGx0dGsWh+V2kN/Se9ftSNuYh7MCQox0AaNm8UYSzxju3zZHBKMXJEYJpZdcs5WbSq0l9cvNdKQlCIPyfZlyZUS3wiFTPDeaq589rBS0HrhHrlHkjrG1LFTNslrWYA7NllSy59dYMs9QE77ZMnrbUye6ZLiafsK54N1LQ7H6GAd//yU812RBJpoEES96onetyRCjwd21lciCUHld7H4OPMVBXv+uTeJMiKjr3F/cUosFhrESLwnxZiBFyND4ZtjLkhrmkJ2czU3ATs+rtexNJ2649oBA/FiK4MBhwm9eaMoz46VQg/UcjRjZUgN0xIMj2I8PO1MopDsdyjPIiK4AginMMggR1a8DFEFqxQZANiIpxvsd/l9n7p7EDGli1VKFcSBFNJ5KUJevrB9CKXXA/fpsmE1EMPmlJDrOXpbSYAs5lUk1yR7WNCTYRTimpj204VlLZbGljFna/GEfB1exo4dLEpMKnqYD7IVu+/6LH3739yTOrqOkBOxvmNWGe51yL1oTFR+p//PB5JG7s/7kSPzkbmxYY8MgdQHvR9nV6Y4pab6nkZU+xgU1WQ0I8gi65uBQuBV7J/FlJ6zDEbt9inUiRv3aodRc2VspE/mJIk/TOgMuYKvVu2LIv7GuDY+s4emVxk05WaZD1QEYNBdAJNcpbuaVeo1tXw== X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2255; 20:pReAY/8+xl1Gx/ycSYRL4e2czqDlsBwTcMGTkCFL3SwDvnELVMaiq3GDB7zP7oldg25OC0NNJgg2a2OTyQ7X70USZ/e4ggHv57YJAkz8392ft0UJt+9iCjqlxARsd36ulGb7WwcvJ3UVjb9Iq7XoPIkcrx7MtpNTSKNZxHVM/AZew4quQBPySGb1cx9kS3HItl+PXmkZC32EokviRWGOAPlmqmV92fwJ0TJgsEI+0Vo/grJ3n81knf1G5EdVDEpvAwuevm69JRw7EiqFlsmS26peZwTsPcSqw0Wra6T+14WJtCWxbD5Vt61sVdu7VhIH0eVRgT52KmnrQwqJ2XHEtux7BkWclmP9IYn26Ji6Xg/g6Ijt1vVXEImKt3MYRnj80b+eZiGBt4rMqraXZXwv4kl/2B3lNxH8ScWlUHQf4I41JetwkkWweFBYDHi9Lyur+pDySAkbIUNIFDRCmcCyIFKgJ6SuOJpErRCNpRfGRSqG7Q7foyZUbPy7HN5fGyCasw3Sh9FgdRcBtK4PgEH0tLKLSYmxN1m6ui5J2v8ONhXWKB0agPouEY6f4HAw2D9JEzjnVZF2CHvV0GMygBh8vCcfjlW5IsIOaqUoGNXUQRw= 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:SN1PR07MB2255; BCL:0; PCL:0; RULEID:; SRVR:SN1PR07MB2255; X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2255; 4:1cFWDcA5deDI/9u1LSCTb34OE1OFnEW7tGndi4gFHL7WI0fxVnslUc2CtsR5krWIR0CZjROUxqHVdShnK/WXuo1gB3+ZeiIbJUV/QZDOyVYHFUboTFg3U43IxqYZaSHdrZgSUfBoaBEh6ahL5vxHMUKmc4pJO/VnuyB6LPLognPl2c30SSI4RVf9gVjS+uf9tBA0cetQbrLm3+Utdh3o+qaIONK5p3kyiuyrq72sUevN+XIb7VZuO7PxY4ofJMWOAk0h3fHA75LvXejS9HiDzq1znaxuREM3GVK05n4qosMB61gs5N33frWcKHE82p5cjyHQsxMqGG7Asqd12CYmJ6aagTubnGJp1BOqAMEpULoh0F7Cu6xbJ8LmqeUA6/NNoAb1yzh0ovBfBq8Y1mzRfQrVKObLDpXlYOPhPNNaumrW8F+UlkMNdQ60VjB/13Aj X-Forefront-PRVS: 098076C36C X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6069001)(7916002)(199003)(189002)(48376002)(4001430100002)(68736007)(36756003)(5003940100001)(33646002)(81156014)(81166006)(8676002)(3846002)(6116002)(586003)(97736004)(42186005)(77096005)(189998001)(107886002)(5001770100001)(19580405001)(15975445007)(101416001)(76506005)(19580395003)(47776003)(105586002)(50986999)(106356001)(2950100001)(7736002)(7846002)(66066001)(229853001)(50466002)(50226002)(92566002)(76176999)(4326007)(2906002)(575784001)(2004002)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR07MB2255; 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; SN1PR07MB2255; 23:eIuJcKyO+LlYWzUQImcufPUb5HrHJsZeAKmJWBWYj?= =?us-ascii?Q?XsoR8diIIEd0Fw0iZ4xG8hPJjriWb4njoKB/ESyoAX8jFVFcL62TOlyYY3ze?= =?us-ascii?Q?goO9er/jpKhCdgai9WIy5VWVCkdMSpimzr+T5lHlKpr3XPsvPuKPIGveibnY?= =?us-ascii?Q?SQDoepxmBnixlZrQFnx47IFdaWOM+cIJC9H3h73PZr5YWheFBLYj8hEifsNr?= =?us-ascii?Q?dBLAeGNjjhRYGs05N0rDA8MtPPSqUuwJ1bTdtp7n57M8zLqawLz1ozYMtKBt?= =?us-ascii?Q?D4p8j0/bTT1cKVvrlrLiQRfUWt/0IyfYNkzA1CVs4diTnPXq/LnppuWzkA36?= =?us-ascii?Q?XR4RBAk3wOVeA90hVRnUlUogtQV/7nSgS28N70RyfIt9NtUp3+4xfcML9aFU?= =?us-ascii?Q?mFs+ZLJcnsQTXsc87s8EFr1o1bGl/J5A/Vc3k3QhyULWA7ITLDI5KPJA/TMu?= =?us-ascii?Q?Kci0rVfLlGpN2q9u13QZ8AvECXH9s7KbKAQBV3D04PP3fw9HTArsLTeT3vTe?= =?us-ascii?Q?WuUCQQqtioJ7BNqapK12LzUxxQQFFQpOykt3Nj0AyRI5UixrhG1bNSvg5pIE?= =?us-ascii?Q?L6SkBN0v4q8K4eFT16nKLDG86qVcEsIKTVnY3mPJ14F1TmlrOS9IebZZdm0Q?= =?us-ascii?Q?89wvAIO54xFRplAyiiPpcOqZtbi80JJ2jVWV7dz7wzRrQMx4N9HqpbsvvRH6?= =?us-ascii?Q?Dn9YYZkrrJ3dwgBnZ5/O1M9rO26WgT46PTdJDCDDdfX0evT2DFAOYnAsEkMK?= =?us-ascii?Q?nko3HX76D6XOVKstCL/+/vYopj1dRlX+aRJOaWPHuHBQjTm+hcmhthhGFqyK?= =?us-ascii?Q?tMi2M4L5uNwMnmdlL3S3vvxK99QyxenL75Uj0xx30bRqiddfw0Q660Hzgvfb?= =?us-ascii?Q?UHRZFuW8t8gzgpMIXT1nbLRW5WEivKUmOaZIOHtUf7+RprWeE7ir914vTNET?= =?us-ascii?Q?0F2PplIonRlaSLqQoSFAerOO00KipZCc5o1leYVdlJbNQKnJBmncpU/qxV5B?= =?us-ascii?Q?lugvN7mgYMb/fw0WsoAqYPETM1X5NEl9nmUSdbGxUq5qJAlTRUX/vaZO5qiu?= =?us-ascii?Q?W14m/yz56T9lQX0d3L9ySgy1/d7PPU8L8xk0ke4Ff9x73dzIeVlMUKE5qSm5?= =?us-ascii?Q?ea8oRyVtL2KmZoEWuDcnwM3mRmw8L4ssETSMXvf7wCtHfh5qIGQ40u8R9O5i?= =?us-ascii?Q?bzVgCq/GWK7O486TtbzUJXW1zzmuzVfhkzw?= X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2255; 6:KYEYtfVvZ40YO7aJ0vF1mEN19PMmJP55F9FoYXDMaBVeTk/L8+yQsspmKuuCJ3lJYj4zh9PABe6neiNnn2OOIO4M7vZrWfBB5CkQe4dvDymva5nEwqexPiMoSo106sLoYNr3xb+qF474eFRtTefHTib6CIpwqSiFIn34zwtRQoWiv4bn2c2LEY8acb72onadG5HWI0cBR8zOqikoMIsNuJ4SdrfHQZFgSuLiy7YhzdYxOQ2j3TA7t3/WKalmwKJnMf9DXxG7MNvGPjofSP+HyPx/9vEftR/o25eHW0UmBtw=; 5:ttwrLpuNgq+WZRjBoShQ4rt6anC5q04QGIit44VJ5Xwb9JSxyMgpYfkU4SGOVvVl/jhXMPY1UM1vALKBQcL7vhS5sSOhArXs4n+KFfYGcC+ovC9bauYtA70SHCvnuYUL/ysm7Lx3TgKjdOVmhrolFQ==; 24:5aVBP6P1KJEXQItuEuJHhZNvLZiD50VmA+Uad0/UgYRn/jhVB3l3yHkPa1vljHMJCRZlz6wHelpti8qQ3jR3uYYMPi9AKs+AeMKoiIv9jcE=; 7:ruOPECmR8YhBmgWBev0tOMrQ6xvdFFUdqBFCdlNSk/CUpKouNaoVgPQ0F8rNwWKbdZ8tCDLvpD+G38XWhYjP6by1bcdvzD8G/rLDmx0f2p29uzgJ0aLpNrJNPnYAdGFRMbbIZKR9/SV856vMsf65UBaCoR6VApjKeFQgfta1zZwWzZTy5igEGnyfi5t1e+x7eXmnRpFxXgs9JzQRwBiE2OZPEheB3KWmNUssGYF8vMDUGpBo7qqjmtfT5aM82KDD SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2016 05:11:28.0135 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR07MB2255 From: Andrew Pinski The patch makes the ilp32 and lp64 have their own directory under aarch64. Since ILP32 uses most of the same system calls as LP64 and has a 64bit off_t, we need make the functions that end in 64 the same as the ones without. We also need not to special case ioctl or use the already provided mmap.c file. 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 | 26 ++++++-- sysdeps/unix/sysv/linux/aarch64/ilp32/Implies | 4 ++ .../unix/sysv/linux/aarch64/ilp32/dl-fxstatat64.c | 6 ++ sysdeps/unix/sysv/linux/aarch64/ilp32/dl-xstat64.c | 6 ++ sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c | 78 ++++++++++++++++++++++ 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/preadv.c | 1 + sysdeps/unix/sysv/linux/aarch64/ilp32/preadv64.c | 5 ++ sysdeps/unix/sysv/linux/aarch64/ilp32/pwritev.c | 1 + sysdeps/unix/sysv/linux/aarch64/ilp32/pwritev64.c | 5 ++ 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 -- 30 files changed, 346 insertions(+), 88 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/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/preadv.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/preadv64.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/pwritev.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/pwritev64.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 index 844da49..cd66504 100644 --- a/sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h @@ -29,7 +29,7 @@ #define __DEV_T_TYPE __UQUAD_TYPE #define __UID_T_TYPE __U32_TYPE #define __GID_T_TYPE __U32_TYPE -#define __INO_T_TYPE __ULONGWORD_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 @@ -38,11 +38,11 @@ #define __PID_T_TYPE __S32_TYPE #define __RLIM_T_TYPE __ULONGWORD_TYPE #define __RLIM64_T_TYPE __UQUAD_TYPE -#define __BLKCNT_T_TYPE __SLONGWORD_TYPE +#define __BLKCNT_T_TYPE __SQUAD_TYPE #define __BLKCNT64_T_TYPE __SQUAD_TYPE -#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE +#define __FSBLKCNT_T_TYPE __UQUAD_TYPE #define __FSBLKCNT64_T_TYPE __UQUAD_TYPE -#define __FSFILCNT_T_TYPE __ULONGWORD_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 @@ -62,14 +62,26 @@ #define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE #define __CPU_MASK_TYPE __ULONGWORD_TYPE -#ifdef __LP64__ /* 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 +# define __OFF_T_MATCHES_OFF64_T 1 /* Same for ino_t and ino64_t. */ -# define __INO_T_MATCHES_INO64_T 1 +# 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 + +#if __WORDSIZE == 32 +/* And struct timespec needs pads. */ +# define timespec_needs_pads 1 #endif /* Number of descriptors that can fit in an `fd_set'. */ 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..9a17a9b --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/dl-fxstatat64.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 "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..0f89a09 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c @@ -0,0 +1,78 @@ +/* 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) +{ + + struct kernel_dirent64 *k; + 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/preadv.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/preadv.c new file mode 100644 index 0000000..b5b9994 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/preadv.c @@ -0,0 +1 @@ +/* See preadv.c */ \ No newline at end of file diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/preadv64.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/preadv64.c new file mode 100644 index 0000000..72bfc63 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/preadv64.c @@ -0,0 +1,5 @@ +#include + +weak_alias (__libc_preadv64, __libc_preadv) +weak_alias (__libc_preadv64, __preadv) +weak_alias (__libc_preadv64, preadv) diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/pwritev.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/pwritev.c new file mode 100644 index 0000000..298a33e --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/pwritev.c @@ -0,0 +1 @@ +/* Implemented in sysdeps/unix/sysv/linux/aarch64/ilp32/pwrite64.c */ diff --git a/sysdeps/unix/sysv/linux/aarch64/ilp32/pwritev64.c b/sysdeps/unix/sysv/linux/aarch64/ilp32/pwritev64.c new file mode 100644 index 0000000..61dbd18 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/ilp32/pwritev64.c @@ -0,0 +1,5 @@ +#include + +weak_alias (__libc_pwritev64, __libc_pwritev) +weak_alias (__libc_pwritev64, __pwritev) +weak_alias (__libc_pwritev64, pwritev) 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