From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2078.outbound.protection.outlook.com [40.107.105.78]) by sourceware.org (Postfix) with ESMTPS id 152573857C4F for ; Fri, 31 Mar 2023 10:05:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 152573857C4F 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=Wpft4i2A4zdnxIgA+6T8C7qRKu3TGmWlM0v1U1D/JOFi5YIYnfrnAII0gNLfKgFHArciRCmQXxqepZAybO/K50kLTXwD2Iq1OWmxkimz75Nj0NraNTi26nS+JKeZtBNcq0jTxxY3SXHIHaKsycfvbqH7p8N4eh5kTIrgOMkekfqrSQJlVBLyUeEvoJn8O5Cxerx1j4osENX8Bae6P0fvAyqVuR6wnynn9pZPP2Q+AoP9927mv/QCJhulqFCBRqVnOnpFaDcJg+tW0f3cQe/morlXfXzScUz1Dki/aeDZHear2XqwqBvNT1U+1pIDJwaAeLpq9vjdgbrxcrAaYscZ3g== 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=/Jy39ykpRVXqCeMtGrD79JMEY3/Fjc7k2tN85Tg+ACE=; b=dMA3g+TsFdjapL9aF0xLBo0ijxXw6Ai6PeIJEiaMOknxYmsBN52B81UJqCJy88qfUyObgDZoiUkHYoCLzDYlQ655z+1KSxBnRG1uYyv+CUhCU+XaZjAfoIgBSb6hdooZFgv2ERuNNe1YccSh4kVIZhhUNZBcU5Qh/5arPeVnHVrOFJZD0wiVHZ/noLcjhDZQFpu0FUIdAO/UrkllipTLPNVhN97EEUYRv9cffopq7q6ZVWNOynUZ7LDHvDaAcUcxxvVxsPJY41P9r55kTYu+f85Fcb1wdnBcZ95cx34+h3Mtmti+oFosulKibchEKT51BXPHcLFMx1r+bIYx83Lhww== 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=/Jy39ykpRVXqCeMtGrD79JMEY3/Fjc7k2tN85Tg+ACE=; b=5r30Nz8UKs885ubvEAowrQbjZfXs52d0VoVqoC8qjqWD63aKLWvv1bbI949GYQmhZSMiqG6uWN9FLqjb/QflVbKZ0ZpEVZ7xPd1vHSm4xeMnrjNk/D3ftqXw6wd+wHosy9xFqgDWV1ucphz5m223XiA/8bpk9SpKrPI3ajnRn6pK/L7/PwStZZ3RpGPhJvuklKn77YgCI078Vr4Z2S7vinxkLRRgiQN4g3LodXLumbes/kIxoPJDQySCqUAdHN4YXZgwuroSCkhgQL3WdBPvktA0Po99EYB6OKqesES4rFCHM2S3GXk9PxRvTfupf4lAAEV8HTXn/gbXQPC7rWtttA== 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 AM7PR04MB6872.eurprd04.prod.outlook.com (2603:10a6:20b:106::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.21; Fri, 31 Mar 2023 10:05:55 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::154e:166d:ec25:531b]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::154e:166d:ec25:531b%6]) with mapi id 15.20.6222.033; Fri, 31 Mar 2023 10:05:55 +0000 Message-ID: Date: Fri, 31 Mar 2023 12:05:53 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Subject: [PATCH 2/3] x86: parse_register() must not alter the parsed string 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: FR0P281CA0177.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:b4::16) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AM7PR04MB6872:EE_ X-MS-Office365-Filtering-Correlation-Id: 917a27dc-58ee-43b5-31b0-08db31cf842a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JrI+3oN3ykej7qdmdcX+H/nRcEoAvwjJO5BP1gMVaRB9yJhvUd6AtRH80Rhm8Af9e3VmFuLEhLoZCAIvhKYBMP88KFl1wv9lEgFZ31NJoXb20RXbjIs/rwGbaUhCQIF123qUpBk2ks+KICnsnOTXiO7xJSGxJZ8jWeWw/gDBCSgXKoltr9fI62ThCfrFfv4ybVauGx9/xvXnzCDEeDYNK/3rKtYS9+YeM4KoMohrcCQgfRtzmCzYtYGzTN/lQVfiP2nQj6ygEj9tDAf6MHZxsDkXR0cXQeYgCHqRi8FnDwLwF2n40kukgg+iTq3emeBl4CS8rkzTglBkyDak0v1hswarmFv5Qz842KFk7hHT8BCX8wvk0qSihRlBjQT5TKlqsrz6kp1EBbz2t6cORFBU7se8cT3TM0gbj+HF4GeIkTNBgPE282LP3hqP0dIy3ECqgTjJxLbeUpAn08ydMhZryJb6zszo7LDRn0gIPIt/RNUweVxiijO1R7n4oJ4HRZSHuxx93+/6RBUmXalJbBB9ZhXzdPHID4T39/O2DO31gwhuLGmdM1xPUzniVzJvEeON/A0M5lFK12ZSjRXyVkSph5uH96mVX4MXYp15fM4kfstBzKp6Q96yTtj/JmjK5KPCxMOGyj9I4HgNClIRvpX3AQ== 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)(39850400004)(346002)(396003)(366004)(376002)(136003)(451199021)(5660300002)(31686004)(2906002)(8676002)(4326008)(66556008)(6512007)(66476007)(66946007)(316002)(6916009)(36756003)(478600001)(6486002)(2616005)(186003)(8936002)(6506007)(41300700001)(26005)(31696002)(38100700002)(86362001)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UFFVL092R08wT1g4WUhKTUFKbVYrS3ZadkluSW5GWnVyRmxNODY5WG54T3FO?= =?utf-8?B?KzNHb0J3MGxGenJpOUI5TU1jbDk4UDZ0RlVyUXhqRmwyMVFMRXFvajluR3M2?= =?utf-8?B?WkpiVDFHeE52YldmMUM0MDhza2IwRFdsL1BSaVkyaVdYaWJyOGtYeEZSNnFR?= =?utf-8?B?MllwTzFjUHVOekVsZEFlejRVbVlTSTZ6VytjRnpRYVNsTlloMnZ1SVhmMXpj?= =?utf-8?B?VFV4T3BtRlA3ajQySkhVcGtzU3Q4ZG1vMEdDLzZLTzMvcDJuQXI0Vm1Yei9E?= =?utf-8?B?cEREYUpEUHVJN3dvcTFqbVFsM0xEaVphY2NsVlVyUjJSZ2VwN28rOEJZRmtN?= =?utf-8?B?QWMvWUFlRS91RzVZNHQrVDNwd29SWnNxdUUxR1hxSW16YlVtNFBjcDRvOWNh?= =?utf-8?B?NS96dExpcTQ0dEJ3em52akNTZkZ4a1ljOFhaS3RTaTJGY24valB2cWwxbmhv?= =?utf-8?B?bFZlRENIWHhJSGMrcFVXSHVsa1FHNVd5YVRtQXVGK1ZXakVMZWRtcHB6Q3VT?= =?utf-8?B?TzFBM3hINE5ma1ZpRExibnM5QzVsWGxYNitOQlhhZHQ4U09FdDR1QTFaMHJ1?= =?utf-8?B?TS9adlNwaUU2TTIrRVNlT3BXZzQvVFpwOTZSZ1phTklCcmo4NDBqTlVBSlc1?= =?utf-8?B?OVE4K282WDBwaWNwQ1Y1elE3SC9Ca1I4Q0sxd1YwMTJrb29naTdFeUc1RmRv?= =?utf-8?B?NGV1blh2WWRmRXpDYVJWeFdubCtOODNXRFo2WHhURS9kVkhrUHI4MjBqcFBX?= =?utf-8?B?RG5RNHNpajMrMGoxV01hQ1l1S3lzeGRNS05GdWRCVGFnRE56SzZXZVE4NDNM?= =?utf-8?B?dXBhRDdCZlByVVpaQ1FxWHhHZ2pueStZM05FQUxnZVNJUE1rZTBGRnpyOXZZ?= =?utf-8?B?aUJDK2pnc0cyZGpSVWlzb2NHVmtvZUp5VTlXbnlRRXpZS3pRYm15SnROS3or?= =?utf-8?B?dGxWMGJSNi94R2VjbGdsa1dkSWNwbDRMTVdQZ0NkNmxXWmJzSGdzRTU0bzVl?= =?utf-8?B?aVBYcGpqQy90czVTN09zanY0NWE5eE9jaU5SZ1k1djAwbGdlNkRHdjdoWDYx?= =?utf-8?B?djY3YkVIVFFMZGhtYXdlc0JrS0lpNTRMNXVmRUhHMVRpdzNqTDRKOHlZMkFu?= =?utf-8?B?OVRsVnpWVFh3VWhOZzcrVEZrTFFYdUVmd2hlaUZ5SnNqODNPVksrR1lXN1hC?= =?utf-8?B?REQ0RmNnU2ZaSlUrL21JRnJjaEFhMHc0VFpVbTlzQkQ0eXJDdjVjTWx1d054?= =?utf-8?B?TEFwT1VONTVNL29DUVpRVVJua3dvTllBM2QveUZxTEVUVTRSZ3Rab1hLSmFY?= =?utf-8?B?dHpqckJYWlM2bWh1MWhoWHlKc2wxVzhzTThDZ3U1N2pOSGFTMG5qMVRlakRq?= =?utf-8?B?cC8vQjZkVWpOODV0NStJdTJlOFQ3NUdNaUpCYzZIZTJTaGZMSFhJdlp0MHNV?= =?utf-8?B?SjZjOXZvbFk3blMwazhWb00wNS81V202NTVxak91S1ZVMDgwckdBU3F5WTVN?= =?utf-8?B?a0Q1cVdnUUFjYU82cmFJR0VxaGZUSERIU1hwK0ZxcitZTDVzV1lPcVd6cUt1?= =?utf-8?B?MVdrOVFFOGZYZ0dpd2M2VGRwejQ1b2FFWWRNdXE0M2J5b2puemZDOGZYdkF0?= =?utf-8?B?S2Z0ZHNPZHNQaU1ISkZFSElDR0E4R09aTytFNUxLVTVtcVpDWEVXTFo1Yjhi?= =?utf-8?B?QWc3c013VHJxa09wdDRUVDhvayswZkdvWFdsUzFlcU0zTDJpSXR2bURVbG9u?= =?utf-8?B?amdtcGlrT0R6ZUNvYUFFeXhuNEZDTHJ1SHZmZ2lpbkxma2toMkdrV1JKSnJj?= =?utf-8?B?U1lscUVJRFJIUUtLRTZtcUlPa1QxUk1xcTYzZ1JUMGwvTjRNSkphSy9ESXRt?= =?utf-8?B?T2Y5YXFTSi9OTEhCSjJNMzBhZUk1Wm5vSlc0UVlWNHZvQlhLMVVMNm4vdjRh?= =?utf-8?B?SVh1MUswREkyZ0xDd1p5NjJJRTd1OEZ6eVliMEhGcHREc1BpMlplekZodHdv?= =?utf-8?B?THM0ZkpqRGM0Sm1VdzJleXd6Z0VCYXh6VFpzejhyWlFkOFN6d2N2dXQ5dGRR?= =?utf-8?B?REUzcVEzZnIrc3FPaWhFZm5abmtCL3QwVWJkRmJZVHYycjZCMU8yMThVZkIw?= =?utf-8?Q?3wgMGFa6Ih8csl5p4kpVriKqi?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 917a27dc-58ee-43b5-31b0-08db31cf842a X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Mar 2023 10:05:54.9881 (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: TejInS+YL5LHPwRW4lc9CfN4Eln65YScDPa2iycorL+GnlyJXMe6HbVsaWdZb8x7KRLOgYWGlG9gtcIsN7WtGg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR04MB6872 X-Spam-Status: No, score=-3028.1 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 List-Id: This reverts the code change done by 100f993c53a5 ("x86: Check unbalanced braces in memory reference"), which wrongly identified e87fb6a6d0cd ("x86/gas: support quoted address scale factor in AT&T syntax") as the root cause of PR gas/30248. (The testcase is left in place, no matter that it's at best marginally useful in that shape.) The problem instead is that parse_register() alters the string handed to it, thus breaking valid assumptions in subsequent parsing code. Since the function's behavior is a result of get_symbol_name()'s, make a copy of the incoming string before invoking that function. Like for parse_real_register() follow the model of strtol() et al: input string is const-qualified to signal that the string isn't altered, but the returned "end" pointer is not const-qualified, requiring const to be cast away (which generally is a bad idea, but the alternative would again be more convoluted code). --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -159,7 +159,7 @@ static int i386_att_operand (char *); static int i386_intel_operand (char *, int); static int i386_intel_simplify (expressionS *); static int i386_intel_parse_name (const char *, expressionS *); -static const reg_entry *parse_register (char *, char **); +static const reg_entry *parse_register (const char *, char **); static const char *parse_insn (const char *, char *, bool); static char *parse_operands (char *, const char *); static void swap_operands (void); @@ -12497,11 +12497,7 @@ i386_att_operand (char *operand_string) temp_string = base_string; /* Skip past '(' and whitespace. */ - if (*base_string != '(') - { - as_bad (_("unbalanced braces")); - return 0; - } + gas_assert (*base_string == '('); ++base_string; if (is_space_char (*base_string)) ++base_string; @@ -13818,7 +13814,7 @@ parse_real_register (const char *reg_str /* REG_STRING starts *before* REGISTER_PREFIX. */ static const reg_entry * -parse_register (char *reg_string, char **end_op) +parse_register (const char *reg_string, char **end_op) { const reg_entry *r; @@ -13829,12 +13825,12 @@ parse_register (char *reg_string, char * if (!r) { char *save = input_line_pointer; - char c; + char *buf = xstrdup (reg_string), *name; symbolS *symbolP; - input_line_pointer = reg_string; - c = get_symbol_name (®_string); - symbolP = symbol_find (reg_string); + input_line_pointer = buf; + get_symbol_name (&name); + symbolP = symbol_find (name); while (symbolP && S_GET_SEGMENT (symbolP) != reg_section) { const expressionS *e = symbol_get_value_expression(symbolP); @@ -13852,7 +13848,7 @@ parse_register (char *reg_string, char * know (e->X_add_number >= 0 && (valueT) e->X_add_number < i386_regtab_size); r = i386_regtab + e->X_add_number; - *end_op = input_line_pointer; + *end_op = (char *) reg_string + (input_line_pointer - buf); } if (r && !check_register (r)) { @@ -13861,8 +13857,8 @@ parse_register (char *reg_string, char * r = &bad_reg; } } - *input_line_pointer = c; input_line_pointer = save; + free (buf); } return r; }