From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2050.outbound.protection.outlook.com [40.107.22.50]) by sourceware.org (Postfix) with ESMTPS id 95A323858D28 for ; Tue, 13 Sep 2022 16:03:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 95A323858D28 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=UxgM6NECx/9p++p+4vAvlxhaCkOwYR97SA7VtnbB+//M34pursyZwW0LWZlwir2R5EJymKEj+PPKjVgswNQAau1UyC1aAKkFnrDBkWzU3hoMSaxRXCXf1qKNSfpGozPpXbAI39HOYEABMGatu3eH0ObHgYFqUHLTI42fqcyI5AlCjN35WUFLocQfD2tVigbMZgXia/LzHOz1BoR8306Qhp9TW1bwLtStj8fcyY5j3G3EilLvNbx3hIT4WSJnNhYS6neVl9NgvK22Yvt3r1JQh+wNCEaoomXjtq/iq7aYZ21nrhFBP10lJanW9/vlqufNjDrfrHlkDXIK/2VjigOxYg== 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=0QSQDgF2DA8Elo88TuHr7OKcdkOXOba2vdCHyPj6ZsI=; b=aSYiydk3KlZo36n/PoHuPVB91q2q0UO/4/y4hmOQ5kKGw5wzow1K1ufC4CXjW5fbB8aIY3yroWsxp/qkepKLCAO2ic7Zj4Z6iuW5L15iudtymLKBMByPm84P5tPNeb0wPPDK+mPmTQTC2ULFu+gOR4R/l+DBps8boMVpSD0GFVGvSBQuUfY3F1Y4fM+X5onohs5Qq2IGdKt9IeN2vYywNsCCP6ul1ew6UNrfysE3RWMEaM3YNiNpHWgYPyYYpwIT8znNamrutIf1T8DcFcjUmsT62SM1yUdfJfqlOG0aE/JQTCwoRXEjtHFTmk6PLEXyw+S1wmc2X/2LbcJMyzfrww== 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=0QSQDgF2DA8Elo88TuHr7OKcdkOXOba2vdCHyPj6ZsI=; b=tLjKGxV4wXGk9wLY2WFBRakn/N63U43W+Auob/VBLOoXnp18Maiju3SW+9Q6oSgBKicG36NiBHFKkBSMwtsYoZIOLayp6vzelNLtqk8r4KTP2e7Uy2wyL4mAO8q3W0GSDeUony8nM1v2jPtKv+Vu55mywSPYKNx2pH9WsYBy6jwITNZQxBAXCATg9SCz9l+7NwFowSdpdGP9m18TTSfo4REuNFCjkGh2dlmNk2wBDVTINqwP4CPL5YAzO25sAnwWwUs58m9LbYfrsWCs12AbeFq7ogB/zW1nYft561CZDSwaB4R4fYX3QJ5RfXzNrZiD12wSJfvG7xjLjK3QzucRIA== 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 AS8PR04MB8833.eurprd04.prod.outlook.com (2603:10a6:20b:42c::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Tue, 13 Sep 2022 16:03:13 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::59bc:901a:98a7:76d4]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::59bc:901a:98a7:76d4%5]) with mapi id 15.20.5612.022; Tue, 13 Sep 2022 16:03:13 +0000 Message-ID: <224f7123-1ed8-2a6c-12c5-70e2a2dab18f@suse.com> Date: Tue, 13 Sep 2022 18:03:11 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 Content-Language: en-US To: Binutils Cc: "H.J. Lu" From: Jan Beulich Subject: [PATCH] x86/gas: support quoted address scale factor in AT&T syntax Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR3P281CA0092.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a1::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_|AS8PR04MB8833:EE_ X-MS-Office365-Filtering-Correlation-Id: fc9a4dcc-7402-4cba-0064-08da95a17622 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: eIubkw7/a/Xr0rZ77POMh+cPqjIlJdkoBAT7gicjlR+DdAU6gBXbTmZRt6QSnslQjo1Kps3In9V0fXszx7AaqegOjnIo5oPFyrt7ETR116lelgyR4c0pYduhnGqBPSgD3S+i7knA7mDNnjadImKUaqF8IYSKOlL7Qa3dW91LI6lDvAKvEFgTCpxtGhN5cbHtSkBLP1VNr0kFGnl9AgxxOX5gH0Kj39uJDB6Htqz5KCwdzXHKC5D4cLtQRCZZZpSnHGKZRe9DEMpsgJu+4nMbPSIuolbYvwHTDH4gm221t/w1VxgiB8FmM+l1A7sra/sDiu6xGt5xsXm04dy0YidBmLQ0O5s+qWUxpTfaNMG67C2CDdwjx5ZUHBFgFKs0v2Ie6GbzI4uo5R1r3c6sh06zMtXkPV/GFDcOt+f2V8i161R+u/pDK31o17SDLZ0fqLjPXNNyM/1rN1T8MTkHgeTqdcxMQKExhTvSmcmqhihvTAnia1IDl56FFQbaT6Vh0MjZ4eqEtgl8LnoDp/KIRe6+NheZ92jNco2tgaJrwnqMD5FA/kNuaH9TuAYHNvRoXmEZB+8SRjP+0ICTEK5NvTF5VMdqdUHpPRqbbxph090vZfBIzhD9PpMQfBuB7VcfQPCBZRDj47Pm4Pp9+gngS9BJmvi8m2ml2c68V0GraG89cER8Zn0JOxooHgp6V1dDbzUKuwHPCP7CLJx/QVQi7yLfVYk8wcal0iXPCoPiAMk7GRdqQ/1Te5qGbZ+fj84rtQC324cyJjOs2lz06dPCH0V3JgQpwwPaVlb+tYmrhzhJAeY= 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)(376002)(366004)(39860400002)(136003)(346002)(396003)(451199015)(86362001)(4326008)(2616005)(6512007)(8676002)(26005)(66556008)(38100700002)(478600001)(6506007)(2906002)(6486002)(41300700001)(5660300002)(316002)(6916009)(66946007)(31686004)(36756003)(66476007)(8936002)(31696002)(186003)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WWVNRzhlSno5WXlrZXlreDM4dk44YW5yMm5LSGFYQ2N6WWhJYzEwNmFtQi95?= =?utf-8?B?b3hweURFQkZXWWlBeUlqZFpCK2V3WnAraDZmSThZWjBsa1R0UFBpMUVka1Ri?= =?utf-8?B?d0p3L2VPb2lpQ29aZ2kzWmFNZFVTUXdMRHIrREgvVXlYYWY0dVg5Z29sWEhT?= =?utf-8?B?SFpwdTB2Ty9SNDdKOVFtbDlaUWdlRmhlOTh6VkJpbDhaMWhmZFkySCtSbzNm?= =?utf-8?B?SXpIdTRiV05SREQzT3hzWURtVVYxNnpNc0tiWUtSNHZlNFVqREh2R0J0VXVX?= =?utf-8?B?UGhTaVl2TWZxcjhQYWpOTk82WHBJTllJOUFtdUEzYU5WTWxtcXMrU25PbjAv?= =?utf-8?B?OFMzRVVnTitzL1h4QWZ1L2dYMTFXSHVwNlZVMzBaclE1TW1CY3g5MStGQmFY?= =?utf-8?B?Y1R0U0IwZkQ2WmVaL3huRTFiZXNNSTAxNS9melBnbjhuRHB3UW9xS1F2TU1E?= =?utf-8?B?RldoSC9OWVluYWVkaFBIcGFJLzBDZnRKMTZCSlFQUEJCbjRuek0rTVA4Z3Nq?= =?utf-8?B?aWxUS0ZsYTV5Uk0xQlFhMndlSWN5WWJLdEQyMkhaMjVlc0tBVXBYTlVMWmtB?= =?utf-8?B?VjA2LzdHeXZZNFlCWXFvMjNESDRaZzVIeTk5bTFrNitEeFpQWE5OOUtUd2gz?= =?utf-8?B?UWlPTXBVOGhNT2QwNmF4T3phZjRId28va1BUbUtaZ1NxMU1CM29GcjdtUlJ5?= =?utf-8?B?Tk1LWFZFSlMwS3BnRG0yTWZDUUZLWm5teDl0T0JxWjByblV6K0lPRTl4M0ZG?= =?utf-8?B?ZFdFTlNjRWpHZEY2eklUUFRCRlVJUGtTV3gxckVqenRoWVZYNGxvbW9aUVdZ?= =?utf-8?B?L21VbGdJMkphSzJCamluWDZPZzFpWCs0R1hBdk5IdFV1M3Y1NHhpanpzSkds?= =?utf-8?B?QWM2aG85WjhGOUZ1NTF5T256Qm9OOXpoWE5tQjhwazVFRzc1RSs1MFdtblE4?= =?utf-8?B?NjdldmFwQVFFU3UwM3lsaDMrQlRBV2dFSzRhQWZUNDVrSDFzOFU4YWZ5NndU?= =?utf-8?B?N3hMYUcraXJFM0tDU0JnOElpMmtGUlNUc000VEd0b3VoQjBISXpPTGNsbEh0?= =?utf-8?B?RDIwUkFWWDdwY3lhN1ROMjB1dmdhYWpzRHpjSWtyemU0RlVhdXY0ekprWG00?= =?utf-8?B?S0dSYnkxdmxQQ2ZxeXBGYWd2SE8yU2ptZzErMFo4ZnNmUHJ4Y242SEdROVlq?= =?utf-8?B?M1BiaFNGTE41S21yWlpWREI0ZzV6bFpqR2FuTnVHRURxMjhnQnRoWEJWNlA4?= =?utf-8?B?SVFlNVVXTXR1bTFZVGZFUXdFWTBvVFBqNU1sWE5GRW5SQzl2WjZ1eGRQV2M3?= =?utf-8?B?cGRoVnNieXg4RzJBVTJNQll6WVM5WEFPNjloRUUzRTRSNjlzNzFqbmlIeDVr?= =?utf-8?B?Wnlta1pSdVhCZHA1emVxTEhmOElmajBZUlBlL2kzWDFMUHdISHZDRm52S1V6?= =?utf-8?B?VXNjc29RM2tqd3E5QTA2N0s1bnlPU1hBZFlOTlB5dUFsVzUxMXVva0sxY1Fk?= =?utf-8?B?N3dxaVJDUlppSXQ1bnVNa0k5VElEcWFyRGZmTkd0NFVxajV5U3YxaXhBZmpL?= =?utf-8?B?Ky9ydXRTeVVyK3RWU1RpSDU4djlwK0ovRHdMVG1HVU16aUVYYzZ1aU5PWUFq?= =?utf-8?B?U25NQlpKUDg1VHdPc0lmd3ZuczVBVDNMdTVGYkJyRjc0Q05hUFZCekEwMHN2?= =?utf-8?B?WEdHSisyVEwwekFzUTl1TjRqMGZLd0ZuaDl3Um9hUFEvdXRoUDBmRDBFc1gz?= =?utf-8?B?Mm9LSWhxbFYyZTdQTURzUGdQWU92MHNKQ1BZNEFNWW9OR3JrVU5haTkySmZw?= =?utf-8?B?TGMvV2pIZ0RkS2lxL0Q0ZzFOWnpuSTdHS2pLS0QwVVBVUDR3MDYrcjNVSk9y?= =?utf-8?B?M2tLbmgxa0hWMVFwYzJURTFyWVRpTmxCWDR3Rkt4M2d2T1RZYlZRMGRFUzQ1?= =?utf-8?B?bFRnVjZvZE5hT2ZXTnJFSllWNnFQU29GSHF3VURaekdIL2R5WXRnUThXUDFP?= =?utf-8?B?M2FoZEl3NEdMVmtUcUdaTGNTOTV5RGxISDRTYVMwY1djRVlGZGs5RnFRMkdQ?= =?utf-8?B?U2d6SjVOSDZ5Qkpyd291cTMxcnlYbHRHRE1rUFduNGQ2bXJjL3FjSzBCeldS?= =?utf-8?Q?WD0+/YYha3aB3/Wl2d7SofTET?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: fc9a4dcc-7402-4cba-0064-08da95a17622 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2022 16:03:13.1340 (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: wh/8Epb7HqXgLPEdA2Hyw6wt1QeJxKwljYFsRqI6X0tNi7hbjOUIjn43aAa3LjOtj/AIw3zloPlDmNMgdMYRwQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8833 X-Spam-Status: No, score=-3030.0 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: An earlier attempt (e68c3d59acd0 ["x86: better respect quotes in parse_operands()"]) needed undoing (cc0f96357e0b ["x86: permit parenthesized expressions again as addressing scale factor"]) as far its effect here went. As indicated back then, the issue is the backwards scanning of the operand string to find the matching opening parenthesis. Switch to forward scanning, finding the last outermost unquoted opening parenthesis (which is the one matching the trailing closing one). --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -11620,25 +11620,32 @@ i386_att_operand (char *operand_string) if (*base_string == ')') { char *temp_string; - unsigned int parens_not_balanced = 1; + unsigned int parens_not_balanced = 0; + bool in_quotes = false; /* We've already checked that the number of left & right ()'s are - equal, so this loop will not be infinite. */ - do + equal, and that there's a matching set of double quotes. */ + end_op = base_string; + for (temp_string = op_string; temp_string < end_op; temp_string++) { - base_string--; - if (*base_string == ')') - parens_not_balanced++; - if (*base_string == '(') - parens_not_balanced--; + if (*temp_string == '\\' && temp_string[1] == '"') + ++temp_string; + else if (*temp_string == '"') + in_quotes = !in_quotes; + else if (!in_quotes) + { + if (*temp_string == '(' && !parens_not_balanced++) + base_string = temp_string; + if (*temp_string == ')') + --parens_not_balanced; + } } - while (parens_not_balanced && *base_string != '"'); temp_string = base_string; /* Skip past '(' and whitespace. */ - if (*base_string == '(') - ++base_string; + gas_assert (*base_string == '('); + ++base_string; if (is_space_char (*base_string)) ++base_string; --- a/gas/testsuite/gas/i386/sib-intel.d +++ b/gas/testsuite/gas/i386/sib-intel.d @@ -34,6 +34,10 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 8b 04 40 mov eax,DWORD PTR \[eax\+eax\*2\] [ ]*[a-f0-9]+: 8b 04 80 mov eax,DWORD PTR \[eax\+eax\*4\] [ ]*[a-f0-9]+: 8b 04 c0 mov eax,DWORD PTR \[eax\+eax\*8\] +[ ]*[a-f0-9]+: 8b 14 08 mov edx,DWORD PTR \[eax\+ecx\*1\] +[ ]*[a-f0-9]+: 8b 14 48 mov edx,DWORD PTR \[eax\+ecx\*2\] +[ ]*[a-f0-9]+: 8b 14 88 mov edx,DWORD PTR \[eax\+ecx\*4\] +[ ]*[a-f0-9]+: 8b 14 c8 mov edx,DWORD PTR \[eax\+ecx\*8\] [ ]*[a-f0-9]+: 8b 04 25 e2 ff ff ff mov eax,DWORD PTR \[eiz\*1-0x1e\] [ ]*[a-f0-9]+: 8b 04 65 e2 ff ff ff mov eax,DWORD PTR \[eiz\*2-0x1e\] [ ]*[a-f0-9]+: 8b 04 a5 e2 ff ff ff mov eax,DWORD PTR \[eiz\*4-0x1e\] --- a/gas/testsuite/gas/i386/sib.d +++ b/gas/testsuite/gas/i386/sib.d @@ -33,6 +33,10 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 8b 04 40 mov \(%eax,%eax,2\),%eax [ ]*[a-f0-9]+: 8b 04 80 mov \(%eax,%eax,4\),%eax [ ]*[a-f0-9]+: 8b 04 c0 mov \(%eax,%eax,8\),%eax +[ ]*[a-f0-9]+: 8b 14 08 mov \(%eax,%ecx,1\),%edx +[ ]*[a-f0-9]+: 8b 14 48 mov \(%eax,%ecx,2\),%edx +[ ]*[a-f0-9]+: 8b 14 88 mov \(%eax,%ecx,4\),%edx +[ ]*[a-f0-9]+: 8b 14 c8 mov \(%eax,%ecx,8\),%edx [ ]*[a-f0-9]+: 8b 04 25 e2 ff ff ff mov -0x1e\(,%eiz,1\),%eax [ ]*[a-f0-9]+: 8b 04 65 e2 ff ff ff mov -0x1e\(,%eiz,2\),%eax [ ]*[a-f0-9]+: 8b 04 a5 e2 ff ff ff mov -0x1e\(,%eiz,4\),%eax --- a/gas/testsuite/gas/i386/sib.s +++ b/gas/testsuite/gas/i386/sib.s @@ -30,6 +30,14 @@ foo: mov (%eax, %eax, (1 << 1)), %eax mov (%eax, %eax, (1 << 2)), %eax mov (%eax, %eax, (1 << 3)), %eax + .equ "scale(1)", 1 + mov (%eax, %ecx, "scale(1)"), %edx + .equiv "scale[2]", 2 + mov (%eax, %ecx, "scale[2]"), %edx + .eqv "scale{4}", 4 + mov (%eax, %ecx, "scale{4}"), %edx + .set "scale<8>", 8 + mov (%eax, %ecx, "scale<8>"), %edx .intel_syntax noprefix mov eax,DWORD PTR [eiz*1-30] mov eax,DWORD PTR [eiz*2-30]