From patchwork Thu Aug 4 10:02: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: 14308 Received: (qmail 103435 invoked by alias); 4 Aug 2016 10:03:16 -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 103420 invoked by uid 89); 4 Aug 2016 10:03:16 -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=5418, Conversion X-HELO: NAM02-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 1/3] endian.h: introduce __type3264() macro Date: Thu, 4 Aug 2016 13:02:37 +0300 Message-ID: <1470304959-9944-2-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: VI1PR0901CA0078.eurprd09.prod.outlook.com (10.167.203.174) To BN4PR07MB2242.namprd07.prod.outlook.com (10.164.63.148) X-MS-Office365-Filtering-Correlation-Id: 4552ecc2-d11f-4939-02cf-08d3bc4e840c X-Microsoft-Exchange-Diagnostics: 1; BN4PR07MB2242; 2:pS+tPmSYWYHniIL3Rv/9wZxWzMHzVDQzPk/I/Wr6ak4jsMxBNtpptyysiO+gDO0k3DUTiD5DuZI26mPujKU2chPWYGYPz3khYdpJyJMMcT59gzdNjZDqX0mgp2RQVfJ3m4uKZyQzzhSyUOXR6wmKpn4Z+bXhH467zHa9fTYLEC14/Q9Tx9LSehH+eXhzB2he; 3:bS3f/jTeNWF5oowKayrjMkLaGdgWyjUVjYWBTNIBcM/qB5eTwnR+41vVHOQAbudVv4/ckd6yHXZyxj2N6iulGQNUczAAqblmNZ2cFlxAKcApHl9be+HH9WBOanz2ElgX X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN4PR07MB2242; X-Microsoft-Exchange-Diagnostics: 1; BN4PR07MB2242; 25:lxADaOqu6gsF3tqHak3PBXq2wnK5EOi9/b68J780yBp/W9fdnF6QpQSCmaHU8efYFReynpGOyE6t9B7tKTkgM/+Pmac5eSoSOXEHKGjH/HnDzukL4gQ8vXwcnMdGopjP29iRaQHIC0ahUM1p09OZxHDFwVSOFmxKYtpa3D09ITzXM72u0izZGOobqVaiPw3VBJOjUopbRYlFMlCYjT70GojoM6C/Araj1s3w8WcuuXVmyP0HKEhWziSADwBwrjaXMVr1DFrF0iQO4y2RiQ6tVUcGVmwSubRy+4pYD2dxo2SXGp+mTqf/AjWBDn9w1s5N6vw4UP8pfZSOPjrjTMflnvADo58lQkj0AhqItbZR8qXzc+2XqzrHUSEcoFFWDWvVFKE0OjTG7pC+bRVRlFoP0Mw9i6CjvHimSKkB4oDhduRp7XzafyJ5OQa8+2aO19cSpR1Scc9wn/B2w+8BnxzycAHzSmXslw3bkykGGI1eIpu8Ks5LheLZa1n/q8u9NIY98JDyqUCqTbVns/MKSMJ46B4NFwQpoppsKmAI28rhBBZyvsMSl3eMccN3lmMx5EtS4WoBERbKD6GTb5xM6SeJZtw7etmMaBU3UGc34XEe6B4qTjYVUu2XqzEh/3rjp65qeh+LOa5/moPRimB42yraOpuxocKGA8aZpxULQID8K5GVLPY/5alQ/X7WCIclDBo3Jz7mxEo+qHEUd/n3gSxMG1hHE2o6khg13g5OiBiVn3Q= X-Microsoft-Exchange-Diagnostics: 1; BN4PR07MB2242; 31:LJHRpeHkJRKT4EJlB9hjFfdANSj0T9MqYpYASS0V8F45QyTv3NbFWIrtvaenfNBvxmHLFxEq5OnBv+S/1ndZJJob+zNA+fFd0HgIHM8rAIt1R+SilqJS2SPdFasvNhjy4H59O2DTqgJGpzoCJ9Fz0XKQ/t1k3hmmpkjd6x9EY080hUQfTBVhx+McwkX5HZ4PY/Z7KgT/O1htrm4Vof66oxLHkTNG3+VF+RPJosbDLWQ=; 20:sI2QWtEC+NZv2NEC8S35hmZ6ypJ7ZrOfGRsmshS02pfw/vZ1i9+K/syxY0huT1icWRBw77d7SwbAMt/iwUaEsnPaPxH+S8XhpKxYfZnfw1tCO7igHF63YgIoCdVwpuoGS52HoL/V59n+ccSvzdYtmXA+zw2rWS3Isn37p3Vnwa3Lxdjzl/9is11m5Xot7xJZLJsOdEflUfv6pmWAEksQXrPc+0xv360mtOpQIsmv+/VcymR+Zb3sagMpdUnUMRZaU0Y0+5lFhDKu6oilb3fufcslmE4fiumZwS8uHGz+1VGZ+cx6p9uHXHUGPlHXPh8l3tsuQTruPDaWYjPBZJi8jFDCCpVhfO0HtrXrqrGJMKbTJG03RQNfW74OfpY+8ubvmLJIwQ2aurqwBrTZ4uUhU06oHqi3JpMzAFACQZqZrXx3stuqbGPziPY/vdVGbu2C/m+Gf3zPy05v512dskiJFZk1XvM69kagnpVwCXOwrei8XlW+BOQGwVQsNpx5X1H5V1tPF/yB++9geM3GWEOvm+294BIY219uANyMNPPf221g8z1ix3pfpPd1eADleT9xELkbbtKBaT/bQeZvHxiBYkTrC/ZE3+GT6W9uTvAe6Xk= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046); SRVR:BN4PR07MB2242; BCL:0; PCL:0; RULEID:; SRVR:BN4PR07MB2242; X-Microsoft-Exchange-Diagnostics: 1; BN4PR07MB2242; 4:TKOWsCbmGiUGL26dwwz6OeeaOJYrltZesAA2+6EdKkoi3r4wukPmG8crgny4nihJaR3KDtvL36F1ihrXtGo1Eb1e8sIF4y+0Hb2wXzn/a78Bo7AErofaC6nmzB7d8cLYfulBZZ6ok94E9eUs7kqwcg8YF54tMyKvTUY9+mH5fkule6SeL+GwPlH9B+FOuv0RYMy/Okuyd5qKCpFo/UBrUZKYHJc1AUet1haGEJKxCA86LV7jfTYI7jDhbsjIK9/EQCJlWElWFamCfr7RAWvhMmxaNXeUKd87A9GysRQ9D1aj3x3M51yGWbX0saBlaeJXO07c1k/D0D1RxF1eDQaFShDMUX/dyZQcAURVq5VgV2eNSI4W3MIAraVjbeq3hQR5 X-Forefront-PRVS: 00246AB517 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(199003)(189002)(189998001)(36756003)(575784001)(107886002)(7416002)(76176999)(8676002)(50986999)(68736007)(81156014)(33646002)(66066001)(2950100001)(7846002)(76506005)(42186005)(305945005)(7736002)(50226002)(77096005)(5001770100001)(101416001)(92566002)(81166006)(2906002)(3846002)(4001430100002)(6116002)(2201001)(586003)(48376002)(47776003)(229853001)(19580405001)(50466002)(5003940100001)(106356001)(19580395003)(4326007)(105586002)(97736004); DIR:OUT; SFP:1101; SCL:1; SRVR:BN4PR07MB2242; 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; BN4PR07MB2242; 23:2JMvP5eA8ErVcPSJtNyvVlyjrgLu84qZuFaIHpA3G?= =?us-ascii?Q?KqLq43kNofSiqsTeAKkhLFXjOXwAU4CabvW2BuZUuX6F86xX+h4gLVcvuqKz?= =?us-ascii?Q?x9HJ7y90lDGVYQnBqm5jJ1vvrSexBmITAYsQVkOYhDXMMOZA7hGt1p21hnS/?= =?us-ascii?Q?lLCN43xaHMeFjvC1oVRTR3/KQomMDrgzWxjNyHZZWnmmyY+tWkajBdBtnGvo?= =?us-ascii?Q?YSSxXtAIv4Fa6VQV6XB8u0Pm7H+UsYgQLhwc+9+6eyKXTOIpnmNvc+Xm5G1Z?= =?us-ascii?Q?IaAQq30ssILEZwp5yi19u92T4XzJBtjS/YqVBueK0zApd0H344r6iTkgdHf8?= =?us-ascii?Q?bao1Yu3PwfNU2JRFj6ykEs98UjfZ5CP0cxsvaxG2aah27srGzvvze0KfC9UI?= =?us-ascii?Q?2d4bLFKohnR7RSUtSZyOzK5bPVnlMWz5Apg2vmdwtW6+5mmDHNzgTjqg2DSF?= =?us-ascii?Q?y2F0IYky4HOnYwkeWwAUUwaoF5J3E4+/BnDBSitgbEk087T0QnbIGilrSmwt?= =?us-ascii?Q?DvN353B9DA0IZsn/NYufUg3dIhLkkVLTz0d2SSBOstpHQuCcxxaUKoY6mbo4?= =?us-ascii?Q?CXuExtKysM/Q0tH4fEKfQ+fesPo/JdVE1m2BkiOYQGl1aAgTUi+WK0mbRrUo?= =?us-ascii?Q?MBqX2AAR9/t5iYgVPGmgqAXZQKewvQy0F9mhFl2hz+OTG/+RB0mBEZ52Ijmh?= =?us-ascii?Q?ZOxH6E5QqG7nUAuPMNXw3KzOueJAq6nZ7EBvgYea7D/ooj23JgA+s3adNmaV?= =?us-ascii?Q?9eF1hVL5kdjC376RIWVYqTA+8L8cvA1+pi4LML3SdaTxNhXYdsuRZxtw/Xud?= =?us-ascii?Q?SceXQVrMuVF/LzJujmjF4sPa0X9sPz8uTzqEK61wYCDOiP90dfxiGOQ8dGfi?= =?us-ascii?Q?yBPGOsJH7CGM0d5CryeChZbQYXJABfRgVEjtAuP23imzus01acacCVb7J3OM?= =?us-ascii?Q?EUYePYv25w+YlF1X8kQirKX5OybKZkMle8ETRmbaZX8+bcZsJ6kATrcI3wtd?= =?us-ascii?Q?l+kJJGvwS1ocbQU9jp9mj2sRVHf3K8HjrE5xQBxKvgcMay83ckZ8+IroiNee?= =?us-ascii?Q?A/vTcHd3XhNoQTpGAdPN8p0p6yYP74Q+HImTM1oZOhq5tSDD9CTQH6JRIoqJ?= =?us-ascii?Q?ICIb6tOVxU2MPo3S0b3SB5FXiVjo7MBKRwxCww62ghMDcGhXLA2XdmFgrAtS?= =?us-ascii?Q?cvbs8Wm75s8cS4=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN4PR07MB2242; 6:SRQfLROUa1vSpaFCVzV6MhMaP7uVXY/IEiWsljoTKEr2Zq0t9/ezxYm4HRb/ZCWWVEIqFjcanpWudT0O4PIOzWyEKMUaq6bIyZbuIjqrBUvxqSXZQRnxSx2yrVO4vKUcJrilMBjtSoF55Z+TLMLZQlAdIKC20JYajjt33WjVqhuTRYD5TSBWf8uf/eu9GuN4OML6LGo9rlYF0qaXOsKqYdQJKu+I8B966QEbn7x76Z6ukLZaa/D+Jy9BMTMSFIr76/VvCdYQWdJStHVDNR5hEM0HE3JWQAdP5BP2G7ReiJ4=; 5:WE8nUOCmCCTbkMNR8EFPy7ZgObppx1m0/E5iS6Y4TgMDkGA/llbuHEuqLzbNUE0JF0fxC5/mGFeKyPFq1AjgnaVRhrPPYWKE60QYrY38GHLqklxrUNKc7R+v4PJDIN/qCo6cJQ+VQd/UnfbYixaQQw==; 24:aH0dbAx9p69//XTWnHT/+ZgXKO/KB27g68RHLJxRx85Ag/YlyBrcjV5c+s03hkH7jjICLAKzYxTcpFwQpndsSz77GIMzuCS0TsXzLlh4wQA=; 7:TMj2KHTRk8axJlJdd2Rh67p+/GwAlmx5AzNyQ+bobqzALP71as7twI0OCmnpgKn3NEmL343xEJtdYK8jnYH9Q1qXke7LaebPrETsPsd5Uz/78Bzn0wyZyxcJXEoIgYMpbSk7KiabCZoB0c28gDgz/L3/8Pb8pwcfjG/OSR2LqPUGDGnPO9HcC1DHcvxG1vMV5Hz73QtiVO56luLlEeIrowpl8FB3J9pzFgmbdv7KLKvjkkmEKBl8JX+Te6FXzbsY SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2016 10:02:59.4959 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN4PR07MB2242 __type3264() declares structure field that has different size in 32- and 64-bit ABIs with paddings where needed, so final layout becomes identical. This macro is used in __field64(), and in next patch of this series to declare struct timestamp in sysdeps/unix/sysv/linux/generic/bits/stat.h and sysdeps/unix/sysv/linux/generic/bits/statfs.h * string/endian.h: introduce __type3264() macro. * sysdeps/unix/sysv/linux/generic/bits/stat.h: use __type3264() in __field 64(). * sysdeps/unix/sysv/linux/generic/bits/statfs.h: Likewise. Signed-off-by: Yury Norov --- string/endian.h | 12 ++++++++++++ sysdeps/unix/sysv/linux/generic/bits/stat.h | 9 ++------- sysdeps/unix/sysv/linux/generic/bits/statfs.h | 8 +------- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/string/endian.h b/string/endian.h index b13ddaa..09fb0dd 100644 --- a/string/endian.h +++ b/string/endian.h @@ -54,6 +54,18 @@ # define __LONG_LONG_PAIR(HI, LO) HI, LO #endif +/* Declare structure field that has different size + in 32- and 64-bit ABIs with paddings where needed, + so final layout becomes identical. */ +#if __WORDSIZE == 32 +# if __BYTE_ORDER == __LITTLE_ENDIAN +# define __type3264(type, name) type name __attribute__((__aligned__ (__alignof__ (long long)))); type __##name##_pad +# else +# define __type3264(type, name) type __##name##_pad __attribute__((__aligned__ (__alignof__ (long long)))); type name +# endif +#else /* __WORDSIZE == 64. */ +# define __type3264(type, name) type name +#endif #if defined __USE_MISC && !defined __ASSEMBLER__ /* Conversion interfaces. */ diff --git a/sysdeps/unix/sysv/linux/generic/bits/stat.h b/sysdeps/unix/sysv/linux/generic/bits/stat.h index dd8d799..8e3f745 100644 --- a/sysdeps/unix/sysv/linux/generic/bits/stat.h +++ b/sysdeps/unix/sysv/linux/generic/bits/stat.h @@ -24,6 +24,7 @@ #define _BITS_STAT_H 1 #include +#include #include /* 64-bit libc uses the kernel's 'struct stat', accessed via the @@ -42,14 +43,8 @@ #if defined __USE_FILE_OFFSET64 # define __field64(type, type64, name) type64 name -#elif __WORDSIZE == 64 -# define __field64(type, type64, name) type name -#elif __BYTE_ORDER == __LITTLE_ENDIAN -# define __field64(type, type64, name) \ - type name __attribute__((__aligned__ (__alignof__ (type64)))); int __##name##_pad #else -# define __field64(type, type64, name) \ - int __##name##_pad __attribute__((__aligned__ (__alignof__ (type64)))); type name +# define __field64(type, type64, name) __type3264 (type, name) #endif struct stat diff --git a/sysdeps/unix/sysv/linux/generic/bits/statfs.h b/sysdeps/unix/sysv/linux/generic/bits/statfs.h index 7d5aa2d..96629ac 100644 --- a/sysdeps/unix/sysv/linux/generic/bits/statfs.h +++ b/sysdeps/unix/sysv/linux/generic/bits/statfs.h @@ -34,14 +34,8 @@ #if defined __USE_FILE_OFFSET64 # define __field64(type, type64, name) type64 name -#elif __WORDSIZE == 64 -# define __field64(type, type64, name) type name -#elif __BYTE_ORDER == __LITTLE_ENDIAN -# define __field64(type, type64, name) \ - type name __attribute__((__aligned__ (__alignof__ (type64)))); int __##name##_pad #else -# define __field64(type, type64, name) \ - int __##name##_pad __attribute__((__aligned__ (__alignof__ (type64)))); type name +# define __field64(type, type64, name) __type3264 (type, name) #endif struct statfs