From patchwork Thu Mar 23 15:38:03 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chris Metcalf X-Patchwork-Id: 19714 Received: (qmail 98749 invoked by alias); 23 Mar 2017 15:38:18 -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 97580 invoked by uid 89); 23 Mar 2017 15:38:17 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.4 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy=GOOD, infringement, suddenly, XY X-HELO: EUR02-HE1-obe.outbound.protection.outlook.com Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=mellanox.com; Subject: Re: __need macros for communication with compiler-provided headers To: Zack Weinberg References: CC: GNU C Library From: Chris Metcalf Message-ID: Date: Thu, 23 Mar 2017 11:38:03 -0400 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: X-ClientProxiedBy: BN6PR01CA0066.prod.exchangelabs.com (10.172.194.156) To DB6PR0501MB2758.eurprd05.prod.outlook.com (10.172.226.10) X-MS-Office365-Filtering-Correlation-Id: 8a0c5a77-6fb4-4af6-ad63-08d472029d93 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:DB6PR0501MB2758; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2758; 3:aBXBbwRij3lWMDkZbPh8SEqvL0JktulLC0JuGqSx7nR8jDJ02t71pNgKYq91/sKEGs2LBYZUiQ/CBqt1YLGw8eV5T7Nme6d2ErucETyxHxfX51jrgJBFZ3x0NZCi3FVfecYqEmWNMXAAwDbxR/9KvoLTtN6jqHLuVzOnFi4MFK6BPWgxfLpXp0pcNi0IdJeyX95Zy/inKDP0E7sSJ3I2/gsB7qRmLIxtFkExOoReXGH4o7/3c1bE1Sq0nHqxy9vLzTabHTRTuDX9XX6Vaxrz1tIwMjClDuooy3jUzE1MCQs=; 25:9h4cJwwkmqlIqzGv7lmeyJV+D+eoFRrjO6OVk3r/7wvUtiWxPtvwD70nrySow9vsCtBGS1kt163sMyrh8yzwvkRtHMlAcagu8cvq0vO5EwJCWNZ+LlOneplwRP9oCf5cZjgAWqawQhmgmBHYTp5e9/JWRjSgK4J1+UztrLPHlRcZi5B2Bf2U2g08XsN1Fng0RN8vL3Fp67p6Cwn7f5hHEoqPA20ayEK4EySNs90o4VmvTEWyake9S12rZkaEPiG15GXFwJQqKzS2vdrZ6uXyP9idmWd1iBLz2g0HsnNpzQuGI4zun5ndq+aG7M9OzFxQ4ZG+CJpVDjhzp6glfDn1xTfwMViNVvJQBzm9YnInT+d8e4qrnf0ZJTAGh5uEU8oZjDOGFWLScB7SP7/rQqu2PLQhmztzSnnivzZNp9rsaR9kQZ5INSsFbJDiAqZ06dGPgsITrR1SFzXLSqh/DxtqSA== X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2758; 31:P3RexKdFBNomMecLkGqZqvshhmjUwSyCUJ0QihP/dE3vWXFLuca5hhZ+q3B4Dt9WZiS5C/hTUTxwKnVVyvSYQphvyhmf4fsaFVopy2HKIY0hXnZWgmBQlhy2ijd2bwhwG8KMyaYT/ykAhrjJaN4nKAA/9pIUfyI2iG2XTe+XqDxaBBc4AIvuQ6OckaVKm6+Nb1LyQSZA/6ZR6BnDSSYncUd8odUOvji8T0A+9upQQm23H4rUiHW+YFRkWBgMr8Bi3OhnEyZXic76u3MtX1uREA==; 20:v4+2oBJX9QkxYBHojqo5NNH78Gtmkn383RQnfDqWrpvOGyquP83a39oSKDcDNB02NZMn0ktwxMLXW3NR0DiLlX3zIltpiZ+1yFqS2gzzI/SQEuUWCHhtVZ8xzMSGee9NvTq8OrLpMs7i4iSt29kuqoVQZ1FFIaYLHfHva9ZXir0Fo1DI2ZNp1fF0CK3jv2oDel7DXogqkVpwg1j5WhQ3kkvm+Lme1Sq4S6Lre12G3+2P8xJiOvyMJtKF1FQL+u0JVEHbrXxKELGdwzD2urK/TEYsevQkuQa0k+n0pAiwiePtKAAvhUA3GpK4kYvDCldqlUfeqsJ4pdIw77kf7gPxOsyFKQXBJbrpy4WHIln3ZSHn6+A6dgZr7MykS2enkXfITQV2Ry2XUI/Nf+6pPs1AgDe6XMHla9EaIHgJFt7FvAouk6TwKyswB8mjw2wxmkZ3siXquH175QHlwi4Z2OvbockSRE4977PRfCViwYqYEzWv8LPbcYC9qHWr2FFbJeWP X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(171992500451332); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026)(6041248)(20161123564025)(20161123560025)(20161123555025)(20161123558025)(20161123562025)(6072148); SRVR:DB6PR0501MB2758; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0501MB2758; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2758; 4:NJDgImT5GRX1o81xOEESW2zem02lFvVbaRm8/LtTBfAMdFcZwbNMhKD3XGA1BaONuw34+fxMWmR6P8H6jzfuXc9OjALk9N0FDcpXee6ca6Avm8tDJ5I3VphrILVFYvFIUmA/TLTl8K1xAKw7UCFMqkRO/wp4urEpo1M+3pTz4OCj+6axpjy/rIc1oN9K6ukgHgkwbEdKYiW860c4qDbcxFfrdzA/8qREOuo/mQN7bCn4I+XyLPjnalpHoNtHk2HWbsSvqDU0aHgPnsUbotpIjIF+7CHPfRsMNRplw0biIwOLU8MaNGq4xFuNJdQqYSGmA7VkqyKZ9sJeiOhWaJuuA1YQfiSrmKv4Ehj9pH5iKrW+vp2748Xo+nY1vlKWAoGMRG/k7Fj51H6pJcGLxGb87XmvSU9mdaoGuDVOwzzsPZzms3qxFhOJmxn2TB15EsvzpKp2OWMytXQQMBtjN1mx69qY4iXhZ5ifyYT5Xl+BEPWrP2mJTZ2M8krqj1d144sjZcDzBz9PWsq5Mmfq7YWeq8QDSDpvwk9OYotK5fA5hBfFtNq8vI4KMwTUJKxn97P8EMdrG6mgU+JwcJH3rQVDz0Qo3jnhibPtHtpDqvXNvXhF3OpilPtNNZ34CfeRijnzk5IznKLwGV+MGDWigdXj1qr1vBXJRiMV9d6oKfFd5Co= X-Forefront-PRVS: 0255DF69B9 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(39450400003)(39410400002)(39840400002)(39860400002)(39850400002)(24454002)(377454003)(110136004)(86362001)(189998001)(229853002)(6916009)(47776003)(65826007)(6306002)(7736002)(305945005)(64126003)(5660300001)(25786009)(38730400002)(90366009)(53936002)(6666003)(81166006)(4326008)(3260700006)(2906002)(2950100002)(31696002)(230700001)(50466002)(966004)(23676002)(6116002)(8676002)(6246003)(42186005)(65956001)(53546009)(77096006)(6486002)(66066001)(83506001)(65806001)(31686004)(76176999)(50986999)(36756003)(3846002)(33646002)(54356999)(2004002)(18886065003); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0501MB2758; H:[10.15.7.185]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjZQUjA1MDFNQjI3NTg7MjM6UURibTRGVWgreld3Z0RocVozcksweVA2?= =?utf-8?B?eFZWMW1Ib0IrMTRDTGxNaXFaR21mRTR5ek5WaXBUWjl5MWpJSElES2tUZm9t?= =?utf-8?B?NXhnUFMwRzYycUFTdjlGa3dqcFlOM1N6NzN2ZDlTNHIyMHJsTVF3UTRualpL?= =?utf-8?B?K2JCQ3djOVRzU21lL2JtbmRXeFpkZENwbjlFWG5KNFgzSFZuWWRnYUtjODhs?= =?utf-8?B?Vm5VUXRYUWNSTmtDRVIrRkFpN1NKVlptMktxQ2VOdmo2U0lQOG9oQVdEdHpG?= =?utf-8?B?SGpjMkp5NHJMcTBXaGRpTFl6aENCUWNFMUh6OVhxU2ZLcXd1QVpvVzlsRUVX?= =?utf-8?B?eXNMaE5aaXBuZ0Z6WWJNN1pIMFlZSHZnNFdicTZJdzRTSnR5azRCNVdjYlNX?= =?utf-8?B?SFJ6aThkdm93SmlDQUNabU44YUdCTldralp3S1dMTGlJZ3pSSFFPN3BiUFRL?= =?utf-8?B?cGNua2c1eVR5dnR6dVVjL3pVaWxKbnlXcUp3V2pWcFBKL1I0a2xFN1c0aXRp?= =?utf-8?B?NU83d0RkUWQ0bjVaSFlKZmRQV1ZEQjF2UkdXVituZUNMdXc3TVd0aS9zVjlW?= =?utf-8?B?ODhFRHREaFJGV3VlUlNITE5veE9xUHFjRjVJSEtuLzBoQXVMTE5GU0orRjMv?= =?utf-8?B?N1VIL1REd1F6SC94aGxVYWJqTUM0NlZ2ZVdKSm83V2FRb29SUzBYZ1Z1ZVMr?= =?utf-8?B?eW5zdEJ1ZmRVakorakFHRDBrc3FBS2lmYkNLSThycThaRkhHZUp1YUEybnVp?= =?utf-8?B?MnNKemNPNEhEM1BrSXIwN0xtMFdielZhZ2RqT0tYZ2h6eE1xZHRReHl1Nk1M?= =?utf-8?B?bUxETlBVbWp4VEpaS2NBeXFheCt1ejJnTm0xMy9tL3VuekNzUmwzSDhBWjlv?= =?utf-8?B?WllhNENCSEpuMGtnVW1ybGhHQVZtRzRSeGliNGVtVUdCSXNaTTNIc3cvZ3pR?= =?utf-8?B?U2U2RmhaSzl6MHFuQnpSWXdwNXpHN2g5clFrVFFVTkh2ZTU4NnpFQ2p2WDRz?= =?utf-8?B?bW9ENzJGejdEY0NvMkV6Nlpyc3c3dXBNMlN0ZWh0c0UvTC9zM2ozVzcvMDRt?= =?utf-8?B?d0loMG9qNXZvVjdkQVVyUk9MWG1sTUk2MWVhYktnZW9KTTJXbWhrb05SRHBU?= =?utf-8?B?Vlg1TWdtS29haWdpNEg4LzJ5RFJKVktLdFBzNm1RN29PTURPUHFqQkdsT0pZ?= =?utf-8?B?MTVLKzNnNCt0bFJTZWRlTnlzNkRobjNqeHNRNWdNbGhSVFhHcjAxMHRUM3F4?= =?utf-8?B?OGFFQkhzd2pnckFnb1YrcEw2cmhQamd3Vitha3hQOC84Zk5CWXhXNDdqTUV2?= =?utf-8?B?cjhyazJvdkhNeU4rVmpURTdaaDl3YUpnaFh4Y0FxRGVXMC9yandvKzVUS2g5?= =?utf-8?B?WlRsNXB0TnpaTFEzZnZac0ZpbURyVnJiZ2RvUUV6czl2Wkx3b1NFU1VWUlBX?= =?utf-8?B?Zm1jMFVCeGpkS0J6NFZQTVNrcklrd1liVzFWalhzTHlwY3F2RklrZFpzOG1C?= =?utf-8?B?VWZxbFU3akl5Q3g4VUcrM2pHdWxHN3QwemM1R2lhTnhRdUl2Yk9xZm1qdnNY?= =?utf-8?B?aHBFN1ZkQVF2UURLdk9jOU56OFdvYWJKTnlRZmV2TXZ1cVhybFBmdDJlT2xr?= =?utf-8?B?cGR1SXpQRE9oTHBjNDhPMzFoM0JpeVZENnVsWWpkR2xyR3ZWem4zU25GOGV1?= =?utf-8?B?NGgvTFVLb1ZZTlZUZUYyZk1yZU1ZV2xkUE95VUtEMUgrbVFDZW9LeWs4VVk2?= =?utf-8?B?ZVQ5YzduWHNJTnFGUXVvbXRuZDNaaVFrWFdxMHYrWXpXZnlFZnpYdlJhdEJw?= =?utf-8?B?Rk55TkcyUlpTUVZmcnErN3g2dVRya1JuVk50VkdGOWYxYjVGT2cxRVdUOStX?= =?utf-8?Q?a2Jq1U5JlFOZ0=3D?= X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2758; 6:+WiGASvDjunO+jH2NEnpMhBViMeUj5NMaiLEZIEEBTczKCl6UCORF2+tQ73Hrxvs2hkmMEjdGjs8oVhyVRFrn0vkDmxccOE0DGBX8W9DTvuXBzIrv4mW1nD4UKOsvxWA24DX5TsZUF4TT7wCeAMvYkP8wn6aaWQ+Vw64xljIVc0Y1xQrTZDXdoElogY9N4GhG9EtbZLt+YBckPmj0ZKXuc8vJvTcvoP1WdLT9NdCc0lY68q6CfWBbl0k5vIH8oLmLZOxaewZiBS1xKA4SYSQSkSTOs0o5+adbfgpEKKzTF7JncW6fFVncDW25FgB0A0fjo+kUioFRPJL5ZwT5SehuYvGm2k/cEQUYfEWf7x7czxK05OuZiO67Bu1yVBdJmD7Lcy1TOyg6ze3z6FhEm9nD0EJ5q1JoLmzpPBzA9bDqyY=; 5:H4LZq5NFKBuV1mlgvCWfx1MYMkDJFqnYoSRZCOeRUC70DYHwsQlm9Gj2FMvyD2xvz7xUlz+2cggJhPpL3s2Egjok3un5yRa2kcmeodezVhG+wDcllZbu/gJX/WkUJexQQx0ygPtHa5AeD/aeL8Aypg==; 24:iq/l/PSdVsPLt9MGUmTodORFZqYkr64dyII6KsTTVj7swOIE+k7OX2yPua6e5wUyRDgWbLmuGVo6RQI2hUgEY4PB0zON86QXdUvpNqP01K4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2758; 7:F6CtFAKehY0qzejpCrqMA72L9LD9wZGIvP1bwGdgg3iqzBJmS024uAKFtyP1oh9Xj8BS+GNoeg2r3v7Ukf8q8yitDn/bSMCENoZt8swyhj5wIbdpqWTsJQs3d5pT6UyMuksrciKAPgmiP8+eJ6FkwTep6IYupZWKWLgzhswdT1G/kIG8mMcRe49B86hNmv1xgnmUwBKIGw2ji++SlTCu1ycOzLb268gCZ+Unbs3iMcumy7zyonF4HFCUqfLcYXRnBDcVZdcratm/gbMFNkVFh7lraMfS7eNch1RA7GmZXD36h5uzCeDK7EJ1Gprh7CxIVn3tTBnF4HVfZ8qg5fjZYA== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Mar 2017 15:38:12.0390 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0501MB2758 On 3/22/2017 2:47 PM, Zack Weinberg wrote: > So my suggestion would be that you provide an uapi/arch/int_reg_t.h > (or something like that; it doesn't matter what the name is) that > _only_ defines int_reg_t (and names in the implementation namespace) > and then the glibc headers that need int_reg_t can include that. > You'll find, when you make this change, that arch/abi.h is suddenly > quite a bit tidier. > > The catch though is that we do need a transition plan. I suspect it's > not a big deal if old libc headers + new kernel headers start getting > _all_ of arch/abi.h from the small number of headers that use the > __need macro, so maybe it can be as simple as "as of version X.Y of > glibc we require version A.B.C or later kernel headers for Tile." My concern is that we don't want to screw up the namespace for anything that includes or due to getting all of . How does this change look to you? Subject: [PATCH] tile: prefer to __need_int_reg_t As part of some work in glibc to move away from the "__need" prefix, this commit breaks away the definitions of __int_reg_t, __uint_reg_t, and __INT_REG_FMT to a separate "microheader". It is then included from to preserve the semantics of the previous header. For now, we continue to preserve the __need_int_reg_t semantics in as well, but anticipate that after a few years we can obsolete it. --- arch/tile/include/uapi/arch/abi.h | 49 +++---------------------- arch/tile/include/uapi/arch/intreg.h | 70 ++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 45 deletions(-) create mode 100644 arch/tile/include/uapi/arch/intreg.h diff --git a/arch/tile/include/uapi/arch/abi.h b/arch/tile/include/uapi/arch/abi.h index c55a3d432644..328e62260272 100644 --- a/arch/tile/include/uapi/arch/abi.h +++ b/arch/tile/include/uapi/arch/abi.h @@ -20,58 +20,17 @@ #ifndef __ARCH_ABI_H__ -#if !defined __need_int_reg_t && !defined __DOXYGEN__ -# define __ARCH_ABI_H__ -# include -#endif - -/* Provide the basic machine types. */ -#ifndef __INT_REG_BITS - -/** Number of bits in a register. */ -#if defined __tilegx__ -# define __INT_REG_BITS 64 -#elif defined __tilepro__ -# define __INT_REG_BITS 32 -#elif !defined __need_int_reg_t +#ifndef __tile__ /* support uncommon use of arch headers in non-tile builds */ # include # define __INT_REG_BITS CHIP_WORD_SIZE() -#else -# error Unrecognized architecture with __need_int_reg_t -#endif - -#if __INT_REG_BITS == 64 - -#ifndef __ASSEMBLER__ -/** Unsigned type that can hold a register. */ -typedef unsigned long long __uint_reg_t; - -/** Signed type that can hold a register. */ -typedef long long __int_reg_t; -#endif - -/** String prefix to use for printf(). */ -#define __INT_REG_FMT "ll" - -#else - -#ifndef __ASSEMBLER__ -/** Unsigned type that can hold a register. */ -typedef unsigned long __uint_reg_t; - -/** Signed type that can hold a register. */ -typedef long __int_reg_t; -#endif - -/** String prefix to use for printf(). */ -#define __INT_REG_FMT "l" - #endif -#endif /* __INT_REG_BITS */ +#include +/* __need_int_reg_t is deprecated: just include */ #ifndef __need_int_reg_t +#define __ARCH_ABI_H__ #ifndef __ASSEMBLER__ /** Unsigned type that can hold a register. */ diff --git a/arch/tile/include/uapi/arch/intreg.h b/arch/tile/include/uapi/arch/intreg.h new file mode 100644 index 000000000000..1cf2fbf74306 --- /dev/null +++ b/arch/tile/include/uapi/arch/intreg.h @@ -0,0 +1,70 @@ +/* + * Copyright 2017 Tilera Corporation. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, version 2. + * + * This program 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, GOOD TITLE or + * NON INFRINGEMENT. See the GNU General Public License for + * more details. + */ + +/** + * @file + * + * Provide types and defines for the type that can hold a register, + * in the implementation namespace. + */ + +#ifndef __ARCH_INTREG_H__ +#define __ARCH_INTREG_H__ + +/* + * Get number of bits in a register. __INT_REG_BITS may be defined + * prior to including this header to force a particular bit width. + */ + +#ifndef __INT_REG_BITS +# if defined __tilegx__ +# define __INT_REG_BITS 64 +# elif defined __tilepro__ +# define __INT_REG_BITS 32 +# else +# error Unrecognized architecture +# endif +#endif + +#if __INT_REG_BITS == 64 + +# ifndef __ASSEMBLER__ +/** Unsigned type that can hold a register. */ +typedef unsigned long long __uint_reg_t; + +/** Signed type that can hold a register. */ +typedef long long __int_reg_t; +# endif + +/** String prefix to use for printf(). */ +# define __INT_REG_FMT "ll" + +#elif __INT_REG_BITS == 32 + +# ifndef __ASSEMBLER__ +/** Unsigned type that can hold a register. */ +typedef unsigned long __uint_reg_t; + +/** Signed type that can hold a register. */ +typedef long __int_reg_t; +# endif + +/** String prefix to use for printf(). */ +# define __INT_REG_FMT "l" + +#else +# error Unrecognized value of __INT_REG_BITS +#endif + +#endif /* !__ARCH_INTREG_H__ */