From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on2064.outbound.protection.outlook.com [40.107.241.64]) by sourceware.org (Postfix) with ESMTPS id 6FB5A38582A1 for ; Wed, 30 Nov 2022 08:55:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6FB5A38582A1 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=MQlgeexHi1Mbp0Ndi1Rs9LIq1/n+2JcRzxz0BFbjdfl4N6lS1NFWwm4scIg3xUZh3rfD6EWXatEDWkWs9Ujwyw7fISP8wfdltgCl/5Kai0RGbrgGDqOd47HVCfPnWVzy9r1lZorCyvfQWNvGdlgp4llNuOE0cI7+dsDTRTopmxY2S7jLYKjyhRsLhUzuSIK9Jxc74gNCyEe4n6sy7T7gT5KMYJGaeRv8XPlVANX2iemG2YHXNGHCWbco+LHSfyiD86G1E0eD9IHtddIAosgunmYclkCkRUP8aZAGGzd8ZUnQPY2QakKFFFSI1XV92De0ysvItgnIt2wTk6wdNvE8Tg== 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=13gVBqRpWwsYopFLLhC7WbtCA8qAbO6lbW3/3XlvxhM=; b=jUbpRqgZEiyCZl7lh9Wukt9fKd9SuYiUG8R6CA+bgRpNP1eS0T6FJWekwKGuuYAuhiRh6Tu8+VyaQ0Qfal+l7TFDiJ1LurosJB491IQCuhlEMomhtEYnfoRY91k74hsE2bVBfshll6YVqYPckTH1OkldGpvUKPKXYOc7tg5EsXJhbLLnzaMyL08+YC90rH2qyl80O8Q+1xQNC42NC/L3tn4tuURAjCG2hdjsJ2a9WU/JNQN/Fu7KhQZoDaCQcuH8D+BTl3OzF+rV4Ph/RQPeBnsyhAbr/v7vfJ4KRO1qKCQxNRPE42HWgLQo3jXumL+VZDAGwkd18NJkvVegPMaGyQ== 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=13gVBqRpWwsYopFLLhC7WbtCA8qAbO6lbW3/3XlvxhM=; b=akhDUgAH3Qz7Yp9aud/2FwhCQKg60JSYhnN6IawR91LeIcwJcVvhZ4OaMdFoOU95bKHLvpWH9gIDXb30YYi0B6faWaQeS8WsYbGtDyEQBWOw9zEjEI47MR7Uvo+R1K6NJaJ78XZaY/NiYzC453glkQWrJ1DRnIiQFMbQAlsj5QzTmpX0Q1MBT8Bvzz9KXmOKgEkjgOLposazIjgaaKU1fsbQuwDjHxYBZHqXxYjxsyr87nmsRcvCAOTXS245YPcDK43tAwjgh8Dejh53qHCpUczudSjcnjGhA5PHsrTXDIjUlVRG1Ai5r3EBzI4qamBp7NQGRwZ9qjbOPpCNy9PSMg== 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 PAXPR04MB8943.eurprd04.prod.outlook.com (2603:10a6:102:20e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.17; Wed, 30 Nov 2022 08:55:12 +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.5857.023; Wed, 30 Nov 2022 08:55:12 +0000 Message-ID: <934cece1-77ed-b4ee-a61d-451d71680a9e@suse.com> Date: Wed, 30 Nov 2022 09:55:11 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Subject: [PATCH 2/4] x86/Intel: drop LONG_DOUBLE_MNEM_SUFFIX 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: FR3P281CA0001.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1d::10) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|PAXPR04MB8943:EE_ X-MS-Office365-Filtering-Correlation-Id: 8b4dfd6e-35e9-4e6c-af0f-08dad2b09774 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iRIgZPwvF+FeE2Cc1Ttpf0vOvGTEQtG+/BMHQPAZBs4zq0yZBCJMvMGSo6+H8qc9lO/EJbqs3bz3aao+ILFGmEqVx8CVf3PGQcdhYAuhrHlxz0LWSDGiQsiTlCO59zTWk0WSLNb2Sqx/Mng1rRF3dnuCklUzyT6rNnVINp7Ql3c6fqSnTIbROPFk7IWahPtLmF2DAbqjB4ZytkEOhB+nBcq+0YewqgzJDSmzakgUAD3wDnD5S4GPGp/37cwjGdkFMQm/tqflZKANTdiMwD1DoulhTCByVWzXOzHxpigkp2dxjhYkl8FJSBd44YRX7C9oWqZ0JgJq/ico5tsK1oOlIAIBcFPV9pvyi/c4DkBf98iVPx3/2xFHySZxmHzQA8gLJkPUcIu08j6vwYvM3h/TsHSqNh2VISGD5MdzxmBO9DfbjeXL8L2Rl486bQRCikchkrhHtevBuZY/b7tDMdiz6FlJYuI3G52Et5XMgp8YOYhAalWnp+YuxRYsqZrU/7dziuSTV8ApmtyJ1ltEKuexl8SUntdDOchHQAZy5AuvLxu9r3J7LDdWxF9NcCvN10Thu8/dkZBDwbVldUSQUAZGuhPu+YsSC2LS297vo4QtIHLDXiEQPHoYDzPO9vbJhajXS7/YGXV3MdsP11b1dDeh4D+htjDTFDij4zYA7jZwcFwYbsVzxRHGE2bZljStMGKLC6HF69z6EhI3/oYOPFFX2iTfc10W+IDJEcWID8eRXZ8= 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)(346002)(136003)(376002)(396003)(451199015)(316002)(6506007)(6486002)(86362001)(31696002)(478600001)(31686004)(83380400001)(2616005)(26005)(6512007)(6916009)(41300700001)(5660300002)(2906002)(8936002)(38100700002)(186003)(36756003)(4326008)(8676002)(66476007)(66946007)(66556008)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dHF1cXJBNTBZdjN4SHFPeTl6V1kwSEFJdE4zQ3dhN1hicjFXdTFiOHpUREx0?= =?utf-8?B?QmVVbGo0NEEySUZFVkl0RzFELytDOHhsV1kvd2dLU2JvMXlDMGtjZmIxLzNQ?= =?utf-8?B?MWVzcDluaUJWVmYvMG52azl5Y3VOdmhiL3lRS0M5S3Npd2xiZFdoM2dDdHNm?= =?utf-8?B?ZGhtZGsxTVN0TzVGNHh5ZmNFbUorUTNKQ2wvbGxWL210YmZRaEl6NkdmOUxN?= =?utf-8?B?ZUdsVFFReWNydkxidjVvTEdDMEpRY29ZcG9TRHpxY2ZmZkJkZGd4dHdESW9K?= =?utf-8?B?SjIyeW4wMzVFVEEzTmQybkVMRHdyVmFQWjBndnluNnVnZXVNODZST016bk1o?= =?utf-8?B?Y3grWVZ1N0FNQWFXNTYxOXVtV3VzSVRjd0c3TWIyZDdldk5ZeHQ4cnBWQ29q?= =?utf-8?B?M0FEYmtpOFdSYWFLZTBQVGowNWE4cHZZTzNLNWdWeWJ6cW5ZbGwwZ2o3OEx5?= =?utf-8?B?a1ZJREdVU253cHRZblptZCtTVVdSY1NYVFZVTGV2cXdoWGpLZmtvUVBRV2NG?= =?utf-8?B?YUtqTXdGa1pmOEx3NUpHcnl2aVBDbzhsREtsRVRmcjJ2RkF0STNhYjZSU2R3?= =?utf-8?B?WDE3QU9pV0czN0lKOENmZnJ3V1d6TkEzSnR3TXZVbmtBMUdQNjRCb244eEVH?= =?utf-8?B?UzFpRnh0T0o2dXQyS2w5VmIvOGRNOGtaamJjalpTTHoya09KajVUVFVYL2Vo?= =?utf-8?B?MWVpcGlOZUhJSU9wV09Mem9zRS83R1ovT2NlQ2FNejdsOEVyT2J6dkIxbWE1?= =?utf-8?B?SWlzYlcyeXlROGZGV2dKT0FkeElIYVBxcjAyYVJkMitMRlNUT1YwRGltQXZw?= =?utf-8?B?eTFxc0FXaGMxNlVpT0hUUWlmV1Q2M2R0YXFMbU9BbS9jYk9EV09BNUpTZ1J5?= =?utf-8?B?M0EzQmtYRjZvTnBQTzFySXdyNmMycXRNcGZOUTNKOTRKeUZManpkUzJxaUJU?= =?utf-8?B?aDJmMDFuVWZ6T1p3c0F2SWdMNFBFQmF3ZHl1ejNoTEh6NUhjalE5OXlsbkZS?= =?utf-8?B?anlDY3E4UDRyS2VzWDR5OThRV1V0NzV0YzhjZnNkUFZTNm8vWTBhaE5DdnZB?= =?utf-8?B?d25sNW1Gelp2V1h0RSs3Q2FiN1E2TlRERFB3dnNRSG9NRjJNN2xyU2pGUW1a?= =?utf-8?B?cCtGR0w2QUhxUEpTbUY3dkxnVkFoelNVS1pOaXNydit2Qk4wL0Fia1B0T2Ex?= =?utf-8?B?Z3p0U0FjTEluYXFJOXc0OG1mKzhkK0puYUUvTUZ6ZURlN0NZa2NHMThWbm1j?= =?utf-8?B?bVBzQjN5STlXeVFZOThuYlpyblZxb3ExRmQ0eForV2cvbVdESU5vK1lzends?= =?utf-8?B?dERoNm01d09tYmFrRmhQOW5taWhhaC9VZzhSN0l5UXVJVTlNcitEMFBYbWhm?= =?utf-8?B?WTgrMng0ZERKbEtTb1Zvc29lU3UrZkh5ZFd6VElmQUJURFlVUnJ0SGhHbW9W?= =?utf-8?B?UkZyem5sTFhuRG1MSHdpRk1hOWR2NzIxWTQxbitXNitLK0tJT2FsbFVWTlQ2?= =?utf-8?B?VmNIU0NlanBialNiNUJPN1V4VExObS81WHBpUk5MRDlDamZ5dmljLzJBMEtv?= =?utf-8?B?QWV3ZjBSSTBjM29DSUx4dE5zd2wvZ1hWZFoyczRLdkRCbzVHM3FHOE5mc0w3?= =?utf-8?B?NllKRmhYYVpGMVpTeTI1NnYzSm1kUm1zeHdaWUQ5S1ZNUGVVTmhIV3hYMmJn?= =?utf-8?B?akN5QnAwQW5nb3RMdStLMklMd0kzd3dORDFBZDlrWmlQdHY3a1ZHU2c1VG9H?= =?utf-8?B?Szhhby8rU1NDMlVvcXJJL0c3V2dBTEdVTUZYM2M5c0tCZHN0N2lqRjlRdkdv?= =?utf-8?B?UkV0eEFKVWJOVmhyNVhwVExXQjE1SUZZK2FZK1gzNThRbG5yRnlOeGhFTElp?= =?utf-8?B?VnZLdkU2RUZZRVQrNVpKWG1HVm01UExxKzV2aFZrMmtWN2hjaW1yMGdqVGto?= =?utf-8?B?RHNGb1k1cFR6Z21nWnRBWTR2a0pDRk0xMnhSOHZYT3BNbU9mSmtQNHhIb3hB?= =?utf-8?B?ZjZlKzBXUDBLdmFQUVVDRHZ6VlowM1ZnZUxiczJReFNlMHhUNjRrSUFJOCtp?= =?utf-8?B?R2JjcXdFZGN1d0NrYk54Q1hSaktEenU0c3VFcVhMUkdMM0ppcDVsYUZYQzZ0?= =?utf-8?Q?HGhLCKQEo+veBaIfWPdWCTUYc?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8b4dfd6e-35e9-4e6c-af0f-08dad2b09774 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2022 08:55:12.4523 (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: M0AFPNLeNTsMhfiQuHdOl6wffua7TttVO+hhpWZKV+W+eLIpDgBvCeeSpU/WCvZJHc/vUNaGTUhshQLaO15cIA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8943 X-Spam-Status: No, score=-3029.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: With the removal of its use for FPU insns the suffix is now finally properly misnamed. Drop its use altogether, replacing it by a separate boolean instead. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -80,9 +80,6 @@ #define SHORT_MNEM_SUFFIX 's' #define LONG_MNEM_SUFFIX 'l' #define QWORD_MNEM_SUFFIX 'q' -/* Intel Syntax. Use a non-ascii letter since since it never appears - in instructions. */ -#define LONG_DOUBLE_MNEM_SUFFIX '\1' #define END_OF_INSN '\0' @@ -313,6 +310,9 @@ struct _i386_insn /* The operand to a branch insn indicates an absolute branch. */ bool jumpabsolute; + /* The operand to a branch insn indicates a far branch. */ + bool far_branch; + /* There is a memory operand of (%dx) which should be only used with input/output instructions. */ bool input_output_operand; @@ -6494,14 +6494,6 @@ match_template (char mnem_suffix) case QWORD_MNEM_SUFFIX: suffix_check.no_qsuf = 1; break; - default: - /* NB: In Intel syntax, normally we can check for memory operand - size when there is no mnemonic suffix. But jmp and call have - 2 different encodings with Dword memory operand size, one with - No_ldSuf and the other without. i.suffix is set to - LONG_DOUBLE_MNEM_SUFFIX to skip the one with No_ldSuf. */ - if (i.suffix == LONG_DOUBLE_MNEM_SUFFIX) - suffix_check.no_ldsuf = 1; } for (t = current_templates->start; t < current_templates->end; t++) @@ -6555,8 +6547,7 @@ match_template (char mnem_suffix) || (t->opcode_modifier.no_wsuf && suffix_check.no_wsuf) || (t->opcode_modifier.no_lsuf && suffix_check.no_lsuf) || (t->opcode_modifier.no_ssuf && suffix_check.no_ssuf) - || (t->opcode_modifier.no_qsuf && suffix_check.no_qsuf) - || (t->opcode_modifier.no_ldsuf && suffix_check.no_ldsuf)) + || (t->opcode_modifier.no_qsuf && suffix_check.no_qsuf)) continue; specific_error = progress (operand_size_mismatch); @@ -6574,6 +6565,15 @@ match_template (char mnem_suffix) if (i.jumpabsolute && t->opcode_modifier.jump != JUMP_ABSOLUTE) continue; + /* In Intel syntax, normally we can check for memory operand size when + there is no mnemonic suffix. But jmp and call have 2 different + encodings with Dword memory operand size. Skip the "near" one + (permitting a register operand) when "far" was requested. */ + if (i.far_branch + && t->opcode_modifier.jump == JUMP_ABSOLUTE + && t->operand_types[0].bitfield.class == Reg) + continue; + for (j = 0; j < MAX_OPERANDS; j++) operand_types[j] = t->operand_types[j]; --- a/gas/config/tc-i386-intel.c +++ b/gas/config/tc-i386-intel.c @@ -715,8 +715,10 @@ i386_intel_operand (char *operand_string && (current_templates->start->opcode_modifier.jump == JUMP || current_templates->start->opcode_modifier.jump == JUMP_DWORD)) - suffix = flag_code == CODE_16BIT ? LONG_DOUBLE_MNEM_SUFFIX - : WORD_MNEM_SUFFIX; + { + i.far_branch = true; + suffix = WORD_MNEM_SUFFIX; + } else if (got_a_float == 1) /* "f..." */ suffix = SHORT_MNEM_SUFFIX; else @@ -733,7 +735,7 @@ i386_intel_operand (char *operand_string { if (flag_code == CODE_16BIT) add_prefix (DATA_PREFIX_OPCODE); - suffix = LONG_DOUBLE_MNEM_SUFFIX; + i.far_branch = true; } break; @@ -774,7 +776,7 @@ i386_intel_operand (char *operand_string break; case O_far_ptr: - suffix = LONG_DOUBLE_MNEM_SUFFIX; + i.far_branch = true; /* FALLTHROUGH */ case O_near_ptr: if (current_templates->start->opcode_modifier.jump != JUMP @@ -833,10 +835,6 @@ i386_intel_operand (char *operand_string if (t->opcode_modifier.no_ssuf) continue; break; - case LONG_DOUBLE_MNEM_SUFFIX: - if (t->opcode_modifier.no_ldsuf) - continue; - break; default: abort (); } @@ -916,7 +914,11 @@ i386_intel_operand (char *operand_string return 0; } else if (S_GET_SEGMENT (intel_state.seg) == reg_section) - jumpabsolute = true; + { + jumpabsolute = true; + if (intel_state.op_modifier == O_far_ptr) + i.far_branch = true; + } else { i386_operand_type types; @@ -943,8 +945,6 @@ i386_intel_operand (char *operand_string this_operand = i.operands++; i.types[this_operand].bitfield.unspecified = 1; } - if (suffix == LONG_DOUBLE_MNEM_SUFFIX) - i.suffix = 0; intel_state.seg = NULL; intel_state.is_mem = 0; } --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -434,7 +434,7 @@ call, 0xff, 2, Cpu64, Amd64|Modrm|JumpAb call, 0xff, 2, Cpu64, Intel64|Modrm|JumpAbsolute|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf|NoRex64|BNDPrefixOk|NoTrackPrefixOk, { Reg64|Unspecified|BaseIndex } // Intel Syntax remaining call instances. call, 0x9a, None, CpuNo64, JumpInterSegment|DefaultSize|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { Imm16, Imm16|Imm32 } -call, 0xff, 3, 0, Amd64|Modrm|JumpAbsolute|DefaultSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf, { Dword|Fword|BaseIndex } +call, 0xff, 3, 0, Amd64|Modrm|JumpAbsolute|DefaultSize|NoSuf, { Dword|Fword|BaseIndex } call, 0xff, 3, Cpu64, Intel64|Modrm|JumpAbsolute|NoSuf, { Dword|Fword|Tbyte|BaseIndex } lcall, 0x9a, None, CpuNo64, JumpInterSegment|DefaultSize|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { Imm16, Imm16|Imm32 } lcall, 0xff, 3, 0, Amd64|Modrm|JumpAbsolute|DefaultSize|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { Unspecified|BaseIndex } @@ -447,7 +447,7 @@ jmp, 0xff, 4, Cpu64, Amd64|Modrm|JumpAbs jmp, 0xff, 4, Cpu64, Intel64|Modrm|JumpAbsolute|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf|NoRex64|BNDPrefixOk|NoTrackPrefixOk, { Reg64|Unspecified|BaseIndex } // Intel Syntax remaining jmp instances. jmp, 0xea, None, CpuNo64, JumpInterSegment|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { Imm16, Imm16|Imm32 } -jmp, 0xff, 5, 0, Amd64|Modrm|JumpAbsolute|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf, { Dword|Fword|BaseIndex } +jmp, 0xff, 5, 0, Amd64|Modrm|JumpAbsolute|NoSuf, { Dword|Fword|BaseIndex } jmp, 0xff, 5, Cpu64, Intel64|Modrm|JumpAbsolute|NoSuf, { Dword|Fword|Tbyte|BaseIndex } ljmp, 0xea, None, CpuNo64, JumpInterSegment|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { Imm16, Imm16|Imm32 } ljmp, 0xff, 5, 0, Amd64|Modrm|JumpAbsolute|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { Unspecified|BaseIndex }