From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on2077.outbound.protection.outlook.com [40.107.241.77]) by sourceware.org (Postfix) with ESMTPS id 19AA53858D35 for ; Thu, 12 Jan 2023 08:26:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 19AA53858D35 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M4p7oyDvw/5jpBIetyGTXd5LvVmQ8YsPoGstaaeoYV02jR0mLN0zq30B4r5Rl+kkrTPatKzkYGh+djDDZiNq42xYlDpEvtUNTp7g9QgjOINHZXYEGl6jo7vs1ENY0jX+JB+XIIIChM/7C4k1Y5hT35j2iRT/gHnFHL7KhFsXXal+7hKAT6D8bpR9RW94XNn7kPSOyISfoVC0vo2bJD/czP8Ch9JSvbwFnnm4vITG2TcvF6VyjlPG4fkNiFxSPxZJQUrji/Se3gWfd8RQLjM3MD4pjmv5EzVssqrz5Czl3SChXtlIn5AbL+Ej1MJgKcZyfyX3wfU90kYkj43Sb8YGIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ceC8buicX5JvTMAShMwFw+oNxBPuNke4Km+l5Un1L9A=; b=E01fexb+FRu8+q/fk9UMsrcApa5uiCuXYRbMLNH8//Ytrdh8TgcyDME/s1VWxCWEPGfGi2QEdv/OHRBHUYQkZT+tS5mfO9AxzV+oNUMsl2uDodi9G46mpqphdqkryEU992dmjXQ0EQ6QUdy4O0S0CJtcno53SBJsjCLh8C019NDIql1RDJhcc43tYfAPk4zKa5kIrfn8DRocQ+jVxcsTNt9kG05IOgO0suzQIaH9fkOjLLADXb7IzAqpprFJt/Bdsrgmvpp12qBo74UfA9ZbMbTLjtjOQh7ZzpSf+N3W4Q4K9oSWKN9rn5OZKZJErVpY0khNnCUjIgkLp77JntZdxQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ceC8buicX5JvTMAShMwFw+oNxBPuNke4Km+l5Un1L9A=; b=mUFL+VUBaLZA7bnwYTd4mEv9GdXRE3hMslHBppANomAP1nVErQlRY6TvONkuHp8aXDcwVAchz1AHT23+lhxAW1sZgYBUBGqXBfDXtbH6SIpjGsG2R6wKG5/jtlkMdwdrqRDbfjFYJ04qEQZQgvy9ZGbwnM93cSf+h0uGgHb4Phg7959qjTWkB8Wj6Ong928BU8Tg4ThnlEcj4XZ8XrlIHjHua299tI5whGpZTAC09nJXARAlr0JdIYzNF0QsgH9mEVR9eSpGMgPNLcsYW+wkffW5qxKVevKmHfAJcRSYl6KidQomQ1s/fDF7CFaOwlNN/J04vOMLvkVStEGJ7z4ovQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by AS4PR04MB9385.eurprd04.prod.outlook.com (2603:10a6:20b:4e8::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.18; Thu, 12 Jan 2023 08:26:29 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2991:58a4:e308:4389]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2991:58a4:e308:4389%7]) with mapi id 15.20.6002.012; Thu, 12 Jan 2023 08:26:28 +0000 Message-ID: Date: Thu, 12 Jan 2023 09:26:12 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: [PATCH] gas/RISC-V: adjust assembler for opcode table re-ordering Content-Language: en-US To: "Maciej W. Rozycki" Cc: Andrew Waterman , Jim Wilson , nelson@rivosinc.com, Nick Clifton , binutils@sourceware.org, Palmer Dabbelt References: <4a67f41c-3473-3833-c0fc-ed4f69a062e9@suse.com> From: Jan Beulich In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR2P281CA0052.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:93::15) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AS4PR04MB9385:EE_ X-MS-Office365-Filtering-Correlation-Id: e66e722a-cb74-4fa8-3eb6-08daf476b3b1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: S07QquBvoG/PYURJWW8TcGJvQ5ZbK1CfYiRm3z7K77uEY/FkZ9ypQmA9L6sS0khN8m6ebhsr1CidkmAz27IPIYM3XhZ4GDscS1FcoPQr3zrXsqyNRicmNwV6oPkPAdMd1W0ddcCyrhyZgAqisQB1j+PxSlYEtd4/dX8BhchKLzqLlo6nFVjAQBKh/29tT6piaq3IAFfka+kPicxilKAcsYVlFpllDoZtPAxiyqx7CP+c/MCirXGtlW4bCrgxUnWsCwdobEU//cVzjUSh/ZT08T5fZGigxhuVAhiPL9NriZ2CZLOx17EZaBJnxecfIpyN8R1KuFq12DCltu42ZqXPoC7iMee5Xs+q2DAEa/e/8qCdqZ8TufgpnR5idyLARwqTVfvQw46EpmgVxPyrVhAzXIhjSFG+IagpU6X3X4twmntXsqKB5mN5CxZ38ljjRfQliuUzRh7YRrMHDIj19lWPQ6JPKqtK2UtnmYaySI4ocj+2vUV0OVnrzSLoy4oKgxa51RiYccND5bQ9RgMoKjcdrcQWKp9XqYYKAF5wuL+ww5CmyoESdQBbwX70hHYQTOhxZ4Ou2XPRfE9QvocjyZgVJPODitaY3NfEceOsXc5N47Ob99auK6YoYWevfd4F9p4Yd5YRsTgjv8yU+epsPxyX6LMZvNDDR/5hyZBQC55z8gfhf8Lwc5DpnXs3bf5eriUWlCSvkDMd+RHdBRFRxjZpRT34GlodSIpGS3H6PUewdTg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(346002)(376002)(39860400002)(366004)(396003)(136003)(451199015)(36756003)(66899015)(31686004)(86362001)(66556008)(8676002)(54906003)(66946007)(41300700001)(31696002)(66476007)(6916009)(83380400001)(4326008)(38100700002)(6666004)(53546011)(6486002)(26005)(478600001)(186003)(6506007)(8936002)(316002)(2906002)(5660300002)(6512007)(2616005)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?K2hSL29HQjkzZDFpVjk1enppYmF4bGVBdTFlM2hCWGZNWFJCYm44dURSd3po?= =?utf-8?B?SzlCbFhiTlBmUDZlOEkyZVZmRzBtY3JNWHB5UVVuT0pNaG0xSkFldmtiVk1B?= =?utf-8?B?MHBqbFp1aVovTU1tZVNoRW5UY1FZU003K3dlcDM3OWtkOGJJL1ZiRW52MTFL?= =?utf-8?B?ME1LRUNHb3laZjRsZVkwTGRSeTVRV295c0dqajVjbzAybENLSTREc3dXVW42?= =?utf-8?B?b29BcW9OMllSNWxsek85R3EwdWdOWmhkZXZJM3ptdnI3K1R4ZS80aW0yb1Bq?= =?utf-8?B?ZU5OKyt0OE8zT2dTNnpVamJtd2pzK2ZmbW9CazNDK0NkVEdodTQ5OFhCUTlZ?= =?utf-8?B?clpzZTJxRkZEeVRvOWN4R2dkbzNQOUhBOTVDSFRUekN5QjJpTmRIYXBDSUdn?= =?utf-8?B?Unk2R2V2bkx1bi9BS3JJTjdhY2lUaHFZMTRySjdvWDc5U2ZUWXQvU2dqL2Uv?= =?utf-8?B?blVlQXRuSEYrNkpUaHl6bHdsTkRvcVFZdHRrNnBZT0pMcHVBMUlUcUdNYmUz?= =?utf-8?B?dDFkWVZlVTdDemduK3RJWmVmeDNTUTVuSVdQSDRiTm5MZWVaY2pQdDdzc3Rk?= =?utf-8?B?Q1ZuTndRVERybmY3TzVHT21SWll6VkVlMEQyTDBjTjdMenh6Y2ZTSXRrdExZ?= =?utf-8?B?dVBRMzlIcklKbmpBeDZhZ0lNVS8yQUZLOEQ1VjFia1Z3SEtVWW1KTlNQZ3pT?= =?utf-8?B?ZGRqN3Z4T0k4WmRPV2dVZlViYmhLR2x0ZkR4bU9XeVZmSXNUNWUxK0ZuTUV4?= =?utf-8?B?L0x4L1ltdDI1OURvMTBKUW1NSFF6TE54Rzk2aFczZ1FNZkNXWThsMVEzWXd4?= =?utf-8?B?RExCTGRzUGFSaG5VN203eVdIa2RRb29LdldlTVBvejJSVFBxcVA4M2thYUNl?= =?utf-8?B?NXhBSjZhM0EzQnlWcG1vbk9kRU1QQlN3RkRoVjdLNC9ubERzL2Iya3B1bnRr?= =?utf-8?B?Tm03aFpWSmZaSUxlNG9TdDJEK3UvTTFFdnkwc1Q2YXdkKys3Qlc2dUJKRTNk?= =?utf-8?B?UHQ3SlRqOG80NzdYRTF0cm45N3VqTG10ZjdRYnlsVWtYVlhkUkh5Sm9ZN1Vs?= =?utf-8?B?QkYrNVgxcytpeVZxWEsxRXBMTllnaVB4SlNqdDA4a3hBT1BMSU5LK1NtSkIx?= =?utf-8?B?ZTBKeStjcjB0dzVTTEt1OEFNOUQzS0lING9ERDluV3VoUWRjVlFBaXJkSGVG?= =?utf-8?B?UytMa0FoUTZuWm12dzN3QkY0YUkrTVE1ZEVReEtiUUw5anRFMEE2all3S1Rl?= =?utf-8?B?dG1EV002bDUvNzkrakE2ZVdlZ1VjR2NWUnRsUlNwM2YwZ1k4NEE4SVFtYm1j?= =?utf-8?B?aWF4bldlYy9NQ2VwWjZBSHJ3UU9Lemx5UjlHSmZheVJ1MitDTzUvWWJ0YU5R?= =?utf-8?B?WjFyQ1NuQTdreG1WUUUzRWNWWlFodmUwVUlDTXZYamkxVmluQzR2K3ZYVHNH?= =?utf-8?B?elptN1dGK0RLeWxDOTBjWjgvUUJPcnBqdldHVTF2NVQ3UVpGdHdPZEkrekdE?= =?utf-8?B?T3RTbnV5LzVMOWxaSnlsZlRFOXJOZnJsRnVXR3pqM2JVU3JFZ0tHZUZEN1lQ?= =?utf-8?B?a2d2bmNtbW53dTh0M3ZuWWtmUEtHN0M3d0NiOXp5UVVmL3VaK2Nlays3emt3?= =?utf-8?B?M1ZTa1hmeTVHTTVlZHk3amFNTlpyOExLeGZaVjV2dU5STnZCQzRJM3BOZWdO?= =?utf-8?B?dVNVMERIU2kvMGNwdWNMRWIrY3lPY2hSL0o4WGd6RlU4L2dZRno5UXVoM1d5?= =?utf-8?B?dytQZG1WWkR6ZkRYRWdwWDczdXZndkNPMnl3dmtpMVhIUTZUUVFrTzUvWHh2?= =?utf-8?B?emhwWE9ZdEY5TVg0Z255TzdHWEVHRGtjb3h1SnVlYXZnWDVVcGNvSW1mdjhr?= =?utf-8?B?dzNtRzhtU0kvQTNNNG9vYUdqaTlXamJPRlhCT3VaTSt4N0YyalI2N2NUQWtV?= =?utf-8?B?eVVjRHlVYnJzM2hUbmxLZlJaVlRVbHJCV2t1QUYxeDRxNXdZZXg5VmdlUmFv?= =?utf-8?B?d1R1cFJoK3NFVXVXc0VpQXY2SUxCZ0tkcGN6RU5OODVFTlBtMXd5cVpXMW5u?= =?utf-8?B?c3dEOTgyRTA4T2dkQXNyVmswbUorSVFCbE9Wakc1K1hHU3I1VStuQll1Q1lD?= =?utf-8?Q?oK6DBq3hpuvbiK0m/yTU8Q+0G?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: e66e722a-cb74-4fa8-3eb6-08daf476b3b1 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2023 08:26:28.6433 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +0fMaWATth/AH4f7Kcky2nSWsmMWnFmKEoPBLGdCRNLezKNkQ/Hy3wDmiWh/bYTrCtsXCWenUpLe9STQr104jQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR04MB9385 X-Spam-Status: No, score=-3028.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 12.01.2023 02:28, Maciej W. Rozycki wrote: > On Wed, 11 Jan 2023, Jan Beulich wrote: > >>> And it does appear to happen, because correct machine code is produced >>> regardless of your hack, except for the spurious symbol produced. So is >>> it not the case that simply the state (interal relocations recorded) is >>> not correctly reset on an unsuccessful operand match? Why does it have to >>> be special-cased just for the `a' operand type? >> >> The parsing of an 'a' type operand involves expression(), a side effect of >> which is to insert a symbol table entry for symbols not otherwise >> recognized (and note how my_getSmallExpression() addresses the same issue >> by filtering out GPR names first [1]). Yes, in a way this is an >> "insufficient undoing" issue, just that undoing of that symbol table >> insertion would be quite hard and/or fragile (from all I can tell). And >> this is where the dual meaning of symbol names comes into play: This looks >> to be intentional, and hence we can't make use of md_parse_name() to >> suppress the symbol table insertion in the first place for symbols which >> (in other contexts) identify registers. > > Thank you for looking into it. Indeed it looks to me like a problem with > `expression' (or `expr' really) and the way the RISC-V assembly dialect > defines register references (unlike the MIPS one which uses a `$' prefix). > > At a glance it seems to me that the correct approach would be to define a > "dry run" mode for `expr' and use it in the RISC-V backend to validate an > operand in the first invocation without causing any side effects, and then > only once all the operands have been processed and an opcode table entry > accepted `expr' would be called to finalise the expression. > > I realise it's something you may not be willing to commit to, as it's > likely a larger task than a random tweak to the RISC-V backend, but I > think it's the way we ought to do it rather than piling up workarounds. I might actually try to do something along those lines, but only once it was clarified (by the arch maintainers) that the present behavior of identifiers meaning different things depending on context is actually intentional. There not being a prefix to indicate registers isn't unprecedented, after all - at least x86 (Intel syntax, or more generally "noprefix" mode), ia64, and Arm permit the same. The former two take the identifier as a register regardless of which insn this is an operand of (creating another problem when you really mean a symbol of that name, with varying approaches to dealing with). Arm instead makes sure that different mnemonics are used (b vs bx for Arm32, b vs br for Arm64) and hence ambiguities cannot arise. Jan