From patchwork Mon Sep 19 16:56:44 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 15777 Received: (qmail 104651 invoked by alias); 19 Sep 2016 16:57:11 -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 104631 invoked by uid 89); 19 Sep 2016 16:57:11 -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:mail-bl, H*r:104.47.38, H*r:sk:NAM02-B, H*RU:sk:mail-bl X-HELO: NAM02-BL2-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] generic/wordsize-32: don't declare getdents() if not needed Date: Mon, 19 Sep 2016 19:56:44 +0300 Message-ID: <1474304204-30677-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 X-ClientProxiedBy: VI1PR07CA0069.eurprd07.prod.outlook.com (10.164.94.165) To BN4PR07MB2244.namprd07.prod.outlook.com (10.164.63.150) X-MS-Office365-Filtering-Correlation-Id: a21f3262-0b18-4124-3e1f-08d3e0adf79b X-Microsoft-Exchange-Diagnostics: 1; BN4PR07MB2244; 2:6ibBdT/ynTs6zxc0+8SiDnvHnOG+BThebkF9QBGTjSYcMAHOm808AtRadBK3NqnWirHjVRTn2yyP+FC7D8oUqrvHdhrJmAkgp+sq0hP1/eD0OjDfZbkq9akDJZjMierahmlRopBgqFodZRUjc6cRn69JCjluMGnuKTsEV4zpwQXuzczEu7MFJJ8+WGO9WFTn; 3:PO6wP0hudsD4B7DR72LMapi0nafGZqW7io9r7QPv+fX6zzKJhbkRsgly5UBAL56pf8gXopymbhwSjSnkPI16ti2GOoD4rQWKgg69VgWA4EP1hoe2DBrNkyV2MHCcx3G1 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN4PR07MB2244; X-Microsoft-Exchange-Diagnostics: 1; BN4PR07MB2244; 25:kMs9dhalljCZv4AsD4D+/5MM/c7tyRRPy6Zw1eTf4MyiGuKsjkOT5mpYQSMBPXdwa6I8yW+I0mRgHstP23J+prBHewtqgUKIMfA/iqmaK8ghiqZZWyFBz71JgKN+X4eCmcEi6ohLeqaUULYzHw/45fajLkp48FEwJuR3HwvDqffCUZbCFEPvTo4Qrgw3dycFYXE7JKDux0gKSQs/rgytxRUt4va0ViHiCZQ7ka+QIgc2VjIWeBijEVuAx59mamyIXuFQVKN53O54WhSWL0sEwVqfPCk7C7LKOwIlppYHb0TrHXr93B1qIpT13X2pGwc2wHJ9KW6CdpMv78NKCk86tSWgqhCP9T8P77utZwriRj8SKtqWTIN8F/P0fxF4cdamHKkj++G55uvi2LStZfTsHXNRylyA0wkch9XOvcOZfb+3jNS9h8FDIE/+w1HIjvOSI0OO/HBIPmh4vyeERHwMUIeBiwVHonfSwFONMnR0NmBVNhfAtotF0I22f4zOfRovRHaLdpWwklXtExTXOS6e5t4kU8KXO007SVMPUJ1rBLMttyuQVFxROP24t8bhbt2ZmqdXEv9rPfXLus0mOE3B9PCNqLx1XZXBL08gkTDaoTpB6MUVobf9N28sYNMSRqViISE88hKRJEWEkNA0LJUBN8UZXIljvD87T54mbGmsRGGY+TG6hMaIMlSVYzhH6AElGQ6ba10PewJQBCMfO28HgUXA1HTTMctyTSWIiOnbxYlabK+L2pdCIxKyhQKKLiBwd9JBumZM80kPaTcGF/JEg+AwBCrQYTttx9LTtzty5CmBwhKI7z7GlYLELFC8Fui42nSqNFcuJlEexluc8rvrDQ== X-Microsoft-Exchange-Diagnostics: 1; BN4PR07MB2244; 31:5eyPHHP2hIs4lBW9LccbjQbpEEzf0sW8HVWWpqGOJcCLU7x1Ydbh1P87GHCJik4ND2bIt/aSRTyRWZpW3R7K+0ARebsi2QKoZtcDHmPY5My1OUZyEsXrH5TUnuMDnHE9rCvO8rl/JnJvMZ1djIKPqsdxm9hlmx8FbwVerd1YM3lobiQlYWfOxulWZmlUOzE15SKB7sbNNQH7wsOHIEfNJOd0UK4fqNn3dzy7bBk3ED8=; 20:XkyYb5+3rNe7d9ZK+Sh3bObi4NzrbNsiMLQyYaYH+r+QWG6YUifsiOO5+ErObhJhydqokLxycZ0TRl/mU9LTOCV7/A64qpPKl1ID3dapoxHBNc1up7P58j3aYQ6Z5NJEHoYq254tHu0jZhJBbl5bA5chcba6wjBEYQR96q13LolYB52ryHBIUEYdJ/0HPeL1JPB9ym/ALlWjBLr1+SQ6zD7sHbgpvavmrsfuwJwXfyhl9XY2bm4cKpbwkXGX3JFqCzHkt8YbAfDNffq+WWRgltqZLYnicVMJl01S2l7c+vK25d+DgC7kxGFsSSPC0Tkvddj2W3CnNnVbQQpChRQgd0JOImxjl0vKAZwQDXNx3ZPGGleHgkfzOh3G/cYjWdQCwixGvddMQEop62BDbpgl/VAPj41tkxIKtDu4WZpqb48l780gN87da3COliKZyddoF6Wzwm8pw8VHW9JcKJUpROC/cMuUcmuciUsRKkqnuTDymTYHi91kj1TbtPyp8H/pOjFYg37FZe/kKI536cfhCrVng29tiGyyJaNvMIar1bn5tzmLW8LRA252gHrEg5H6IX1OsOTs6URyYU+S1tjxX63RXzrDKL5pXj/b0wZeiNc= 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)(8121501046)(5005006)(10201501046)(3002001); SRVR:BN4PR07MB2244; BCL:0; PCL:0; RULEID:; SRVR:BN4PR07MB2244; X-Microsoft-Exchange-Diagnostics: 1; BN4PR07MB2244; 4:Ru8FAQbyf9kPbxDqCgRYn7z/RlCeexu1A4dwICqdOvwNu5F2n/khKLzhWnttJLeYAiGQLMf21MDXBzJy/YT9BKnL9lAMQfTE3GpN7uk65OZK8UO20PD71x5qY+FXPiiyH1R/mPMr2rYx+svVU53LEF1QZMn11oDpe4bqTwGyoOyK7jFI8WXhyY7LmYzIUcI+k7qatd4UlG8wBHLbcAzZYZ6895hmY0e8VIhuttVwyhAg/9asLKnOe4Bm5EKIdf4Nyv/njoFa+MeoIA6iW2xiO67hzK/FQWrsC2Rigjom0sDrSuIOBauMG2WaEOdRE77/Z3ciprR1JF0MWbTvgIuis+RLzVrV7j6+/FB85Z8mFop0P2NrZStMujQnrDs70iauBzlfGwBY2+jwpt8QTxbJeovkoDv51+NQWOuNjb/Dejbf5o3VtBnaBpggXSxHMmn13czKvEwM5ZFn40307lo1pw== X-Forefront-PRVS: 0070A8666B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6069001)(7916002)(377424004)(199003)(189002)(92566002)(50226002)(107886002)(586003)(81156014)(6116002)(97736004)(33646002)(50986999)(68736007)(81166006)(106356001)(42186005)(105586002)(7846002)(48376002)(7736002)(19580405001)(76506005)(36756003)(2351001)(229853001)(3846002)(189998001)(4001430100002)(19580395003)(5003940100001)(305945005)(2906002)(5660300001)(15975445007)(77096005)(450100001)(47776003)(66066001)(4326007)(50466002)(8676002)(110136003)(101416001)(41533002); DIR:OUT; SFP:1101; SCL:1; SRVR:BN4PR07MB2244; 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; BN4PR07MB2244; 23:Wbkx3bbGzipsogoBVgj4s7XJorzEF/TAcq66qLFOf?= =?us-ascii?Q?R1wScFUgtzkOMppZMWcL3lBWc3TOjoAFJIOnqw62Iw5yJBHYozD3njppZu5b?= =?us-ascii?Q?ZGhKLQPktuMdOZg3D5FMo2Bn/BbHNzmCrj4G3jkrChujrD81B5NZ9t/pBKNt?= =?us-ascii?Q?h6flnWOvb/bfg7Y5JXHF5i/wMSk+My9zsYlr7Dzwo4VWD+nAKqpbO2kkueQf?= =?us-ascii?Q?lYJGL9biGa6wZwv8OacN6W+Hnrzl0brJXWXKUWHRTw+sU6gxAipDSozPnTlR?= =?us-ascii?Q?yUwE/C2aXBKq9xPQLDowETzXCA1U8NnQPPTBARgsj6DGepzTL02YKcjOCD/2?= =?us-ascii?Q?9AS4GKfJVHcR2S1P0MBbOnlnJD5CROKBPqwAdihbh3a+6TutkYvS6p/dODdJ?= =?us-ascii?Q?/KXF4XidPhD8+yWmXuqUrf+6GLYg4Zi3rS7RZpY4Fg3vLxhnZpmTSoz8HSon?= =?us-ascii?Q?SPMHEWJOJ6/wBDxChy3ibURus/GyXkmU6bPSaX8O4i9pTGzxC61nSJC8yGVL?= =?us-ascii?Q?pGpfnzzvVIOuYsHTmu2MdXWm43DpQm2qJSU/hBkZZSxE/wxxeV0FT/MPaUA9?= =?us-ascii?Q?f7w2Jwa5HJ7UbshKaH4To0Swlr6vmvkYyRsSSKDNv0Sv4mIXrva/SgvET4GF?= =?us-ascii?Q?9G00X3OLBNItcsu3T0WyJc+xJNmP8gU+mNmDFmbRpBaehKp2lUAWICFqrO9y?= =?us-ascii?Q?XUWnFkOcvO8Yzsl0ka4Cd2vT2sFwFQGsD10eoTIyxbtRaUT+jYXBtTinEU3T?= =?us-ascii?Q?7pJmcqy+TxCxDFG1MsqMLN/GBvUnoOLJytVPM9W/q1mW7y3FITpP5riKgSgc?= =?us-ascii?Q?goG1DUu9OK4Bs3VSgk+YHQvTPW5OlIkyXG07MUCz+kSQYkZl+eUYnvrzaHnv?= =?us-ascii?Q?W8zTGDIWIABxt/MnSXlqt/SPd86t5Qo5UbY9YdTSyJhI6Y3GXG1npfdMNvza?= =?us-ascii?Q?2zXne7j11R2piRK6MgsFnke/GEwDc+hXNhwVp7Inbwfuq1EPP0+CTUYmKkYC?= =?us-ascii?Q?SSDK9QydKl/a/S+6FakRuNZsQDFvkUv3l/D+cdU+W951g4i3Mv5vU3hdy7bM?= =?us-ascii?Q?rKpvTStVXvlskTnwNMlqyxbA1QzSEbJmAkP1aeAxmazoGVB/pp/NmralWyez?= =?us-ascii?Q?Nx32VX/nrAxeIW+r49tJHQEHwMf/4DZHsyG+FsE+J3BOx9zvEYNDPTzsXBo0?= =?us-ascii?Q?rGyJzdUswkYoxmr2iy3c78qAE6RCNSfBLA+bFHiyfAxG1CvOImq4hvo7w=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN4PR07MB2244; 6:N2scifrtA7iVKdg1/2tVu9Mucj4osjKmprKuOD/Iiop8ub/hH4AmcdSxWvN6YhqfRRzMCCE09Nkk/NBTELmtIgmEiBOKt/fMB9acQpTkMUsT+LcpZHgkotcI7sk72EtYtqpg8yYIJ22FnrFd9N1ZgTmB3SWmCzMhqZH+ounVuEngMmFk+ESBDtrisDr7CcVQUw2baFZJ8dwrpQRgNjnDLkyvbELfesr3+wFeEasi4v/vLLJkx1R+1/wifRBd5C3jYs4BrhwCTqiRQC9Hqbhk2INcqARyyuTJjuy6piw7kbE=; 5:AAB4q5ebqJ05tZ8v6hVQ12YMeKYYEiiuSQMaAnfa+5xJBsycKVqw9//FfJunmuvuIYEUOXUz/qIhm881DwFNupndreZMW+7xKgt9Bbt4NYiS1RLAWRVzCPf/SDJijv7c0jfYfgejGn4z5tX87LxqlA==; 24:JQM7Wucv5BpLEBBvz6JO9AwILGN5Ux87sDF7yqcPcKKJi5+Uy04ckZqWmKZnE6WIl9StYco3TQYe9vcroc1QObBKUmykaJz5Zyzw8645Hqw=; 7:TbYV9vaXAWRm6Vc+Uadqb3umqSauFVyYbOG606xidWEODmclgxB/xDwHE1YYpSWDA81BIaTCDVulUAtZadCqmUnBeMO2b7ylkeTUd2om6KXkIvMEoZXbmelcs5gTm3LhfwhF/QuW2F/1no90DsXtYDxlXSEfQtn6LD+DjoZfyYsnvtyKOs+o2XgwMzomLD2T8Oongv/m6IfYJ+NKIjYIp2YAEFKJ3YJhQe0DaQD72+TC5jngxxUqFh5BkLb4sXtdNqv2JSyv/P/2Q9EMhXm1qk71J+PMw0WE2lst5n/OtneOJz9Vy+uJ+qejHHTTDV4d SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Sep 2016 16:56:57.3739 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN4PR07MB2244 Modern 32-bit arches has off_t and ino_t types both 64-bit length. It means that struct dirent is the same as struct dirent64. So we can avoid useless conversion from 64- to 32-bit dirent layout, and simply alias __getdents64() to __getdents(). The same is true if __USE_FILE_OFFSET64 option is enabled. Tested with aarch64/ilp32. 2016-09-19: Yury Norov * sysdeps/unix/sysv/linux/bits/dirent.h: enable _DIRENT_MATCHES_DIRENT64 if __USE_FILE_OFFSET64 is enabled. * sysdeps/unix/sysv/linux/generic/getdents64.c: alias __getdents64() to __getdents() also if _DIRENT_MATCHES_DIRENT64 is enabled. * sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c: don't declare __getdents() if _DIRENT_MATCHES_DIRENT64 is enabled. Signed-off-by: Yury Norov --- sysdeps/unix/sysv/linux/bits/dirent.h | 3 ++- sysdeps/unix/sysv/linux/generic/getdents64.c | 3 ++- sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/sysdeps/unix/sysv/linux/bits/dirent.h b/sysdeps/unix/sysv/linux/bits/dirent.h index 31b1961..23b7e6f 100644 --- a/sysdeps/unix/sysv/linux/bits/dirent.h +++ b/sysdeps/unix/sysv/linux/bits/dirent.h @@ -51,7 +51,8 @@ struct dirent64 #define _DIRENT_HAVE_D_OFF #define _DIRENT_HAVE_D_TYPE -#if defined __OFF_T_MATCHES_OFF64_T && defined __INO_T_MATCHES_INO64_T +#if (defined __OFF_T_MATCHES_OFF64_T && defined __INO_T_MATCHES_INO64_T) \ + || defined __USE_FILE_OFFSET64 /* Inform libc code that these two types are effectively identical. */ # define _DIRENT_MATCHES_DIRENT64 1 #endif diff --git a/sysdeps/unix/sysv/linux/generic/getdents64.c b/sysdeps/unix/sysv/linux/generic/getdents64.c index 3e44699..a9b63a3 100644 --- a/sysdeps/unix/sysv/linux/generic/getdents64.c +++ b/sysdeps/unix/sysv/linux/generic/getdents64.c @@ -16,6 +16,7 @@ License along with the GNU C Library. If not, see . */ +#include #include #include #include @@ -32,6 +33,6 @@ __getdents64 (int fd, char *buf, size_t nbytes) return INLINE_SYSCALL (getdents64, 3, fd, buf, nbytes); } -#if __WORDSIZE == 64 +#if (__WORDSIZE == 64) || defined (_DIRENT_MATCHES_DIRENT64) strong_alias (__getdents64, __getdents) #endif diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c index bc3a80e..7d2fbe6 100644 --- a/sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c @@ -30,6 +30,7 @@ #include #include +#ifndef _DIRENT_MATCHES_DIRENT64 /* Pack the dirent64 struct down into 32-bit offset/inode fields, and ensure that no overflow occurs. */ ssize_t @@ -113,3 +114,4 @@ __getdents (int fd, char *buf, size_t nbytes) return outp->b - buf; } +#endif