From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2082.outbound.protection.outlook.com [40.107.20.82]) by sourceware.org (Postfix) with ESMTPS id 60F093858D20 for ; Mon, 7 Nov 2022 11:44:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 60F093858D20 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=GTQUyFYU7RVOjgs5fKBXXglwlByl7MaimBu4GaJw8uuMc427EQiVPBrIcJ0Eg21XCCZdE7LTrDrhF03DwUbphvVta5BJPH6TO5KLvao2FLg41ElK1Hyghgbmg39PtY4DwrNLDdcAXXPYSM2kcRFdtpfSkr9GWqDzgWuh5GAVbrCE1rMn3r7tPKwOvXJC/Mn0mjYMUow0xmwmXaAOj5DTqaWoNW9pNpJcJHt9yNnP7SepS06vHcgJvVwh5mUIylSLuDURvUFeCowym5I/4uIAKwETLQinhZB0YOfvbaq9DVxBH6uqfpuKvFEYpFst1GrawDS8UI4+3DP/bQgrsTbMRw== 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=6NUl19TljYoKanLLtQSxf4xggyjSdjCD/wI5FEO5t0o=; b=Eei1+UiIA42nlhUOhbXNw57om6UqTjAnmsu25W9WihZwRQ3DRmQoOAA5JA1WAItz5Ew4ZbD8fcreuGr42qmeF/eHHY5WeHYWkBPNS8Y62zjklFbt38YIWH7hEcZsXnn8AjZp3itnOZzO8rPwoGZiyn5epEUo6eQHAmFB7ZvlfUUvUd/QXKKA6OHA1dJz/aiNMsnvvG5oiMZIx7rK69UjpKaew+hR4eFFkWlWCio6PaK+o8e5PGFTIeXZzhL+YtZy2olpYEmyjLE3RjgGTZKB045XuNgdQfeS6utMz2WcF111DDg1oOlslnlGp8MZfE4e2to1Nu4aoKGKNwpzC3iE/g== 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=6NUl19TljYoKanLLtQSxf4xggyjSdjCD/wI5FEO5t0o=; b=QT+g9gG06GfiVxxIIK5K2C00fTWPmDJv6f5Q1GUBiOTmDrinGfoYEF7QJF0h5TpGv87eJ0Dqxy+flAwGFJYwbv7z2waNhWI9YSOSh+DWLdWCuKJSCdxoYVElVAlWi7gpThwKvVuyOrDxxcyWDiupZFcATQOgP6HyngZ3mSjo8uIl6tmeifXCgxBCb4jdD8XkW6f6IYahCy7Fy7tGJAm13LdGf1UoSONkhVh9JyY6dTfPeObglCdGBn86tJSbMwgdeoCkfeOFlRK9FjU0NH85Ok1l6qgHPidqr0+Tsww4oAG5yTpcgcacP9FYXJxK2LgG0ro58TeJ8mDcPiNUYX+gmA== 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 AS8PR04MB8561.eurprd04.prod.outlook.com (2603:10a6:20b:420::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.20; Mon, 7 Nov 2022 11:44:53 +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.026; Mon, 7 Nov 2022 11:44:53 +0000 Message-ID: <73b15165-8615-282a-560f-30049b1963a1@suse.com> Date: Mon, 7 Nov 2022 12:44:53 +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> From: Jan Beulich In-Reply-To: <781ed098-079c-212e-7e46-a375c27f5486@suse.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: AS9PR06CA0208.eurprd06.prod.outlook.com (2603:10a6:20b:45d::23) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AS8PR04MB8561:EE_ X-MS-Office365-Filtering-Correlation-Id: 663f7b47-2fed-4a44-1230-08dac0b57c1d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Old0oXC/n7NAwTaEATapDDM90ORgOB9zHya2zmrJ05aQ1XUEVhRVl8bRGZQP4EOj/iKUmLcqHwcsXvzuYivTTn116Ptu9FikfX2v0K2AMSKKY15/jaVN3TJ3vuRAXMrAL+df4cwPA0JgQGpUT+uwm8AF8lK6vP9QEqAYmFernXqMDUi6mTEMuzYOwJX1K/TlmWeEx/0aXtj/W2kDqjGawy4r3F6hcj8iwxIwDAjROk9F4CtprzOLYOLD02DbsOQ9NlzX/ZIKtjBWzgf5vyeYdcb6A/+tea+D1DsToO2Os9uJBzLtls+5t4laTMfc8hg14Ztt2uLnMhik9X8hgcqM9nQWNAnjBob0tC1zsm/4kwpNq0DOQUQsXDdAIzwcvfigovFs4TzES/Vq/DfrQMJ2x//ZGRUQ5S2BDMi5idcOR5w6oMJXQCHyzTt5ouuUuumv04DRwsMomDwUkCkKYHE2eXqj/PITeo6evQY/yeOJJSnXc3L37oEN3fWF2Qv9g2jzXzOzNj8azKok8dtZrm2GFoDr5ScZOJl0agtGxozu6hPeECOIoABVRuhK2N7vYSR5gzyTVa1d6/9iGOgU7krxGUYusgRaFntuaJdXrh3tWKiq6q2I4bdUaUdCXRHFArwNNXuTegc2qDQWgN6IUO3Fn3rAMSb3BEVBvL179OfF0RBTVPD3/tt+dg1zXgroMB7Iu8MFcOnEvsgymIQziF/qpQ01x+140HD7CRx095HM45TpXtQ9Ag5keMeSlgKHJpGhhogfc9/rQrkuqO5KvMWElf+X38xEb3QzllsNFFr9JcM= 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)(396003)(39860400002)(136003)(346002)(366004)(376002)(451199015)(36756003)(31686004)(38100700002)(86362001)(31696002)(5660300002)(2906002)(2616005)(6506007)(83380400001)(186003)(53546011)(6512007)(26005)(66946007)(316002)(6916009)(478600001)(8676002)(66556008)(66476007)(4326008)(6486002)(41300700001)(8936002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cWpORXV4cGlOaWNIQlU5NmZOWTlSS292Q2pFRFJ2UEJFY0hnVG1uRkt5Y0Nj?= =?utf-8?B?ajRwa2dtR05BdTNJSkVVQzZmV3kvblIxazBOWTJZdkhGYXQvMWhZWEhaMzJa?= =?utf-8?B?SlF2U2J1bnlaVndWNkhzUXZEQnBVL3prakR0SDBGQmRRMWJHd3ZIUlBSa0o2?= =?utf-8?B?TWJFNTJyNjZ4UnJ4RTQ2QkRuN3ZKVy8vMHdvVklSUmtiNFlYQmI3aDR5dUlI?= =?utf-8?B?WWx2K202T0dKMG02RFpUT0Jic2F4K3dwYVlYUkNLb0RNNmpTSDhEMDRySFRY?= =?utf-8?B?TkNZaU9TWE5hdmcyeDFOSU5sR3pjV2kzQWVTckg5dEhRelBlNEh6UzNCQ0Iv?= =?utf-8?B?VWJFVEhuUjhVOGJEVDJTUUZQbTJ1R3RoaFlBM0crbklTcDZQa1dHNzR5WlNC?= =?utf-8?B?VXVpTTExTndTdzVzQUdjeFpIaG1UTGpNOXhpdXJJODBOQ1YzRFhZTTRhckZW?= =?utf-8?B?RmI5dnpUTlRuVjFNR01JUWtpWDFHWWhFVWFZa3RBeWxBVS9CQ0t6WmpSUFJB?= =?utf-8?B?QkVxTDZDTTIrODF6NnFwSy9kQ0E2NTViSEt4ZDBDdkZtT05tUzZHZDg4Z2Zs?= =?utf-8?B?djIwZVVBSGh1cmJqZ21yK1JBMk4zSzQwUjN5RmUvcU92cW9XTU5OeHcwUkFU?= =?utf-8?B?ZHVOZ1FrT29PZG96WXl0TCs5RTFxQkZsVUhOR0x2N3NZYXJBSWUzR0Y5b3JF?= =?utf-8?B?WERQNXhvUWs1RmgxbW9lYXhjazlHQm9SeWk0UzM0N0oxMGpCUGpvQzlNRVg3?= =?utf-8?B?Zm5jWUxNRklrcXM5YjgrZXI2ZjYyb0lOTlpkU1dIenZ4NDBrZUg0b245V2VG?= =?utf-8?B?VmlNM3EvUnM1TUhMUXFFZ0NQTm5ISzBCT0VjVE1KeHFoWGVzY3JGRGtheDcy?= =?utf-8?B?WkdERVpCZEFZL0VCS2F2cXRxM294ZHFIRXJ3N1FyeHIwVTVLejY4d0FiZ1RS?= =?utf-8?B?c0gvZ1BkOVdjbnMyVTVyaEd0VEJRSVdkTEFyem82N2Q1UzFIdmR0cm9oR0Rk?= =?utf-8?B?YkduNEowc0o5T2w4VHVTSWVNSUN5em9pK0p6NFNkQ0JKa1UyVTMvK2ZtMHRN?= =?utf-8?B?VjBlK1MwcXZUd2VoekEwVzlqbm9oZ3RtZEorVEZqb09zR2NkMlBxNWhUL2kv?= =?utf-8?B?UFFxeHRKYzArWjRjL3AxQUdYa0VMaXYwdUdJcnQ1TFB3R1pVNlk5WGd6dXQv?= =?utf-8?B?TlRkVWdpWDZmOHRZWkRiN0RWNC8yT1k1WXE4M1pVSXdINkwzY1pPUURIR1Y4?= =?utf-8?B?UTQ5OUFVZlpFeGlaT0VpSk92M1ZWeGVxbzBUMnZwZExYSGk1SURiVTFINnFu?= =?utf-8?B?RUY0MWpRVTR3UlIvaEFEYkUwUEZuUFZSM0dLZVNQQjlTdzR0YkpVSVJqU2RQ?= =?utf-8?B?RlBqUFpTdmtrYlhNbDJ6NDNzOG9GYzIvWnhQMFF5bHcwUnRSQm9XM1ZseWI1?= =?utf-8?B?NXVGRS9OZGt3MThPVzFsQ24rTW9hM1VkaUI4Mk1zTGdKdlVYeStvQzg4RUZ6?= =?utf-8?B?TDMwVThLT1B3SkdXcnBCbzJKR3A0UGtLdCs3QnpaYjZxR2VZOXJsQXJhWVVO?= =?utf-8?B?Ty9QNDV4YThuWVNhWElvRjk0aEl1ZFRDNkxOSktIdERqM1M0eHNaSVg1cFo3?= =?utf-8?B?OFdFQndSVG5mclBKMGVzVldSUUZyNEJOQzlqcGVRTGwxbUtwMWMzbTBzQzZm?= =?utf-8?B?Z1FuVko3My9qQVE1aVZ0K01UQ0JUQXllVE9JOGZIZUFMN3VkWG5xUEI4SHUy?= =?utf-8?B?TzUzRmVzOXdhcDltWmVLZHd6OE9KekQvVVl5RUNXZTR6SmhnMUxSMUhWMnla?= =?utf-8?B?K1M4U01udkY3b045TG83bkh2djgxK2FDaWREZmlWRjV2NWdabVM3dWE4eGow?= =?utf-8?B?STJwMHNyMnNYK1lqdVhNUy8xWlpvZHRCTVM2QVdCQXV4TVkxNml4ZHFvb2Nw?= =?utf-8?B?QnJSa3l1WjNweHNxVUhwN1JqN1VsUHBLL1g1ZGtoTDlDaWZBeUU4M1FPOWhK?= =?utf-8?B?OS9JQXFrVDJjUTZxTElOT01MY3hTR3prM0tad2dxZ1pldmN1ald6b2I2enJn?= =?utf-8?B?YUh5elRObkcvQWZSNFp0UkZSMDcxZy9NdVZvUURyV1gyRHdKVk1WeUZYTXpD?= =?utf-8?Q?6sxTL9yjxRKPWbKd9Xgec1RG3?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 663f7b47-2fed-4a44-1230-08dac0b57c1d X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2022 11:44:53.1646 (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: J4bKuaXHTNmFzabRgDv6j5lNDKdQ98kwHVTWlLqTwt2JynaVfFT/O+EjDp7KO5kpDXloKdIDjOKPQ2BvOtmO8g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8561 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 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 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 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 operand: The lack thereof was responsible for SEGV when (%dx) was (wrongly) used with certain insns. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -11884,7 +11884,9 @@ i386_att_operand (char *operand_string) } /* Special case for (%dx) while doing input/output op. */ - if (i.base_reg + if ((current_templates->start->base_opcode | 0x8a) == 0xee + && current_templates->start->opcode_modifier.opcodespace == SPACE_BASE + && i.base_reg && i.base_reg->reg_type.bitfield.instance == RegD && i.base_reg->reg_type.bitfield.word && i.index_reg == 0 @@ -11893,6 +11895,8 @@ i386_att_operand (char *operand_string) && !operand_type_check (i.types[this_operand], disp)) { i.types[this_operand] = i.base_reg->reg_type; + i.op[this_operand].regs = i.base_reg; + i.reg_operands++; return 1; }