From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-VI1-obe.outbound.protection.outlook.com (mail-vi1eur03on2043.outbound.protection.outlook.com [40.107.103.43]) by sourceware.org (Postfix) with ESMTPS id 9E3CD3858C30 for ; Fri, 19 May 2023 13:31:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9E3CD3858C30 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=HFexecwE+CapdJmRPlQg9bunHQSPacaHFlVb7V1oj6+m97r+6qk1erjLJ8EbouoLOH2KA4gKNaEqfo8KzPEBXKwCnqIkRrkPWq9aSAW6bw+4iSSf5cMlkavNlTdHKoniB7lbIiJIhQLZRz+bybvpP1Q234ldeav8BbubQ6l3lOS6Cg0hIDr0n1lPGj2+zEa14hB3CooygyvYk5Tn0sZIlIvnb+QK/Tcw9DS7LwlQQjFq3ieTuxIvyMxZcfz4h8ZaVOjqwNgSJLeOV979puKPQuH+T/Lmrmg9KhoEtvK6i8qXTtY+TOT0O9YEmx9R2etgGaSnu+qNNNnpsAMEMDV0lQ== 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=ZRjm62ECAlCP89tQN6uK9eei6LuEi4vgCR7ypQbklVM=; b=aNllPFl7usEquhkg8OO6T0jRfLQKPh1Wrpg3WCWA6TNVNqF+mZFU7xvRCmQKq624G6ZeOADjJ+Ige7slmlQRzr1FFOQTtdMlx9GyVPP7NIrYjGUzx4eJ+37716VQMNFyu63AC62tXN3/WNyO65ybMG5hWwlnOq02VToKHfLCuET5b3uYfaRC7+kJoihhgad7rMIZb7++oMRvQG4wYDOVWlJH0mE4GcvnGs0I9DmqF7P2XqETK/SFmk3pxbwSUpir1cV2Yq6RCH9GvJDXlpyBZtfj/sw5eL9lG/cI7k5Cj5i5y1WaiKQitZrcQB86ZE5luhePFY3hIm6ecftXMpTqWQ== 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=ZRjm62ECAlCP89tQN6uK9eei6LuEi4vgCR7ypQbklVM=; b=xuymW59hCD1HrRfKpnLiVoXwhbFtuudHJMIi6neJy0zD5Utd/dLNQamo0hC37RDMJs14QVjMQi3gOcgoVCq5lQzCn9WmTXSxdHhUnexmISWucx7xuUCa6297JNTc1Octyrw/MtftractfR4WppGx5mXccEsoNQvnJs38zHmLRihtMCwApucEFEC3OcJNvtdG7O1WPrfd/jV4+S0HB/h7MVwxaXJw0ltcbk4Xmzd6lebVdCcWcJqovJV8LmR+XIooPsuH2cOafQuyUuzxuD3pIINVrxRbetU+achALDmlGOUAtzzvejj1J7IKXtq2dyViYIi7ifgYUXueAfGzHikElA== 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 AM9PR04MB7601.eurprd04.prod.outlook.com (2603:10a6:20b:285::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.21; Fri, 19 May 2023 13:31:30 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e442:306f:7711:e24c]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e442:306f:7711:e24c%5]) with mapi id 15.20.6411.021; Fri, 19 May 2023 13:31:30 +0000 Message-ID: <83c328ec-3eab-767c-e65c-0d83183fd18a@suse.com> Date: Fri, 19 May 2023 15:31:28 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.10.1 Subject: [PATCH 2/2] x86: figure braces aren't really part of mnemonics Content-Language: en-US To: Binutils Cc: "H.J. Lu" References: From: Jan Beulich In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR2P281CA0064.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:93::12) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AM9PR04MB7601:EE_ X-MS-Office365-Filtering-Correlation-Id: 92099ee6-ad00-4a76-a574-08db586d5ad5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YBOwgd8qzfiNfDt+DoJZmfjtpVzdrbb7tilnNUbyb0naPFO9tTNpZy6B4lRGX7xlAdIMeY3O8yAcmUl7d9ifqgbOX3jpLKZR8MzaTgkkTOExYpmaSM1nkpK9xg8jDN7KJyOmnf0ylUAs6WyqOcfJbswx38zR1LHm1e/p0hqLZOColO7IVoTaJ/7U2zYi56Sd5n3+tTiH8p1HI65NlMP/6GorVTHH6LEBWfVW38L+zbUgbogGiqmE8ttP1PR2HvCJM7UFTww7dQ31wpERQDyFAhh56i0jLlVGlQdiymjZWblT8KZgC4bca5XjV/QETYUj2Uh2Ms3lujrQ8OxAywov1hrZT2qtkV5a1jrUSmfp9ZULoYNcadmLeZzz3X/zT/DyGVwg4KkHMtPWIncLtlDEwvO+ECAfPOAaTyrdtyzmwO78ouTEZtLN4UeU/OauZLLLPuzhrGFhNu9HhqES09WZHYc61zsDBUZLmAaEBon8s37mx5B4u2bvZQUPSshmopiQ0yYRGhGBtrztEmgrQEw1QPrvweOU33XcGYyu8y/0kZaJC1zlm00QgCN7N66ecJCDcqbD3MuO7vhrgXT3c627XKb0lKqrYJWpeV+l9MFNmmsHPc+Uoh1t2TLUQuD0sSDxHQUd+vD+8VHxUAU/UK8Jrg== 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:(13230028)(346002)(376002)(136003)(396003)(39860400002)(366004)(451199021)(41300700001)(6486002)(38100700002)(6512007)(6506007)(26005)(36756003)(5660300002)(2616005)(186003)(2906002)(86362001)(31696002)(8936002)(8676002)(4326008)(6916009)(66556008)(66476007)(66946007)(478600001)(31686004)(316002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Z2N0OCtFQnl2dDZCTnBKZzB1R3AwbXd1eFFwcVlQZ2JDWk9xT3JCd3VpVDV4?= =?utf-8?B?VTM0ek9FRW1YaWg4dnh5bHVndmY3ZkI4L0VHZWpTTGtnZVgvR29uZEszMlRs?= =?utf-8?B?ZWdVcjZJd2ZzTTQ4eFBsRGdyb3puQU92Z004NWc2c2VHVXMrQldwaWQ1MkJW?= =?utf-8?B?NFJjNkNBUEZXRHFNTjcvYkxMS0hGUVhyalJadmpOalFTc1U2NXBxVWpFNnFz?= =?utf-8?B?MGZVd1ZKL1VKaSsxNkFYQjU2U3hVYTNsMnIzZmtUcjZBNktDSDBJZEdoa1k0?= =?utf-8?B?dGMrRlZxVENqSGVDek5LelFBczBYU2Fyck9HbkNJZTYxdUtsMkFHQk9LMGRj?= =?utf-8?B?NjYvMFoxN2s0aEUybFNaWEFQeGdqU2FFZDFybFJoUjVwcWhSTkh4dnFibTRL?= =?utf-8?B?VHB2cUlxZGZqS0VsbWhuWittdnd4djZTWkRrc2pUeEpuRTIyVEJMZWxzU1Ex?= =?utf-8?B?WnpsSFZhdzV5NjVUdi9zSE5OTmp3bVlkdkNwdW1QMDZ4SGNzUDBTNkk0VUNi?= =?utf-8?B?STZRZzFSVVBvLzFlMGV2SG9ISDdaK3NZdXk5WXFpSmhTdVdKd3FLRHlXTDRh?= =?utf-8?B?UXFUSXREdVZCOEZNTDBGS05FTWpBK3Z4K3ZhNFBLMk1sVTYwRktldmhtU3l5?= =?utf-8?B?UndoTUt3NDRLaUlGeEVHOWFwZm42MVJPN1RYY1VQRG1kejlPYlpheDh6SXlw?= =?utf-8?B?NDRFb01Zazd6OWRuRzNjeFRiUmxDWmZLcGVjUzNzSjJiRVY0VnVlWjJNbXA2?= =?utf-8?B?bXhrcHFxTGh5ZUpyY2syOFFLR0ZHY2NsZktuTDBZNkthRGtudjN0cjd4SkpX?= =?utf-8?B?S3NseUUzejdtbWlUMnFQUVRNRnZGNzdyaFFoTHN6SHpnVzc0MTROdUErOGlx?= =?utf-8?B?OC9GWDUvUThBSUxMK3lBL2FRL3c1VlhqVjlZT3dwWmRtU3p1SHJQVU5VeS9y?= =?utf-8?B?ZFppcHBobFhVOGJKalpVM0NHZ01ORXNOTi9SYkJpdTY0a2VKTWpnZlNiMmlJ?= =?utf-8?B?S0V0NS96SXpwbzRpRzJSQ092ZVFCK2xFeXhxdGhWSG5IM1JrYzdmS0FKUytV?= =?utf-8?B?VVBWdUk4MFB3Qkd6RHBSclFrNi9YODJZVzJLN3hEdVFRWUdxMXJlYTZ3Q1Qy?= =?utf-8?B?UUdhNnQ2dGRwOUc5YUZ4aTVBelFsV0RkN2hlTk9lcmxVajErcC9haUloMkVO?= =?utf-8?B?SXhLUFJWOE1DeXNhMXRKWDdqV2FqSWluQnFpK2dFSjBYek1WZXJ2M213RUFu?= =?utf-8?B?SVFpWUN1TnA2allJMmFMWGszWHZiQ3JsaWNTV2NBY1Q1Sko2RWIrYW4wRUV0?= =?utf-8?B?RXY5VExWakswNnk3SzdDY05wMksrSGQ2MkRaRWdmM2RKZmJydFFRTEdFam13?= =?utf-8?B?SjdYSVNtRVEwbzNZMEpqZHo4ZGJ2WEozN0pkd043enJaL2Exc3V5eFdLMWxK?= =?utf-8?B?c2ZXVkFiSWhmeUlTU3h3Sk00RUVGWGtxeGM2eExmUktUWDI3Q2JteUxSMmMx?= =?utf-8?B?eEtVbWF1ZFBOSFFQc252U2FIelo1S0pwQU00RTduT1FBQ0c1WjB5Y0w1UW8y?= =?utf-8?B?SUxReDVYaGxFeTJVdEhLN1VUb1picHBCTnNMaktIRDZocTBBYWdES3FWQ3lk?= =?utf-8?B?RVdvNXg0ZU1TeStjUXpjaUZRQzVYUGpzYmgzNmdXa1lFTnRmVFhMdVJpb2Ir?= =?utf-8?B?YWR5Ynd5RnpxWWpScnA3NzdtcFVnSlhEL3lYdkhaZTgwUG9aQmxhVk9xMWFr?= =?utf-8?B?THlsR2JaZ04rMlhGeS9Qd1k0b3NDdjNiM3VyZFFuWlNPWjgyRStXL3FBaGZq?= =?utf-8?B?RFVzODRWRVd6ZkM4QXZwR1ZLbG80b081c3UydFBxdVFPallTR0k4SEN5dHQy?= =?utf-8?B?Z1g1Mld2a2lDV1QvaGl0R0R4N3Nra2plWW1TQzFwTDd6L0wrRStRc2wveStp?= =?utf-8?B?dzFZa09zWmYzcW01Q2xYamJQT1NaTDY3bDg5SnNOdHZjR1NMTG1YVUFkMDZu?= =?utf-8?B?QVZERnd3TWJRamN3OUtaNWZMYkhGMzZUT2JiUSt5NXlQRTErOEhhU1Qrcmkz?= =?utf-8?B?bDJiblJDQ0xtN3RvZHdESytVUm9JcmQ3aUFTTVVOSnMxMW5ncVBreE0xbjlG?= =?utf-8?Q?722s8pQzVHmkaRXJgitRPYtdP?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 92099ee6-ad00-4a76-a574-08db586d5ad5 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2023 13:31:30.3055 (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: jvsw2/2l5De2tnMgy1341RqFXRlgdXjcd/uLVzuhn74xB7JHx6zHQ6qxLxg8Va3g3LJZmk7Cl+QUZiXUwg/k/A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB7601 X-Spam-Status: No, score=-3027.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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: Instead they're separators for pseudo-prefixes. Don't insert them in mnemonic_chars[], handling them explicitly in parse_insn() instead. Note that this eliminates the need for another separator after a pseudo- prefix. While maybe not overly interesting for a following real mnemonic, I view this as quite desirable between multiple successive pseudo-prefixes (bringing things in line with the other use of figure braces in AVX512's zeroing-masking). Drop the unused is_mnemonic_char() at this occasion. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -541,7 +541,6 @@ static char register_chars[256]; static char operand_chars[256]; /* Lexical macros. */ -#define is_mnemonic_char(x) (mnemonic_chars[(unsigned char) x]) #define is_operand_char(x) (operand_chars[(unsigned char) x]) #define is_register_char(x) (register_chars[(unsigned char) x]) #define is_space_char(x) ((x) == ' ') @@ -3085,8 +3084,6 @@ md_begin (void) register_chars[c] = mnemonic_chars[c]; operand_chars[c] = c; } - else if (c == '{' || c == '}') - mnemonic_chars[c] = c; #ifdef SVR4_COMMENT_CHARS else if (c == '\\' && strchr (i386_comment_chars, '/')) operand_chars[c] = c; @@ -5476,6 +5473,12 @@ parse_insn (const char *line, char *mnem while (1) { mnem_p = mnemonic; + /* Pseudo-prefixes start with an opening figure brace. */ + if ((*mnem_p = *l) == '{') + { + ++mnem_p; + ++l; + } while ((*mnem_p = mnemonic_chars[(unsigned char) *l]) != 0) { if (*mnem_p == '.') @@ -5483,16 +5486,29 @@ parse_insn (const char *line, char *mnem mnem_p++; if (mnem_p >= mnemonic + MAX_MNEM_SIZE) { + too_long: as_bad (_("no such instruction: `%s'"), token_start); return NULL; } l++; } - if (!is_space_char (*l) - && *l != END_OF_INSN - && (intel_syntax - || (*l != PREFIX_SEPARATOR - && *l != ','))) + /* Pseudo-prefixes end with a closing figure brace. */ + if (*mnemonic == '{' && *l == '}') + { + *mnem_p++ = *l++; + if (mnem_p >= mnemonic + MAX_MNEM_SIZE) + goto too_long; + *mnem_p = '\0'; + + /* Point l at the closing brace if there's no other separator. */ + if (*l != END_OF_INSN && !is_space_char (*l) + && *l != PREFIX_SEPARATOR) + --l; + } + else if (!is_space_char (*l) + && *l != END_OF_INSN + && (intel_syntax + || (*l != PREFIX_SEPARATOR && *l != ','))) { if (prefix_only) break;