From patchwork Fri Mar 10 10:11:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 67317 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp785140wrd; Fri, 10 Mar 2023 02:11:42 -0800 (PST) X-Google-Smtp-Source: AK7set8nQc6E5lh2rv1aS1biPXycJK/zaHzn8pPJYpV7IR13s2Es/yzEMtizmaaj1awXfM50cxEK X-Received: by 2002:a17:906:1396:b0:8b0:fc14:bbcb with SMTP id f22-20020a170906139600b008b0fc14bbcbmr23124021ejc.42.1678443102865; Fri, 10 Mar 2023 02:11:42 -0800 (PST) Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id 13-20020a170906308d00b008d518d4bf6csi1223155ejv.861.2023.03.10.02.11.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Mar 2023 02:11:42 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=mt4UTYGR; arc=fail (signature failed); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A26CF3858C1F for ; Fri, 10 Mar 2023 10:11:41 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A26CF3858C1F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1678443101; bh=j1Byet+1j/TzuBNHn1L+cFC7S5pL0EDXbitf4uusgx0=; h=Date:To:Cc:Subject:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=mt4UTYGRWURwitVg8iR6ZkioMIyu+jX3Wc5e1dmRnR7Jz1WDK9Nbzc1jcmp7mgrSa ANT8VTC0mE007k4/3bf57zHEcjlKxzJZ/RjTj26ToKJPiOT2i0CH2s/J6EsKwqL+LE u3PAIUh0CcVg+8jWVBT5MBOd6jOT1marQbOq7Qwk= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2079.outbound.protection.outlook.com [40.107.6.79]) by sourceware.org (Postfix) with ESMTPS id B18F33858C5E for ; Fri, 10 Mar 2023 10:11:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B18F33858C5E ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D/9V67+W6YJqqy0cxh8NYdIEX3cXF+uh7exDC6YRfcNgb9dDqUzGxgP/4UDyoGPs+DJw42Lqu79hxjW4CKh/PoiMwVnQ+pey7Kxywm+j4hxWNgA6NoQveBHqiQAzK5T8AU60l8qqi1EyFjfK6A/+sEPyBiDQjpUM9ElJHUA7Xbkz4nGiJZcQA49lt6HrrQsJdXQBxAokCOdfegSHRPQUxCNyhmpzl1Rtlf8UDXSLqyMfNE6bxr/FwnlbmgNgknXjwcXA3/K1Y3fLFNkdDFPhIKtr3NUGY/UTlTYpgHIlaUCRL/O5VFhElaU/QsCR0L3/mDLQ1soMKYZbieCTOhBuFA== 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=j1Byet+1j/TzuBNHn1L+cFC7S5pL0EDXbitf4uusgx0=; b=gE3juuOc9uxKZ0XoHdt41AxTA5TLE5Mu4CgEuobBA3NszWTGynM2yn5DX+moF9gQfiFFn5cAaeIMllS6fxiVY6pvnmNAejMTYhAiS3yL0Cal0iLxRti+5UHb0mrKbfsaLArvjpV7kZ+GZM5Xf9WYahNRurA7olqTyBqEUz3tV/MgwmLIJC9kSMPyeoatnz9eaPx4srQhqIXUQI5LDQQrmBiiYQ5H/pQq0tg1Wy4doQ1zkHw2NOoqm2v6yP/DaQjtYwOTMElrNdG2glmzBIkkDlcyQFzFwJEYNCZHyc9hDD0rHX+IuNHJLR3jB7yMAowo4vr2hDh27j4VbgXFzM4j2Q== 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 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by DBBPR04MB7818.eurprd04.prod.outlook.com (2603:10a6:10:1f2::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.17; Fri, 10 Mar 2023 10:11:31 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::154e:166d:ec25:531b]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::154e:166d:ec25:531b%5]) with mapi id 15.20.6178.019; Fri, 10 Mar 2023 10:11:30 +0000 Message-ID: <312cb612-378a-be36-6f6c-62df7313975d@suse.com> Date: Fri, 10 Mar 2023 11:11:28 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Content-Language: en-US To: Binutils Cc: "H.J. Lu" Subject: [PATCH] x86: drop identifier_chars[] X-ClientProxiedBy: FR2P281CA0105.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:9c::17) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|DBBPR04MB7818:EE_ X-MS-Office365-Filtering-Correlation-Id: 7ad02156-b6cb-41fa-ea7b-08db214fd1a2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9OvQ4/YzVuzzWZjWRyU3UxC6oK4qZt8la8M3Stf37oKiYHC1Wv7UduGuUiY6N4m4lQnB0CIrWV2JaQz/aK7kODvyCO8xH7O8FuuYDrv5sbJPk3kkdY+4B/o3Lr34DVltvvxkexC4fZduNYMLbfwqPtQZ9nNtUaJLatbLV76aUZXcv2WFy3VlnjPWn4HImZiPj8CR+q9FfAu6kbxOR/4PLLf8RiJ4LZZYbID3n5gX3xbFvAuHoikZln3mfA1TJ3QmNrgx1agnNKMa1zsxsqVwsB3H2GGoccEZH6h2xCMjerSEqdPbRFvxoPonZQ6SVHQBKiPpQqQxiTz482eowdCIFNTHtU/VoI7wNisPOqBLoAZ+8+sdvvwhgcQix32DxEFkBu1PgkS40/u7eeFOJoqfwf2O9XJU+g7iZ42oLjx+5UcAknikT7DMqMzwmE2AqaCrsmolhC6Q3ihwur7ePdKlqCGfA2LnlmCSempT0Tzt2Y8CeJIx3DmS3JFUfIBvyC1Xrw/NELyBOcGnQmwHYQl3mMpe7Q4HwvNPTXTpjMF3QodRR+UTkK4WH9QExkNpg78M1f/qf10BOy4e+3bsjaHCZHanODoN4YQ46DM6hvmLuwMpCbGC1aAI4jt20sP4UWCu+LEg7TGfeEjUgqGrgVZwA2Q4ZI+cKGilMgbxDqkM2x9PpiG8sPSRyYdM5G986p+05fa6DGhHrswo2b80so8Dcpzeh4dxeMIDpE/8oq8G18M= 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:(13230025)(136003)(39860400002)(346002)(396003)(366004)(376002)(451199018)(66899018)(31686004)(31696002)(316002)(36756003)(6486002)(186003)(86362001)(6512007)(83380400001)(6506007)(26005)(2616005)(5660300002)(8676002)(38100700002)(8936002)(478600001)(41300700001)(2906002)(4326008)(66556008)(6916009)(66476007)(66946007)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?PWuBJDbNTV+CyJHNqRfs0QymQAU3?= =?utf-8?q?5mYI53ktZlfkbwbDr1ZBaCOpT2dS63JPYjdgzW1GyAPDW2s6JhD8d+zdJH9151gyh?= =?utf-8?q?0kE+m9uzfX6ZB/NYMhDgaGSlpzbcSz6+jmar6yUaCA+WeAjkGLQNWgss9yiCFDHfZ?= =?utf-8?q?DjCxqNUqjQnFeU0uaY28U8En1qo12joVkz8jxj2ZkXS5PzwfbxRnGBvCzT+eCYMru?= =?utf-8?q?UNpAzgCMjUk2UFjijk3NdmUOKpeZI72AwvBIaEHRpboZYxCyBnQgTMytVZa0ON5p+?= =?utf-8?q?s4HQ9dwTuDcpJCttAJ3a9aR0nG1taHrDNpO8Fp4Tu92geiGp6bFqT3zB6bTCffF4q?= =?utf-8?q?O3fRiLKahmfdk+i3DMtmQB6CDxhG2LtQTf+ZbIhcKv5LOy+FFzZUllMNIIbPZzHGR?= =?utf-8?q?ymSaWPuLT4bSnDg07heg824+IwJMSw5Gac8JC/fwHVU3ftAldO4qFjGYOT2e/+dNg?= =?utf-8?q?uQZYaBXpCOYaaAJotEJRYghxuSNKGlF+YmOxrdrR35gJQMBoutAkPT+9Brwmbrjli?= =?utf-8?q?xbwA8YM+5OM3ZIjE9N6VzVVrY7wrYwuZ4P4TlPJ5xHeX/bccuwHcqPRwdKZKSHVqJ?= =?utf-8?q?hHRO6a0m9OTEp9HKOo0zCiKAHHKRzjiwoT7I+R8z69Ie8VrkeiUJz0ObhIb0LdcNW?= =?utf-8?q?wBo2PsRyGALb67zE6G71TfpJFR4flC1S3I4WvCf6RhLO/LAOrAsC0n/0MZf4GaZVy?= =?utf-8?q?VXUDFVSawKiwmR0K1Q1W0ti5Vyl0iZ6HqX6fc7GuzTb9dkMt8uNA0LzpwsobJlLQt?= =?utf-8?q?jimYssYlhp13wNOmod+3aYM6+mEYVfrKNCBwd/MaiqoMf0yzFJ44tcOBn7XHiOnkK?= =?utf-8?q?p39ygSaRjvcIyt4EmGVgfikHdXxTCknXMqMBELQzrOKDbNQxLGQ0ZkDhg5+2acTmS?= =?utf-8?q?ZG+mUTtpiDlw8G3//MfhraNoP0P0E1hJ4x4QTTwPj9WO+Sj04J+zqZZjj56PADKni?= =?utf-8?q?n1eKDu1UEsIEhSXhq2+eNB18RW6duZH4c8qDyXT+PZQv3E605rFahUWZ9Hpr0+JZE?= =?utf-8?q?4JzNKsaqtVjYgpJYFAH5CAcoVuMh9zj+59RNcey6SX5d7yI2n4pg6KT3I8e/OHmth?= =?utf-8?q?RQArKBNzoVl4HgHxH1hpQAlV8VaxKYVF7QFJpw8aOGby6Mn+BeQehXjnxvtszkB82?= =?utf-8?q?mCLlxaROPJl3AzwzcdbxvlY4KxCa3sDq/Nk+Cx+Crnup4a5gKuw/Ceta89hEfHJ3w?= =?utf-8?q?npTB5BEiOO4Wx7gnt1ZjNV0RaXSMp6NZvDTXBHeZPrBOqOnl4HNXPXl0yJoQxiczD?= =?utf-8?q?PtDRFGBuSU7XJAW2mBT4/f2QwJH77nN1ftNlJLAYjbCK9LfFve8qlgQ4Kg+TWVNjN?= =?utf-8?q?UiyKzUtq+MpNIvQMBjHMaN3mqg6KMlmj+uD1h7HWdvjis+km3h13POYa6/UGCj4Ak?= =?utf-8?q?5yNedjzyU88fXeUlfL0BII+Gbukn5yut7hykRmQaptxRcW/If5+U/pqaB7IaTL8Da?= =?utf-8?q?hmbhZ7E1K7ROuuqSNdczJh11NUwR723i6eYpXrypJLMwY7LWZyrZZt4EBOUmI8OS9?= =?utf-8?q?lkhYiV0h0AdR?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7ad02156-b6cb-41fa-ea7b-08db214fd1a2 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2023 10:11:30.8023 (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: RU36G2/g6VylrS+71VgknDr/yZikhvq4T74qoCmegYzKCeq/g6I5onktvtXMJaoOFTGSNPgilHw61KJBg4e6Xw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB7818 X-Spam-Status: No, score=-3028.2 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 autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Jan Beulich via Binutils From: Jan Beulich Reply-To: Jan Beulich Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1759975155083186380?= X-GMAIL-MSGID: =?utf-8?q?1759975155083186380?= It tries to resemble what's underlying is_part_of_name(), but doesn't quite achieve that: '$' for example is unconditionally marked as part of symbol names, but was included as identifier char for Intel syntax only. Note that i386_att_operand() checks for the immediate prefix first, so the wider coverage by starts_memory_operand() is has no real effect there, but it does matter for something like mov %fs:$dollar, %eax which previously wasn't accepted (but which clearly is a memory reference - there's no point in forcing people to parenthesize the symbol name). Similarly including '%' as an identfier for Intel syntax had no real significance to the rest of the assembler. If '%' was to be valid in (unquoted) symbol names, LEX_PCT would need to be defined. Note further that this also addresses the latent issue of a sub-target defining LEX_AT or LEX_QM to zero: That would make '@' and/or '?' no valid part of symbol names, but would have included them in what is_identifier_char() considers a valid part of a name. (There's a minor related issue which is actually being eliminated: te-interix.h allows '@' only in the middle of symbol names, yet starts_memory_operand() specifically looks at the first character of [possibly] a symbol name.) In parse_real_register() there's no point also checking is_name_ender() as at this point no character is marked solely LEX_END_NAME by any sub- target. Checking is_name_beginner() is also pointless as the hash lookup will fail anyway for a zero-length name. While touching the check in parse_real_register() also drop the "allow_naked_reg" part of the condition: This has only led to inconsistent error messages. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -531,14 +531,12 @@ const char FLT_CHARS[] = "fFdDxXhHbB"; static char mnemonic_chars[256]; static char register_chars[256]; static char operand_chars[256]; -static char identifier_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) == ' ') -#define is_identifier_char(x) (identifier_chars[(unsigned char) x]) /* All non-digit non-letter characters that may occur in an operand. */ static char operand_special_chars[] = "%$-+(,)*._~/<>|&^!:[@]"; @@ -2611,8 +2609,6 @@ set_intel_syntax (int syntax_flag) expr_set_rank (O_full_ptr, syntax_flag ? 10 : 0); - identifier_chars['%'] = intel_syntax && allow_naked_reg ? '%' : 0; - identifier_chars['$'] = intel_syntax ? '$' : 0; register_prefix = allow_naked_reg ? "" : "%"; } @@ -3076,27 +3072,16 @@ md_begin (void) operand_chars[c] = c; #endif - if (ISALPHA (c) || ISDIGIT (c)) - identifier_chars[c] = c; - else if (c >= 128) - { - identifier_chars[c] = c; - operand_chars[c] = c; - } + if (c >= 128) + operand_chars[c] = c; } -#ifdef LEX_AT - identifier_chars['@'] = '@'; -#endif #ifdef LEX_QM - identifier_chars['?'] = '?'; operand_chars['?'] = '?'; #endif mnemonic_chars['_'] = '_'; mnemonic_chars['-'] = '-'; mnemonic_chars['.'] = '.'; - identifier_chars['_'] = '_'; - identifier_chars['.'] = '.'; for (p = operand_special_chars; *p != '\0'; p++) operand_chars[(unsigned char) *p] = *p; @@ -11579,7 +11564,7 @@ RC_SAE_immediate (const char *imm_start) static INLINE bool starts_memory_operand (char c) { return ISDIGIT (c) - || is_identifier_char (c) + || is_name_beginner (c) || strchr ("([\"+-!~", c); } @@ -13069,10 +13054,7 @@ parse_real_register (char *reg_string, c s++; } - /* For naked regs, make sure that we are not dealing with an identifier. - This prevents confusing an identifier like `eax_var' with register - `eax'. */ - if (allow_naked_reg && identifier_chars[(unsigned char) *s]) + if (is_part_of_name (*s)) return (const reg_entry *) NULL; *end_op = s;