From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 59163 invoked by alias); 26 Feb 2018 14:51:44 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 59147 invoked by uid 89); 26 Feb 2018 14:51:43 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy=H*M:55db X-HELO: EUR01-DB5-obe.outbound.protection.outlook.com Received: from mail-db5eur01on0051.outbound.protection.outlook.com (HELO EUR01-DB5-obe.outbound.protection.outlook.com) (104.47.2.51) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 26 Feb 2018 14:51:41 +0000 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Szabolcs.Nagy@arm.com; Received: from [10.2.206.230] (217.140.96.140) by HE1PR0802MB2492.eurprd08.prod.outlook.com (2603:10a6:3:df::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.506.18; Mon, 26 Feb 2018 14:51:36 +0000 Cc: nd@arm.com, Ruslan Nikolaev , "gcc@gcc.gnu.org" Subject: Re: GCC interpretation of C11 atomics (DR 459) To: Alexander Monakov References: <1615980330.4453149.1519617655582.ref@mail.yahoo.com> <1615980330.4453149.1519617655582@mail.yahoo.com> From: Szabolcs Nagy Message-ID: <4ca477d8-8cf8-ebc9-55db-1e6c5a297300@arm.com> Date: Mon, 26 Feb 2018 14:51:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux aarch64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: AM5PR04CA0027.eurprd04.prod.outlook.com (2603:10a6:206:1::40) To HE1PR0802MB2492.eurprd08.prod.outlook.com (2603:10a6:3:df::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 9d52bf7b-d076-4b72-649d-08d57d286fd2 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020);SRVR:HE1PR0802MB2492; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0802MB2492;3:jnmT2to9GksCIjg75d4RWaibQ/q1K+KpQYU0LJbOoesBFldVhPwA26g28d1TgHIw01zseqOiTN0XoGN0Ozz0ly91TQWj5A06sCHGTpRppk1gz0eXkGupGBH5RqPTTPidzBdi+7lmHwiUJx4bJRl6xGqRKwjpRuTDRZu+Oarg4PlneEKLsjQdl6s322A+nkljVxgoBwo5ug5e0qU3Dv78bC3ifPlJvF0GVlFAEar4/3h6YX1lUaQGp9y0gPJXOcBS;25:j1JBdqn1Z3nS6xD3LCmCEVZtgloNIuf/TNUR/eAtFDHPYFWDUCOIMcpRvScQrgIgJ+wQUMqGltBAHTFg8Ye8/A4Q4CuPmSQDDD1U8s5ESDtlhHMR1jMGavGzkgSacwBMj4SDR/Vhm5uNPw3WY0NtJtSnRiTJLIzqenXa6hFou0MgHnYrx4Xbv5Zt77ZgSRZYJeEmCvJHfC/ySt/DpXZd5B+i9mKc+UJfpfNftOhJeXuHsW+FjVd0ORpj3HidZUTczRCvD2SjxSYdjUVwmICJXO6P281ZCLNe77i+L6UL+8xgfoNuIOW4RydMdZgq5BV93yUL5cgzHzAO7L73xMsFdg==;31:/pdXvGzI7V74jUPiuhPMaK5JCtfrV668nM1ytkTt5rGBEqnjZLqhar1DEo2gNAN/jkhMiH4YBFTsEx+4s7f6DeF2B3erF9la0RatFycz5MbRt5IOz4EKoc5fZItl+wDPegjmwwdqioKzmAiHxv1N2jze4v0tVjtyNvmEP35z1aueD9F0gbbpU63u+RZWGO/R042qb1SX18454h5DXua4yPSqu67zekF9h9vmjp3FTZk= X-MS-TrafficTypeDiagnostic: HE1PR0802MB2492: NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1;HE1PR0802MB2492;20:ETTTF626pu5q9hWpiXPfbEIN/mumjwDFldFTz8P1jB/G0Bnl39yu1yUXH4LC8z4Thh/r7NRleugPk3ND6q1ShwIacXkr4QSua3h76hBLgCnC4dy6AARUxcWIVyKvH1DYZWTQ04Sk/dCJLrLdR/I0QpbfxuC9YOI48ayTgDawZUo=;4:dqBrk9PznxD+oCHWtPztVvlTpFpRAiFrd6Zu+DkRoJRU0/r60DTu1yh0dyAAqsjtQklcoScZ4OS6Oqlb+TEXRIxx/zv28goqRh8+P5z2n6SlqBmgtQBtepjgUMhC+RyjwkwwoeB+Lo2lafeSYznJGtrZNnupDj6uF1wAdB/UqRyMRHyfOCQhOEghFhUs3bVRY6FsDNk3ypRSxc7k99fO3+4gfl0gR8uBl0csnMY9Ou0rg7hJtHIQJlnbAX+TJ/0nSq0b4YJv4ngCFPD3SZurHA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(8211001083)(6040501)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3231220)(944501161)(52105095)(3002001)(6055026)(6041288)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(6072148)(201708071742011);SRVR:HE1PR0802MB2492;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0802MB2492; X-Forefront-PRVS: 05954A7C45 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6049001)(346002)(376002)(396003)(39380400002)(39860400002)(366004)(189003)(199004)(54906003)(58126008)(105586002)(31696002)(316002)(64126003)(2950100002)(65826007)(6916009)(16576012)(86362001)(47776003)(3846002)(6116002)(7736002)(97736004)(52116002)(52146003)(65806001)(65956001)(93886005)(81166006)(2486003)(76176011)(6666003)(72206003)(8936002)(23676004)(8676002)(478600001)(305945005)(67846002)(81156014)(66066001)(2906002)(31686004)(68736007)(4326008)(77096007)(106356001)(26005)(5660300001)(25786009)(50466002)(6246003)(59450400001)(39060400002)(386003)(36756003)(53546011)(53936002)(229853002)(230700001)(16526019)(186003)(6486002);DIR:OUT;SFP:1101;SCL:1;SRVR:HE1PR0802MB2492;H:[10.2.206.230];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtIRTFQUjA4MDJNQjI0OTI7MjM6Rmx1MDFqWVgzNHFsWWNjTk9mMkNsYmZQ?= =?utf-8?B?Z3hZdHU2SEFqRFE2VUlGbGlhU0taNDVuQ2xXSDhITVZ6NVNCY0c3YTQyRkQ4?= =?utf-8?B?VTBUZzN5YjZyOEtFVXFJZFhnbDZUajlSL2doL1J3NW9JR2N2TFJGOFFVaTN2?= =?utf-8?B?OEd5OWJCaUdFcGlUcHpkdEFPNExKdE1LakowcGVKRnJLTTQzR0J6ZXhPUGhy?= =?utf-8?B?aVlBMjRmYkVNaTc0cDUwbnZFSTh4dm1TcDA0d01vb0trWHpuTDFRRHZhSlQ3?= =?utf-8?B?ak9HUC96cW90K29LSERrTFIvVHllK0JoM2wvNXRndFhtMEFZVTN6ckFmKzFk?= =?utf-8?B?MXByVXIxQWVWdURQT3dzeCtZSC85aHZIWmVUa0N0S1hnVlhHL29GOGNSWmVN?= =?utf-8?B?V1loUDk4b1g5ZDdtVTJVQzJSejJWWGY5K21yRk5LeDJWNjN1ZVFCVVJFeW9I?= =?utf-8?B?UnBjOEdVZTh2YlA5eVJ0a1h3bEJYTlRpOVpxQWZ5aWNRM3ZBaUExanhBVW11?= =?utf-8?B?VUNNa0xnc0cwM25OQ2pIV0tNcmJXV2lnaG81OTY1V29OY2N1cjI0NFFPQndK?= =?utf-8?B?NDNWYWh3Wm4yOEM5TDQ5b1ZMajdLTW5KcEcyajdzRkVvSHYwR29MUUJnbUgw?= =?utf-8?B?L2hpVGExYVZWTnpuTS9Fa2xraUc4WXhUNTI0U0crV243SXFCbWpjNTNBUDJC?= =?utf-8?B?d3RXZExsczJxRU9KLzVBbCtGZWgzQThKQnBNeGZRNlRDZDJ4TE9hRldEQlZV?= =?utf-8?B?bnNya1JuUktibEloU0hlTTJNR2JXcjBZai92cVV4Rys3dDVXeFlvVkNnN2tC?= =?utf-8?B?TlFiSS82bHo0YTA1Zjk3TndCUnV2YVAzeEhDbWtObVVpV1lBaXBRUGdUeUVp?= =?utf-8?B?NEJ2dVBXNTZZSm92MUxNUFpTSytaWldJNWVkWEgzbHlEbERkTEJXREZTTFVW?= =?utf-8?B?SWNxNDRlK0tDRGRTUmUvZnRBcGRzeW0zWUtpSEdlQXBVTVVZK2Y4NWJ2em9l?= =?utf-8?B?VjlvSkdvZk1LaDVTczA4eDlxclJvbk11NFNwV1RzOEZ4N2d4SlNWZkJ2UkRM?= =?utf-8?B?YndUWkpvKzB5dnErNm41bDJPWUo0VmRhWGtwNzUzaGRVTjcwYXZndG94Z1hY?= =?utf-8?B?NURKbnBqTFpkZmZGV1h5YWRaKzZSVW5ybC90TGZnTU1ObTFGTzFRb3FBVUN6?= =?utf-8?B?eVltQ1VFa1NjZUVyQWpqUmVPbVFjeUMvOWJzdkFocWlqWTdZUzJ6ZVZhZXBJ?= =?utf-8?B?ZnprcHU4RnlCWjZ6RGhUNlNhMUJ5TzlsQ3VTclVYaEdCa01FZ05PTjZMS2h2?= =?utf-8?B?QmY2Tyt1WnZteFh1OFB4ZUM3ci9ic0JrRWxTeW0wVU1vMDBWUVZUM21VaEVm?= =?utf-8?B?T3hNaGhFcGZiV3BUM1g0by95TkRRYjJBUlY4VzdCT3RGbjF5R0V5QjkwRTNt?= =?utf-8?B?U29sV0ozSFo4cksvWGJkYnNPOTV6Vk55NnBUcytsZmEwZmFsTWY2MGNlVkww?= =?utf-8?B?SURudkY4MjNVRFVnN01kWm0wV1VVZU5tdi9IS1J3eVVPQytEQ1plTEsrZEp5?= =?utf-8?B?S05HbnJrdHZSTUpvckI5c1FaV0p3c2FuaE5PZnA0K3pzenFrZlIvbnozRXM2?= =?utf-8?B?Ujd2YXBJeXQrYUVhcHVUUnRpWWFUTlRkbmZHaTVRdXd4eDVkUUUzem1ZTnpZ?= =?utf-8?B?SFdiTWVkTmxEK0NyaWZ0UGw2bjBnMFI1eUprUGJLV3hEKzBNd0RCcGRBclBy?= =?utf-8?B?UVBrcnNlSG9ibWZyRlRmVS90WjUvSXRTV3QyZTVNQnROWEgyOEJXbGhhNm9v?= =?utf-8?B?blFCUWhJVmtHbnNOT29ZQUFLaGJlU29MTlhFN2JtWTFSd2d5ODQ0VVBnU3FR?= =?utf-8?B?UGo2MksyVzBtcHArMm5BZ3pCVVpmTk1nb1p2RTFtUzNBc0VSM3UvSWxCbUYx?= =?utf-8?B?WFhNVHAwVEIraVhjUWk0SnVac282SUdMdlgzVEVnU1FKL3JrMkowTlRvdGZp?= =?utf-8?Q?ILmBkGFb?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0802MB2492;6:HfbyTOG4tuG8zH25f+QpHNYd/AgB21jTAyBjh3namSynDrMvzfxsvuRkUn1RObOhRn//A/jZ8cj4RdOTFCitxUTVepo3bX4xEdNmeg0gCCx64L5xglEjUFL4tOHfqpd5yb3QTsmGzYglmBAxBmsCfhrZL+CTxGAmBVc/mERT0b1IKC7ZYD4g0afhtSuzm5nrgBQamg0eRh2tGfIQtd9vJKqNLlOIsMKZYRauSDBfIA0rf0FRHUEbFk4kokK7fR0TZPdqtJ2DN066cnObU8XpOtXEnH6HiWk/qlg+j4iXfLXWki0eE89ACGqh2m8GLWcSU70rNMXG0xVBb9RstJVNdEHfbZLoyBrjk7ZzshSvKdk=;5:UjQQhSn2W/E4iLZbfJyvy8DaAmE4SFLhOsKM+/iedUYArWU/UwVsNm/ggUmqNw0OJy5J3WQ5sydA7fzDiNsEiaxCTk2oMJLU6XlGbNztvXLb+yzeeuX6dbprGk5qUdBRs28rLxTWLSBnu2reQd18XPr9+7uYQTXcv4hHoat5hkk=;24:7crIFq9KzrbTlq4jdOsF7Rng+O8kRR9a88z0XWL6L9t8gIQA8vLNsNGASxd1bAVIi1jRjGGixxT9effYFa+HiD2HyxqfqmbLF0wLPpxES3s=;7:mvxk7ECA7aqvbeCX6LwNhV71UD8pAiHbnZhYWnOcwKH2Z4vYORNAAMlV0on406+5YY92ddtwOa+dkpO3W68u9WjLgfJK+p5N0Zw8nINP6+a6CEG99Uapqnt78SDBkv6KzIeXNxDEA7yb3ZDxeuina/PmVAMigoSDW/OMjcVGypWt99imQlBOB30GNFdE8T2VrDSDMGAbeVjrL/+JUu9PCRGwViuoIkiibGX/tQp2C+n6uukuZFW6TiFzWY137moi SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2018 14:51:36.7578 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9d52bf7b-d076-4b72-649d-08d57d286fd2 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0802MB2492 X-IsSubscribed: yes X-SW-Source: 2018-02/txt/msg00196.txt.bz2 On 26/02/18 13:56, Alexander Monakov wrote: > On Mon, 26 Feb 2018, Szabolcs Nagy wrote: >> >> rmw load is only valid if the implementation can >> guarantee that atomic objects are never read-only. > > OK, but that sounds like a matter of not emitting atomic > objects into .rodata, which shouldn't be a big problem, > if not for backwards compatibility concern? > well gcc wants to allow atomic access on non-atomic objects too, otherwise public interfaces may need to change to use the _Atomic qualifier (which is not even valid in c++ so it would cause all sorts of breakage). i think it would be valid to put _Atomic stuff in writable section and then say atomic load is only supported on const objects if it is declared with _Atomic, this would make all strictly conforming c code work as well as most code that ppl write in practice (they probably don't use atomics on global consts). >> current implementations on linux (including clang) >> don't do that, so an rmw load can observably break >> conforming c code: a static global const object is >> placed in .rodata section and thus rmw on it is a >> crash at runtime contrary to c standard requirements. > > Note that in your example GCC emits 'x' as a common symbol, > you need '... x = { 0 };' for it to appear in .rodata, > i see. static ... x = {0}; and static ... x; are equivalent in c, so if gcc treats them differently that's a gcc weirdness, but does not change the issue that there is no guarantee about readonlyness. >> on an aarch64 machine clang miscompiles this code: > [...] > > and then with new enough libatomic on Glibc this segfaults > with GCC on x86_64 too due to IFUNC redirection mentioned > in the other subthread. > that's yet another issue, that this is not fully fixed in x86 gcc.