From patchwork Fri Mar 3 12:57:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 63889 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp392288wrd; Fri, 3 Mar 2023 04:57:52 -0800 (PST) X-Google-Smtp-Source: AK7set8N/z9xAXgu8B60ZXPXsibJDLJ4rYhO41sD113Jj07nf9td0XOW6sYTXTyGm4mRF3D38Q8s X-Received: by 2002:aa7:d404:0:b0:4aa:ca81:a528 with SMTP id z4-20020aa7d404000000b004aaca81a528mr1622277edq.40.1677848272685; Fri, 03 Mar 2023 04:57:52 -0800 (PST) Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id sa25-20020a1709076d1900b008c5b7ddf5fcsi2651878ejc.346.2023.03.03.04.57.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Mar 2023 04:57:52 -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=PuLsnNPm; 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 AE7A838582AB for ; Fri, 3 Mar 2023 12:57:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AE7A838582AB DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1677848270; bh=7uENGYSx8rU/QpaYGwvLRIWbo6auat+wq1cF85QAN5k=; h=Date:Subject:To:Cc:References:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=PuLsnNPmF91s7uMxdB5nmtC49hpkcqFoVeOPlzjGpPChsQb1qulVBI7onYOCkJaDQ jsAUZDyQ7DBJ8KXgf8NxQZoFGfphnghZKzFBwERo1SC3oqbZZF6vj9DFPIehRAZf4n b+9mLW+22U04UYCdvV4xvhxx8WDTOuIfhb9LcCpg= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2040.outbound.protection.outlook.com [40.107.22.40]) by sourceware.org (Postfix) with ESMTPS id 93EDC38582BC for ; Fri, 3 Mar 2023 12:57:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 93EDC38582BC ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kNVFoOXqe/hOmIb+ThNwn6JFvW7phRCyWTOSQUQ+GoogRbeSh3MCJ+dasrYpEsvF28EXFClkErf0AoRnpk5Z2bDiaF8XUWHKmRrd2y4ccg1CTpNRz1z8Qld+reor5Sd+k5YY463574f1g9C5reRaDo5+dCsDdtLgFiVvBLWVlmTWDJN62cFQphUun/i8rNjnU7cIMqqt2/902gO9z/NdyXb1iI7cgFYZL7NN+wryO8NZ51BQTG6brjSSSo7Ing7JF4DjrM74HLehQZ499oD6WcG7f5gDVWu8FZpkMO6lcuacmx6N08Q2S1uwktdr9gur/lzTV7qEUO/lZVtV3fEe6g== 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=7uENGYSx8rU/QpaYGwvLRIWbo6auat+wq1cF85QAN5k=; b=gNFaFT1AsQ2LMZL4gVWkd3Qgvorqpt8dbKdm0eBtPXDl2iV4N2yxLy6Y+DArZ8hmxuWOLJfkEsw78CLpZvBLZFhjFP5YJbRX7AP3aCVfIt2xHuIDdvG4IUb5VXTI/Vhjqc7W7LR/cBypk5+11y7GTInKRrhlbI8cDyIVXrZ2vVtkIYR4tdFBjkS9NDF6on7DnGvxnFfLg/oTf6VG5u9Cm1Un+Mx6P44Em7khoWwBRZRuOPiRCETL1sjEcFgcYehZ7Vfhg0FAy5ayfveQrGV0O0VkxxgN+Zwf992R9GoSGmWGV8U2LEROG13ylyNydyUHML/W93xdPJ1J6mV4S33/Gg== 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 PA4PR04MB7725.eurprd04.prod.outlook.com (2603:10a6:102:f1::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.18; Fri, 3 Mar 2023 12:57:41 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::154e:166d:ec25:531b]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::154e:166d:ec25:531b%7]) with mapi id 15.20.6156.019; Fri, 3 Mar 2023 12:57:41 +0000 Message-ID: <242fa8c9-44f3-43e8-fbbd-4248a6abec18@suse.com> Date: Fri, 3 Mar 2023 13:57:39 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: [PATCH 03/18] x86: parse special opcode modifiers for .insn Content-Language: en-US To: Binutils Cc: "H.J. Lu" , "Jiang, Haochen" References: <764b9e03-18bd-6945-692f-a250522196ca@suse.com> In-Reply-To: <764b9e03-18bd-6945-692f-a250522196ca@suse.com> 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_|PA4PR04MB7725:EE_ X-MS-Office365-Filtering-Correlation-Id: ea1d8ba6-370f-476a-0c0d-08db1be6dfb1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2SyZ4tiDwdPxfSp/B5G91jinsUTZ4rxcqFnTtd75ZlGjusATADiwiQ4qa2bLflsQwSKyz6jZJhktnjRyG24MfsEqZnmXOIsZjSDHm7xp2AOkv2jCAWoUug4eoZyOCuWNMg1U/To38pY0ObO5SA1vCWDvlh40S1S0MBJYPlstxgJwtlJ2M6Pd2QZORZSRuiJSz5nnXQKVLCSEYHd4Q7oMcmveiiyGV2ElxmWpOqpLcYOj3xsdaTg4jQlooRV0IbWvdYa1RPyuGYsAqKRkoH70eGd4YK1wjJnZoq/Df/LIXTzU962hLOIdk2eHhcp5GH5E+t0TcXUWuw5Yd43bQ70a/zoKq4LXmis6+cUhRyACzWouSNRQmfUS9QBSZChTAG28czJJ1c1Rkg6iodxl3oOANwoz1GMXC1FP3PNQ2+WQi8u1SgQMJxSChyjS6Ska3Q1iL0333yWka28a/zd20TTueuVWrB6wBWmBm2qiI61ua2OHNoAlcDBfPeuWGkGlJxhfi5NR3WY00MM4n+ZSDqPTayHLTbDoIVnKoE26wrtkfTxNQSmyAH97gu/vY17vExTvefbJ39jgp0LKLip/SoRzCrhU88BSJRaISn9Al6y9IAudWfgOsrjuG6dGFMic7KgJhBxBPFh0rpEO1WxVp1vovIJZsgZjxcmCAO2nNtlOG7AZGUaik7jJujl9XnT2oxQkrQjW6/phmiIntVJriaeTY3ugNV7IfJs3CexfPdU9KmVbkurnN0sht5OYB5ZJbrfkdavS0h0G6oVuvlAdJhagaQ== 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)(376002)(39860400002)(346002)(396003)(136003)(366004)(451199018)(31686004)(66946007)(86362001)(31696002)(66476007)(66556008)(8936002)(6916009)(5660300002)(8676002)(2906002)(41300700001)(4326008)(38100700002)(36756003)(54906003)(6486002)(316002)(478600001)(83380400001)(6512007)(6506007)(26005)(2616005)(186003)(142923001)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?y3w7fDPjSeHtCurX2RS86XZ3278+?= =?utf-8?q?uZIvQqq097g6LtHlAWpY0KNlgRkkqv1JAO2NltOBVkVV987WOhEdfNTKEw7g23AmF?= =?utf-8?q?iZgFq2sVbDYoarV30h2YsBtjrWCvTLLJtd5qMRUYwYOSTvBnaf+pCDtme8024a1r9?= =?utf-8?q?zVaGWiFW/jv/DtmX8Vi3z5YeXjmpfcJnC7RB7xnEfK9P+VeFr2jm25jMKtgsRk7e1?= =?utf-8?q?2pGaMolv9QC8nEfcyv9fNJqSnOypzzhlAReKCzB+EWR0aNnC5ZHHtxtV8+jK4DhFe?= =?utf-8?q?DEQmBhsOsXJUUmHZe5QS85QKJq0yVKQ7AM9VkYse2CAWevP8lj1u4YNg75LM81WlM?= =?utf-8?q?eGRW5oiWX0uzzzyltyYkIvWzCm3zlxbmuj8yvlxsVdtfWznZdYkfdyfNe4xFfyjQR?= =?utf-8?q?Sqk6np7kJu5wqFBHPuemdHN89pSrlcaFXPiJuD/nmX1Y4NiVfsMqGs1aGVqFDXwfM?= =?utf-8?q?T7UuVpUE79RrmVRkaNQFia4rQjHqfcLvPKZEXc12E7ZVPFVa+9MUDZwu0mmN1ED31?= =?utf-8?q?9YyQwqeBHIdLnLgNbin9tsJ06HiC8h0rJj/GVqoGpNbwtnP9Xbl7LY3zkFm4HV+gz?= =?utf-8?q?IRmLTpRT54Wj9SI4x+3KcQoTKNTvGr4vWc3XnASaLfBeOmmFr9iN7/R9Pk/ZYldyc?= =?utf-8?q?SD057NEmbUN4vnY54wwuObmXoR4G8B5djsxPgrVFH3Bq0dhBotLwBgM6HifX3cLEF?= =?utf-8?q?jg47Yr8A2WMQ0KI7TyssweLdV8DacXNujFGlh1KD0TZ1Byw8zllFfjzLGgP796X+z?= =?utf-8?q?OfFZVxhbk3dS/EB4ltn0cWhJMRP7OiSkbIN29NR37IZMbGdcLsIqpziGwF02wJD+H?= =?utf-8?q?W8hhhKpp6nmG2ByaTsGQ6TXki+Xxzv7zKwODQGyU8McU99JV3LAOhz9XtP7PQDVcc?= =?utf-8?q?ywqK08CTzZiI09XtwGr8I9h1Jn8cEvG6e7zSK7RDuwusnENTlQ9oy2E2Xqc9AMYLY?= =?utf-8?q?7Zqc2LXIG592J1S/S2QJu68nWVw3q+uJsIrT5hjhk67vRgWUU86MsgUR3K6BJOXXb?= =?utf-8?q?SOsCoeke9aexp8j47x0sYaHAi9IP6SH6XV2NOEhTJJsnjXZ9WddCYrDHj6SSjdXAI?= =?utf-8?q?5TZaD3dS5x4tu8P2I9QWQ5SrRJfyA3qdWNeCX6cX2WEwEWPOlbSulvQqGDW+H+Nxp?= =?utf-8?q?vEwevQK50cxGMJIAVRxZpL7OtOCTHcXbDYI1DN4i6uZNINg8ODOoqgpvI6Ki+4THu?= =?utf-8?q?r2GOlQfyWk2xghKYkFtJO97G6w5lNl46DSobhTrFYFsSdX5aBthfjDCXFWHx+LNY7?= =?utf-8?q?i/SFmiC+quUnd8DSHxKpSaJgjVhqKVBHp7vWKRO23EN1Tjm7M/qREMHoqdypZAemE?= =?utf-8?q?cKaD+py/ipJI7QEu8Xj+6jBbzZNBLA+A9S70AdvxUSwzMEsrx3sv3A2BgTdqRiJYi?= =?utf-8?q?IbT0XS1p0TYkT6FvdtxILZbIoASeCJvRWTjLhkPpnOWUhbfKxh6ANM3aYQzAJnUmW?= =?utf-8?q?S71+aZUvzP4pNbExjuNH28p7ttUGSpxf1ZPGh+aUMKoZ1RuwMSZ/qQNxO7YwXAFi5?= =?utf-8?q?j3GOIQWYGN3U?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: ea1d8ba6-370f-476a-0c0d-08db1be6dfb1 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Mar 2023 12:57:41.4125 (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: 7tySflPeeFygObyPLy/vrXe8mglTaZvHcG4EnSnaqq41DiqyYRKZkPE+w3Xs2Zioz/uvcf3vQ9g9FoMTUO6rkg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7725 X-Spam-Status: No, score=-3028.3 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?1759351430261398371?= X-GMAIL-MSGID: =?utf-8?q?1759351430261398371?= So called "short form" encoding is specified by a trailing "+r", whereas a possible extension opcode is specified by the usual "/". Take these off the expression before handing it to get_absolute_expression(). --- I don't think it makes sense to further complicate things and also consider the use of quotation inside the major opcode expression. Ambiguities in particular with "/" can easily be resolved by simply parenthesizing the actual expression part of the construct. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -10739,7 +10739,7 @@ signed_cons (int size) static void s_insn (int dummy ATTRIBUTE_UNUSED) { - char mnemonic[MAX_MNEM_SIZE], *line = input_line_pointer; + char mnemonic[MAX_MNEM_SIZE], *line = input_line_pointer, *ptr; char *saved_ilp = find_end_of_line (line, false), saved_char; const char *end; unsigned int j; @@ -10765,6 +10765,7 @@ s_insn (int dummy ATTRIBUTE_UNUSED) current_templates = &tt; i.tm.mnem_off = MN__insn; + i.tm.extension_opcode = None; if (startswith (line, "VEX") && (line[3] == '.' || is_space_char (line[3]))) @@ -10991,10 +10992,46 @@ s_insn (int dummy ATTRIBUTE_UNUSED) goto done; } + /* Before processing the opcode expression, find trailing "+r" or + "/" specifiers. */ + for (ptr = line; ; ++ptr) + { + unsigned long n; + char *e; + + ptr = strpbrk (ptr, "+/,"); + if (ptr == NULL || *ptr == ',') + break; + + if (*ptr == '+' && ptr[1] == 'r' + && (ptr[2] == ',' || (is_space_char (ptr[2]) && ptr[3] == ','))) + { + *ptr = ' '; + ptr[1] = ' '; + i.short_form = true; + break; + } + + if (*ptr == '/' && ISDIGIT (ptr[1]) + && (n = strtoul (ptr + 1, &e, 8)) < 8 + && e == ptr + 2 + && (ptr[2] == ',' || (is_space_char (ptr[2]) && ptr[3] == ','))) + { + *ptr = ' '; + ptr[1] = ' '; + i.tm.extension_opcode = n; + i.tm.opcode_modifier.modrm = 1; + break; + } + } + input_line_pointer = line; val = get_absolute_expression (); line = input_line_pointer; + if (i.short_form && (val & 7)) + as_warn ("`+r' assumes low three opcode bits to be clear"); + for (j = 1; j < sizeof(val); ++j) if (!(val >> (j * 8))) break;