From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20050.outbound.protection.outlook.com [40.107.2.50]) by sourceware.org (Postfix) with ESMTPS id D6AB938582A6 for ; Tue, 8 Nov 2022 07:34:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D6AB938582A6 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=nNxarl7EW0LLCYLs4TYyHcOIQIqTQmRHcXyGNwVr2qcZ8iFdhPK9x8XM/c+Hm6ecHZLO6H6CMAoco3OFM+XE2/+9LDZH/lPdNl1UYp1Mk1CvKI/iDMvMEWfqOwn50JgWwhed5aZ3vcXy1RFepyTe6JIn6dn2v4SbwY+eDUhB32RYLhfpQcTwJSjNuGUyBdjiNChB09TsO0i1VZQXIx8SKpZQIHtj+2SIb4B8VMg6fcEZ+nr6afbPec+2ci69tSQeQXsUfXHl5i6Cb+GB1+dREmvNUE08x63cWzFdnQouk0EaY72l+e0t3VvzkXGhBzRpHQBJ2JhNETxfcqKRVUewnQ== 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=oFmxvPb0wBTJbBwjGp+g5mtLW9rwZ4qcoj1j88P9EbY=; b=GHjILJNu7kmlnRejT3q/27lDZaR7bRIg+PtO4dZ+XaUsc93oMRjUmAkw6zcLIqdi9E0j74t7+iBK+6ZHDRSltnrl7bgNnzikFL/2EG1lb7bjUj1DbUK35Nkyn8TlmkIfw6s981ATMOgKso9TYUs3oSgpyoK/RmEkdrF7lxmJdVOXopy/aO6KPWKVYbAqi4IYb3VWxRylNx9AAQkoOHoj1PrvW5vBSaMx4nRl3ChPekKAgfbxKwd91LXXaEiKgbeTiAKXcyAkvkhmLnWhufHkR7Kt7R3DWbz854o8CYIiaf5CF1Py+aDdTuMZ0oH80JFEToFOfFYZhWJ7gN1RB64Q0A== 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=oFmxvPb0wBTJbBwjGp+g5mtLW9rwZ4qcoj1j88P9EbY=; b=vkotUAw9HF3sT4LQFopopjgcOPqNjrZh5vEKtJdXVJjxA5hh/Hap1QWBqANqxL7dxJmPG1kTuHZTe4BvZ4PTGiiqVdf1NIOmRGNXxkGwzaz3/FbDLhxJlZ7e0f4QdQE8GlLVVyCZK+sjBledkbCpYAYbenebSoeDm1MO04z3XYcBKiSg3GmgtYQnwCAuMv3Uw1RDIIJVVWCabLx2GjJ1h90V2Gv/dLsDdGqJObKatZXIEUAdooUft2ibc/BI2J8Fhg/9aWIe5xOPX4m6gzhOmFP+QVeDD/ijXfPUfcbvuIU8Tm+XBC6TF2D7iNkN3Ar2d41ooPkM77Q0om2ULABADg== 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 AM9PR04MB8762.eurprd04.prod.outlook.com (2603:10a6:20b:409::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.20; Tue, 8 Nov 2022 07:34:24 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::4da2:ea8b:e71e:b8d8]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::4da2:ea8b:e71e:b8d8%4]) with mapi id 15.20.5791.027; Tue, 8 Nov 2022 07:34:23 +0000 Message-ID: <6c7794ee-49fa-68d0-e659-435512da64fe@suse.com> Date: Tue, 8 Nov 2022 08:34:22 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.4.1 Subject: Re: [PATCH] i386: Check invalid (%dx) usage Content-Language: en-US To: "H.J. Lu" Cc: binutils@sourceware.org References: <20221104205547.3728827-1-hjl.tools@gmail.com> <781ed098-079c-212e-7e46-a375c27f5486@suse.com> <73b15165-8615-282a-560f-30049b1963a1@suse.com> From: Jan Beulich In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR3P281CA0149.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:95::20) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AM9PR04MB8762:EE_ X-MS-Office365-Filtering-Correlation-Id: 6599d816-3117-42ef-1a92-08dac15ba843 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: eNx2uLAUh2I9VuWRbXlhEjzVxYKMaW60hU5Hj/d3YTELNRyUkhzdGt7ei3MfFN/8Q7t3UAHZIs2e2pT4GWflQkyvx0I4rjfSJymd5Va6RrufK96UogRoHaA1sdRU+T8KjYSm87YD+rIpUA07yM5N4e1+Jrs4CNTvEKgXXrnfz/wqQ4bG9xcUs4MDWdiETRrXGap5psML867bZZbiVfN3t4mq0KLkw92Q4Mf10cuLbjzTpY7fot5tbpJnmI36jvnrqC4FIKNh/oGj/ZweZ15AD8Vx/r9tASIMp1lcouJ1kQ9uuoYUzSP6sMhrbE4vmpSNsUQAT35fNie8UWNxpfCfbD3TR0vxzyaYWHT9WpeGM9uZcd1Pqwo84dfIrlYiy/spoRhj+Wvs+Tzgy0NfjdVGT1KQ57tpbyrHnlPWs8T6XTN2b9QrN1dHeLvLtie7WamYdHaykTiXlnVUjA9p6m5BqR/k2nE673+0GBfacJsQQb+cMk3Kgb8L39DH8iFNgfha0NUkr1mAILqNxd+l++nUsIl9zc0ueosTCL6EAlH2ievwhi2MFTxFXnycfBM94pF/3rHMu/evwXIgebJZ0rOvQLVdhX+NjWEY0yr81R2VGWIRMkY+j8Th5iXXdh6mN8cCmK6U8WT+BdgzefjsAWh9PayO03ydYWpF7QjEH31S+iMrODHrwZOtAawA5YdV/xf+UuCObLJ7VkwHAAm+pLDD+m+7Gg6BHxDsPGX5d2wYczC7AQ/gTijL7mTamLVgySLrtC8nkdV8SILg9hkmb+gnGRCvwu/YZ9NA2eZoGfkS4sM= 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)(366004)(39860400002)(396003)(136003)(346002)(376002)(451199015)(38100700002)(2906002)(36756003)(86362001)(31696002)(6512007)(478600001)(41300700001)(26005)(316002)(66556008)(66476007)(6916009)(4326008)(53546011)(6506007)(6486002)(83380400001)(66946007)(8936002)(186003)(2616005)(8676002)(5660300002)(31686004)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WVFxN1o1eHY1SjVhdnhPd2Npd2Y2QVhkSndRd1k4K0NVSmtTL0txNG9NaG1n?= =?utf-8?B?WnpvR2s3bndaOE9GL1BWcHVkY3UybSt5Sk9lbEpXMVJxZi9oblo4dC9rbHZp?= =?utf-8?B?QjVEQkxYdk9UREFhais4bHVGMnI5UWEzbnlXMjMvcFVsTmNPQTF0UWVCM2Q3?= =?utf-8?B?TTU4LytOMmM3YmxXQzJCbGxPTjlLMGRPNWFmVGx0allUL3VDTnArb3JqTHVx?= =?utf-8?B?TlJWTlhDMDEvZmdPR0xyclp0eXNNOURTVFVPcmpkNlBwOGNqUWtzWTcyTjRJ?= =?utf-8?B?TzhNYTl4RjBhUldtSEdDdGZreVdPMFVpdnFQTmI3SWI3by9XV240OC9oRjVY?= =?utf-8?B?d1MxQ0VxRU5uVEZyZHUvWTF5QkRUSDJ0NS9tUmlBQ3JNd2I1bFpCbWJCOEpa?= =?utf-8?B?cGE2OS9hems0dlAvNzFZOUZ5NkU3UXcwa1FwaXp4dW5qMVprdnVGK01MakJR?= =?utf-8?B?b0lJOFlFRUVFaFpNQXNXRnppTTc4ektXcDhhZS9YNWtqK004aXNLakRKU2N1?= =?utf-8?B?WStldmFsZE1VaDczSERxQzBDaFVxWmtpbk9hZ1M0RXprTFpYMHYxVzljbmUy?= =?utf-8?B?L2xySlNnZmU2L3RnRWZ0UExyZmJDYnhRWGxQUkRtT0JjRzZ6VFpBdCtidVli?= =?utf-8?B?aitSZThYMkZLQkIrUU5Gc09UWTZuOWpnc0tMV2lSSW1GelJjeVJESGtOMEhY?= =?utf-8?B?aDBNemtFejNhMUhiTFMyenUxdW1WY0ZoTEdKaEpRaVM0c3hEN0ZBaFV0RjdW?= =?utf-8?B?OWl3VUp4YmZCajZIK0NKNURRQkUvSnQrcWNkVWR2bHVhL2JFREx4VTVEL2Qr?= =?utf-8?B?OFdtZWkycUl4NlBYU0htcEFwQjlLc2ZHQUFPdDlZaDR6MXM0K3ZyazZzY0NC?= =?utf-8?B?eWV4dzh2cWVtY1ljWnJjc1hKN0RzUDQ1dkQxbHFvZU1Xc1dxVEtVTGxhUGZL?= =?utf-8?B?Ny9aZjVKWkpmcjBpbG1YMVRrbm4weXE1eU4vNVE4NWNER3A0MlZFbVVvd3R3?= =?utf-8?B?WkxaVCtkYnQ0Yk5rK1JQZHhkZ2pXd1VzUkF5QldwVlBJSkZCY2ZhRU8rS3dr?= =?utf-8?B?TWYrMlNwdjBEcGZWT1I0Q1ZONVFZeVRhMklTTHBPOXFqOWUyMThhbHlDSHpt?= =?utf-8?B?QUczWUJ1WUxmSUpxSUQwMU9UbWZoVmhuM0tCOXhPcWZWaGxtVXdHQ1dXTWNL?= =?utf-8?B?anZaUE9kMytYOWdtb3greXlidjc3YVMvcHdMNkRZNTY2c25VemRQeXA4blgw?= =?utf-8?B?SjZJcTViMm5RaEpTalNVR0FoZU9LenV2NGtIM0QzWWNxd3JtQzVuSmU5Q3I2?= =?utf-8?B?UVhON29EWmxLY3ZRMjJubkRSZjNscXNIc3JDMVdZb05VQXpvWWdqZys3dGxM?= =?utf-8?B?SkFNVk9QMTQ0My9XeUJsdmZPUmRmS2oxZTdLRmhSYWZKNDh5THRIdXYvdVFk?= =?utf-8?B?ME9uV2ZNemdIeFF2STZtMENYWXRFc2dmMWtROVBiZTBHM0h4TVp2bC9HMlhy?= =?utf-8?B?SUUxcGd6bFlQQjVJcFRqeGtrcXdoV2JUcWM2eVpzS201bFNmcTE0dmRxTm1D?= =?utf-8?B?ZXh3dEhWa3lSL0lGd25hOXNjWXdteGxadnZKTWdBV1hJR3hnUDRhd3QwUGQr?= =?utf-8?B?d3BQc0g1czZoVEgza0FqZ1RPcDhkRTdHc0dNL1FIWFdVZ0wxUTlhYVhmODdv?= =?utf-8?B?TXlyOHFXVXdnRDBwSnZUZnB4TGRYSGxDT2t5K0hHbktEVzYvZzZ6LzJYSkhV?= =?utf-8?B?OTBTRW1FNjh0eDhBc1QwczNSTnZiN0JsZHhpU1FKZlNVcStleU9Vc29nbTBZ?= =?utf-8?B?Ukp1Y1JhSEJ2eHFWUE4zbnRacnRqOGdwZndYNkdmZEZEZk93V1ZPU09xUWdH?= =?utf-8?B?T3ZxdmtIQWN5RDZYN2RYeDU4aXhXcmlzV21OT2piekFSUWRLVWVNTHB4cFI4?= =?utf-8?B?MmVHWWZhM3locWRHVWxJSzZRL3o3dENNRm0wVFA5RXB6Z3hFVCtUN0p6Z1ht?= =?utf-8?B?dFZLVnBaQk1CL3FKM3RPTnYvb2dnZ0Q0UEptZWdDZUc3S2JwWnNNSk5ZMHZY?= =?utf-8?B?T0FjN2lLckRGR1B2K0lHWjFhZjkzS0kyT2tEZFVrb0h4U2d0dXUxMWhqd21o?= =?utf-8?Q?/u6HO3XYUjD8qT1jmOzH4WIPo?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6599d816-3117-42ef-1a92-08dac15ba843 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Nov 2022 07:34:23.7219 (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: mmj0DClwCaGb5gPRi5PM/lpLq8WoAaR53AH0d3OP6L25JydXa1DE3SNDzLHERug8+vAlu+fxdfFjVdPUlOuhqQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8762 X-Spam-Status: No, score=-3029.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,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: On 07.11.2022 20:58, H.J. Lu wrote: > On Mon, Nov 7, 2022 at 3:44 AM Jan Beulich wrote: >> >> On 07.11.2022 10:55, Jan Beulich via Binutils wrote: >>> On 04.11.2022 21:55, H.J. Lu via Binutils wrote: >>>> (%dx) isn't a valid memory address in any modes. It is used as a special >>>> memory operand for input/output port address in AT&T syntax and should >>>> only be used with input/output instructions. Update i386_att_operand to >>>> set i.input_output_operand to true for (%dx) and issue an error if (%dx) >>>> is used with non-input/output instructions. >>> >>> Hmm, this shouldn't require a new flag I would hope. We did properly reject >>> bad uses up to 2.31 ("operand type mismatch"). Whatever was broken there >>> would need correcting instead, imo. A possible candidate looks to be >>> 2fb5be8dac9d ("x86: drop {,reg16_}inoutportreg variables"), albeit perhaps >>> combined with later changes - in 2.33 behavior changed again. >> >> What about the change below, perhaps combined with your testsuite adjustments >> (albeit I'd like to point out that "incl" isn't the best choice, as %dx is > > Since incl is misassembled, it is a good test. Well, perhaps both incl and incw then? >> invalid with that anyway; "incw" would be better)? That way we'll uniformly >> get "`(%dx)' is not a valid base/index expression" for bad uses of (%dx), >> matching any other uses of wrong addressing forms. >> >> Jan >> >> x86: restrict use of (%dx) >> >> PR gas/29751 >> The AT&T mode special case operand (%dx) is valid to use only with >> instructions nominally expecting %dx to specify an I/O port address. >> Prefix the respective checking with an opcode check. Keep that as >> simple as possible by recognizing that opcodes 0x64 and 0x66 (which > > Since current_templates doesn't point to the matched instruction, > checking current_templates looks like abuse. I don't think error > messages should be a concern here. We use current_templates in similar ways in quite a number of places, when match_templates() hasn't run yet. >> wrongly also match the check) encode prefixes, which hence - even if >> used standalone - don't take any operands, so match_template() will >> fail there for other reasons. >> >> While there also complete the transformation from memory to register > > I prefer to keep it ASIS since the lack of the transformation helped > catch this error. Interesting view. I think with just this code added you'd still see mis-assembly; you merely wouldn't see ... >> operand: The lack thereof was responsible for SEGV when (%dx) was >> (wrongly) used with certain insns. ... SEGV anymore. Jan