From patchwork Tue Jun 28 16:39:37 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 13445 Received: (qmail 37715 invoked by alias); 28 Jun 2016 16:43: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 37396 invoked by uid 89); 28 Jun 2016 16:43:35 -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= 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: , , , , , , , , , , , , , , , , Yury Norov Subject: [PATCH 22/23] off_t: fix register pair calculation for 64-bit case Date: Tue, 28 Jun 2016 19:39:37 +0300 Message-ID: <1467131978-669-23-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: AM5PR0901CA0001.eurprd09.prod.outlook.com (10.164.186.139) To DM3PR07MB2252.namprd07.prod.outlook.com (10.164.33.150) X-MS-Office365-Filtering-Correlation-Id: bc166690-ae23-4de9-9c75-08d39f735475 X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2252; 2:X9gmBIGJhjOHmU7s+M6tV9u1lOohrxCJtFPku5raaPRS/dc0ufBhB5IYmUJnh63+9q+sB93BG9FHOvq9SMm/SyKncvyv7o50eFDj0E2rsBzow0cuKD01KSMmKJL9Jcr5jd17D5P52zZoMBuf23U0IsDXCos9TKwO8iut1Jfkt+QxxSPyX0n7FU6TaXYjioIu; 3:qWOz0DTKt+Mf6wBWv/1LBGiipFD8K5FZ68sXDZDjHwFQqebBBmHNSkW+WryAtSdD+bS5cned28kqxddbOh+VxaERF3nTxX8vUrD7are1h9vrDU1wQ/AlS4/IHYz+6ozt; 25:sDg84qyen1mrqIAmHy2BEW4/oHbXPxtZVBxBQW+R44FZd4NlzDenSv9e7hj1auNox32PSH1GICIWtnZUMb2hzR0W3QRyOnCNWQgDySO2V6VzbkUwx9rv6r1Vfs+uK2FCtLj5fMvq8GOcTugeoO0T55Wi9w5y8nviVsqUGKh+0+6w9kAv4pI1EdKRp7GuqiCg2akrvBZ0KnW2xVd6goiXoX3O8nXJvql5lxxYhV6t1sXJtmgS8+nvuke82m8VY/1SuzNCxumuVbO5wlSLfQehnFXV4UOZeQEXhAMJ9LvQijdNncLDAG40A2/vQ6PC/wVpu78EqgkVenhmk/E8jEDVbVp+tvHHanf+t0VciXXnUPqRtbgGpbOXW3VWgLShMetESuFrIdUoaxk/FMUskRM4Ayk35VMbdicEVjk+CSOVs2Q= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM3PR07MB2252; X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2252; 20:+U62YmA6ZipYNXXGdv1XpILNVbMP7gT57nFgjTamEsCCwJ31yTMygwHFMBynoodSlq4Kx1K2Vw2TE4FFiP3eofC9bsIbsmst7C8If1U3qnktWYGYUtvh60ORRc0fU4y1GDqCCp5a93J1muJ5C6Ij+/DsrxMjRnLYIgvZ40cAVSUdYeY9QxL38Yt4ZLaMDQyd0Q4rBOa9PnuVX+u2oF8hgxLkGltRxjs0g4uokDiK7JgPQSKIPCDV04ZFkHnXiJyqpC55Qny9mdUrjvyoMVKEPrUlRpR7E3VTXHdmeifzTELbb1eWTSWfo/Sc+CrqQY9HgIPxJYf/OpqOsrCow0go1aaQtryaxTkBx4Q4ydb2ftD/ARMNk1CO7WQqenv666ovA5Hz2ngB1zV0BJ8wg/aU14NSmLFMBxglxQLXQ7HbyCVWdJsRIWxbDKMr5Vm/nUg/tRz1kqPW4Z/1PqdDKTSlFa48KSarzyDNutouNnBuCS4HCQ6wlAoy+1ih1MLPrTSwP37zGQo2ScFLseKqJ1dKJAXongsaCDWtXEAiDZHb+VR41GQWiKtN/wHdsGGMz6qL/MQL/uzeJ4vQc1C+PsRiavQZ/t5ZAqOAxExuf/G+tFk= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; 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:5TnW1f/exEvZznVk0WJFplLtH2fIEo3SKpyqMwgckbCFdqWYaO0zY++6dQX0KQyGDgJAp7XytWDKe7inQvYUAU29GGHJWMZAokN5pA8wIgp+4PXuTqw0+Rv3sRA5x7Oz4Ma+QT9uo2ZDwoVcvaRgP7nzwxo6fW5gKXhOmAwpUc0ZAGwWCYMMgQCygtvHZNwWaiyjENjWCko2xsq/RsPGesI8qXL302HwvUnUuFx1vfXVzbXiYB1oXhvqGjDBt/TQbRqB8za6miU9AH1Bajj5x5G1wV/jvjxlmu9zrhPgr/7s/KwMT7HTYKVxWB+2q7fPNZ5ENlHVMy9MlMfWbfdyAPJtvS000GoTTBp1XdEFY3Ohrh9zv2QgRvZ7SJxvdTGi X-Forefront-PRVS: 0987ACA2E2 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6069001)(7916002)(199003)(189002)(48376002)(229853001)(586003)(42186005)(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)(2101003); 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:tmcyAevkCXUrSj/+aHA7laQRTNkRRJHJn/m8ycNfz?= =?us-ascii?Q?O6WcVXRhEF1rD6xzIv7bgX8BR7gTaLBv5BxbGjjX+6Qq2kt6A83iwAHz0xPd?= =?us-ascii?Q?/GvegUEgsXEjPY1J8vNCQptsz1EDd09RbTAMV7DcDr2IuEIBnIVPd8w8foKV?= =?us-ascii?Q?Hgx5yMUd7CZ4Ozj5KOEvlNyiYsRdytZ8DWWfmZaVPKWal1WXKiP2gZoIn8hS?= =?us-ascii?Q?rvYBF5j7jevaxnq1D3ArgETHseAR8rhS1XzP0l791iMvzH7hZiTlgI6K/9KY?= =?us-ascii?Q?s8fJCZsNYIPV6KYhj5NeQ1cJd+qMp6u88LIXyyOzI6vezlWkD2S+Em5kTwDF?= =?us-ascii?Q?CYnjpMAXlc7bxnv+D5AefW0b5HccBpC1ocBIKDrN8q6WRkwvzv31CPmZj0lu?= =?us-ascii?Q?ULFArwRDajehc3AjhVQ0QXxhYXgRoggIBd1gatB3WUWnE1ADn0fcqb5a0xIh?= =?us-ascii?Q?zHD6uR9c/+sA6+TUFLDoZMhasxaJ7Uxu3vGPTiL0usNla78b5HEfWFjBDZRx?= =?us-ascii?Q?TNGQHr3km+bnjlo7qrRe8y+If6PXdZUqGT8TvQnsFRQElQjW9FOEatmJKCfI?= =?us-ascii?Q?84Y2q8kIYlz4q+nD6szFzEKllUJrEC3RZpU/IN8SYqr4AA+vW4yrGj4dFl1R?= =?us-ascii?Q?kT8rEd4oZS9BtBevUpyW1Af/T9YcWKOM53dt+QeE2JVOO62DcolRTUANHUUg?= =?us-ascii?Q?X7jxO2V33ZiQfRe5UdEl8lQOJbM+VKt63AaGNeojcC4E7unZ7MJokFZ6Z1Ee?= =?us-ascii?Q?sqqQZBh90ZjyZgZr37r9cJ3RZ10rfl78UclLR0YFSSSgwxEXhf6iNJEEcOxN?= =?us-ascii?Q?BaZ5Mb1OTZnbauUbuutYF3Alq27NEoSLhTTO7JPJL3LrmZabvGcb6j/slg8p?= =?us-ascii?Q?Tt7/P39kRXZ1etPqyRWOydpK2nzJIa/Cj9BCxWe/Jvxq1j7QFZigcschfhty?= =?us-ascii?Q?rk1Juf3er83vVmPt49myD2mtjgy//YZOiPIwZmAPe2M0zYTg8xp1Mu2Y/O6G?= =?us-ascii?Q?OppZBE8qratjHFWLwsP9K/HLvwC7ToqOuFP8lilBUYS3cI3kAY7ugu+6cZCE?= =?us-ascii?Q?57XrSWkqXgqJAsWs9VKLV7qhs4a6HzCvGUfB3KcJn2IxhkHUuXKdjSMjfmjx?= =?us-ascii?Q?ojDeHU8BZzIMNLUmnsdIx82ZHB6Zc3hWpmjB7SDQQD8CipGvtsqIE/DFKvBS?= =?us-ascii?Q?MI0fXkLXiMae7c=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2252; 6:WnD30M7PHhFZPquD49o5wy00hPCy/r/h6M30XrkAKmW0IrB7BZL/bIDlJAMcC5aOkul580kQwLY5RDq6tV/62hsuHip/aqL7jLJ5corbde616Z7fL1pkLLRmKqZ96+B+OXBPQ6DQ5xoLz/g+J+ikBBNBcpgSd3bosKIDkmrclwjiRdfMEhQrp31D3mIQhFrGAc6ehnq7J4VEbrht6dTwiUfeZLfi6MpcoUlpeG3IGnitj/FUhJtQW88oy6wjOX2Gq+LdgLuGdnJdzphkzvVrYs3lcgzwRUs+51lEskRkGse0yuUO5YMJ2vG4erAfjpv/; 5:nOCcqM0S2PSKtUn4BBtH90FKXv0MqJZDgc0oNugSXF7jUSQ2hQ0OjPeAvy6S4F30Y9FdihM8cFkhG3CfKUgs4B1rIphwcaBgOcXh00bzgRx2rrYud5JN0uXR2OKI/zKFn95NBCH40WACwpHbrFbprw==; 24:V5klnJLEO+4JNDRCbcHcJhyK2/AJJQJtcrxAPcOXoxPmHv/OLaTZwLMtgm8Nd7xn1uFwmx0X+6gJr8/UZEdNBBTecIlPfyWrDeTCNOAldD0=; 7:NoCFPJ3KITjaw0FIXaRwreysHjW3uOCb2wbjJrRjAhcvFeYm0dac6jQa0zMQJicK2EESTjhF+SZB6mrbe4ZLtFvf8VWbMonNhZbJR0gq8fH4iIsw9e8N7ZnDFowUlc9o/dj6ZbvP0g3/ewYPs68J7ZxSSfbd9Pd+qZ9ql1IFtdWXYKhsPGfa8qUgRcURp9yskgSHphFis0SJxFPBh3akTHSVOpNZFL50TAqboQ5UKgOLVNKaA1RdOna6keFSNZiz/h+AOiyuKOIKZ7TMVsP0Ww== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2016 16:43:27.2938 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR07MB2252 There are 3 syscall wrappers under sysdeps/unix/sysv/linux that calculate register pair for off_t like this: __LONG_LONG_PAIR (offset >> 31, offset) While it works for 32-bit off_t, new 32-bit APIs that use 64-bit off_t will be broken with it. This patch redirects affected syscalls to their 64-bit versions. It also saves few instructions and symbols in glibc, as 32-bit syscall wrappers are not generated anymore. This patch has also been sent separately and is found correct during discussion. Signed-off-by: Yury Norov --- sysdeps/unix/sysv/linux/fallocate.c | 4 ++++ sysdeps/unix/sysv/linux/fallocate64.c | 4 ++++ sysdeps/unix/sysv/linux/posix_fadvise.c | 4 ++++ sysdeps/unix/sysv/linux/posix_fadvise64.c | 4 ++++ sysdeps/unix/sysv/linux/posix_fallocate.c | 4 ++++ sysdeps/unix/sysv/linux/posix_fallocate64.c | 4 ++++ 6 files changed, 24 insertions(+) diff --git a/sysdeps/unix/sysv/linux/fallocate.c b/sysdeps/unix/sysv/linux/fallocate.c index 6a58a5f..4ec55a5 100644 --- a/sysdeps/unix/sysv/linux/fallocate.c +++ b/sysdeps/unix/sysv/linux/fallocate.c @@ -20,6 +20,8 @@ #include +#ifndef __OFF_T_MATCHES_OFF64_T + /* Reserve storage for the data of the file associated with FD. */ int fallocate (int fd, int mode, __off_t offset, __off_t len) @@ -33,3 +35,5 @@ fallocate (int fd, int mode, __off_t offset, __off_t len) return -1; #endif } + +#endif /* __OFF_T_MATCHES_OFF64_T */ diff --git a/sysdeps/unix/sysv/linux/fallocate64.c b/sysdeps/unix/sysv/linux/fallocate64.c index 8e76d6f..f4f73d5 100644 --- a/sysdeps/unix/sysv/linux/fallocate64.c +++ b/sysdeps/unix/sysv/linux/fallocate64.c @@ -35,3 +35,7 @@ fallocate64 (int fd, int mode, __off64_t offset, __off64_t len) return -1; #endif } + +#ifdef __OFF_T_MATCHES_OFF64_T +weak_alias(fallocate64, fallocate) +#endif diff --git a/sysdeps/unix/sysv/linux/posix_fadvise.c b/sysdeps/unix/sysv/linux/posix_fadvise.c index 093d707..8356bc7 100644 --- a/sysdeps/unix/sysv/linux/posix_fadvise.c +++ b/sysdeps/unix/sysv/linux/posix_fadvise.c @@ -19,6 +19,8 @@ #include #include +#ifndef __OFF_T_MATCHES_OFF64_T + /* Advice the system about the expected behaviour of the application with respect to the file associated with FD. */ @@ -46,3 +48,5 @@ posix_fadvise (int fd, off_t offset, off_t len, int advise) return ENOSYS; #endif } + +#endif /* __OFF_T_MATCHES_OFF64_T */ diff --git a/sysdeps/unix/sysv/linux/posix_fadvise64.c b/sysdeps/unix/sysv/linux/posix_fadvise64.c index 6d10558..c76d52f 100644 --- a/sysdeps/unix/sysv/linux/posix_fadvise64.c +++ b/sysdeps/unix/sysv/linux/posix_fadvise64.c @@ -56,3 +56,7 @@ compat_symbol (libc, __posix_fadvise64_l32, posix_fadvise64, GLIBC_2_2); #else strong_alias (__posix_fadvise64_l64, posix_fadvise64); #endif + +#ifdef __OFF_T_MATCHES_OFF64_T +weak_alias(__posix_fadvise64_l64, __posix_fadvise) +#endif /* __OFF_T_MATCHES_OFF64_T */ diff --git a/sysdeps/unix/sysv/linux/posix_fallocate.c b/sysdeps/unix/sysv/linux/posix_fallocate.c index fc9ac37..f9ca34b 100644 --- a/sysdeps/unix/sysv/linux/posix_fallocate.c +++ b/sysdeps/unix/sysv/linux/posix_fallocate.c @@ -18,6 +18,8 @@ #include #include +#ifndef __OFF_T_MATCHES_OFF64_T + #define posix_fallocate static internal_fallocate #include #undef posix_fallocate @@ -37,3 +39,5 @@ posix_fallocate (int fd, __off_t offset, __off_t len) return INTERNAL_SYSCALL_ERRNO (res, err); return internal_fallocate (fd, offset, len); } + +#endif /* __OFF_T_MATCHES_OFF64_T */ diff --git a/sysdeps/unix/sysv/linux/posix_fallocate64.c b/sysdeps/unix/sysv/linux/posix_fallocate64.c index 4a0a722..3a65d35 100644 --- a/sysdeps/unix/sysv/linux/posix_fallocate64.c +++ b/sysdeps/unix/sysv/linux/posix_fallocate64.c @@ -40,3 +40,7 @@ __posix_fallocate64_l64 (int fd, __off64_t offset, __off64_t len) return INTERNAL_SYSCALL_ERRNO (res, err); return internal_fallocate64 (fd, offset, len); } + +#ifdef __OFF_T_MATCHES_OFF64_T +weak_alias(__posix_fallocate64_l64, posix_fallocate) +#endif