From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02on2078.outbound.protection.outlook.com [40.107.249.78]) by sourceware.org (Postfix) with ESMTPS id C860B3858418 for ; Tue, 4 Apr 2023 06:59:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C860B3858418 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=SncJAvHHUPm2t/degIIOjTngZaLqgz5Wu7+B70vvyqROfl4k3iY6b3OxVKAwvv/djVNEsJYBcl29E9bfUTsYuLG2zRsxAPvghaskapH6NHBoou8Cjv3EQ293N8WCuzeiA3lNdXgiomZ7AeFwbDmELn71unNF+94gXXT1NfsfYjQAp94kKTyDSjXTHWk1j7OQKjiuHbL6r6TbdotfYQ+iUiLfvxDbdFOSLUvj2W07gwyux3bygJlQZnhy0qRADPD04V8X7UiI6+CV1CMFSXM7LISPNnVGqcRzMXH2aKmj9TP5ekXncJOaIJy0OWTVfOlOAN6W3ZvId9tX+HIOswSSlA== 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=3/FEpWQoX23HW0mjOBTl1yQ8i10DXSBWgbFoyV08I0I=; b=Iad2rKHLdb5bMT4HeE6VYXJISYlsygyvYB1/5nSE4wgyrSnrkGjkP0vrHfgeLWaRX9JZKG8sjWU2LuQCiS0G3eSNbdFcwjVxHmRgCn/tVs2fuP8/kXNV+btUrSI+FJNNOR93XxIU1dNpf7w8UG1lizds5H1RfQZ/Us2az3iNCDj5UpCPocYVtiuNrcmFIJ+8ugoeC0wRWTRrg+YeLbp+9jx5HBFbWIAEnCM8f+w56RxmwakZuNwkPT7Xs5iB006OgtNUIvfkfbXUedIu7JplIG4edpZMosEtGGCL23kRGtx8EhONsRuotUi8H26k/7S2UwQiMho0g5YyApokBrCNiw== 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=3/FEpWQoX23HW0mjOBTl1yQ8i10DXSBWgbFoyV08I0I=; b=kureSiuyE/4XyAgMRV1sQjwVn/sX2PuSDq3FfX8xfk0bIFD4aN7L12KOw8uRgDFh7NxPWfCkuelSPVU/DFlKVNhiL+GNEdOD0cTXJR7JtdXD/J9fMTwyla0eUdndcvxoYeHeBPFMLiNKlv1Wv/su9qkDPgwgLbqMTi4ve+7NI26v+0k6P5TyDhRdrKXGujaOucKdnWucLF7RsRbkg81riM9dKWozog8ycmbSguwXUA9U0/DToXhmakzx2Sp5zkA2VlOimVRsxPBMwE/Fxsv/6mItQt7tH73WzgiS/6bEJGdN5cAS6RlUQeBfPa1MeuTsvXV7FBbZD3VrPK/24c0A0g== 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 AM8PR04MB7314.eurprd04.prod.outlook.com (2603:10a6:20b:1df::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.35; Tue, 4 Apr 2023 06:59:19 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::154e:166d:ec25:531b]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::154e:166d:ec25:531b%6]) with mapi id 15.20.6254.035; Tue, 4 Apr 2023 06:59:19 +0000 Message-ID: <838292bd-8855-00af-59c8-fcf0acb34d5c@suse.com> Date: Tue, 4 Apr 2023 08:59:17 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 Subject: [PATCH 3/8] x86: change fetch error handling in ckprefix() Content-Language: en-US To: Binutils Cc: "H.J. Lu" , Alan Modra References: <5dac45a8-cd5f-ee4d-52fc-7d283fc29ec4@suse.com> From: Jan Beulich In-Reply-To: <5dac45a8-cd5f-ee4d-52fc-7d283fc29ec4@suse.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR2P281CA0007.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a::17) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AM8PR04MB7314:EE_ X-MS-Office365-Filtering-Correlation-Id: d32b30b1-b33f-48bb-0de8-08db34da1c77 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VDBWqfJeIk8Tq6s+quLbeKW35UeHQ0cRQyjo0LNaNBJoV3lz+VPuzCyS2NUapKmvRiwQ21odqxW6+8A2x0djjvGTe7qjET1p5AoUKaI2sbIZkRb+6qNN4tHH5zHpJq+f9n/F8CpD/2oBgYY4JPDxVggCoN5JZBOUEThzRWvHpvSK00QWDNMqryt/jC0gjHFEvi5J54xZT1/4YZrLIoEloPnIgNhQh6J3HnsfkHAJ5OptI8khVkaofLfqvO+KivPNbiB5SB/R1Jwg7aUIJiR09dv1rNj7znm5J3zgM0fBRrnaWFHdfgLpiol1/Ip0Te8zKuhluc0b5kqs7XYzWM2+0udlMqCjJH+oqMdPGQi1BtoeCMEYvOvAunKjpmC0gYGlvOlY7MgQHmqKSzPgH/7CSZT6OANdUHsI/bVnww6PXuRlk/12IbD0ajoeEvQFEIPFs2fIuQu68YQ/19xDR8YcQ0ShRFV1deCrp/SFoafNYHMqSUuVr6+vECB/8N2gQqBalr74Klkus4g2CRqsPV6GyG4/hsxLQlk+XoU3qYxYAfE6Q8WE98sjUxoSSmuM8HwDJFkydpuGfeySDHDLNNwyP53PisPG0IaMHY67sm1jstjhzgxuyU1lWkjs/JpUB6b6tri9vR1tKDtdD6tmQ433mA== 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:(13230028)(366004)(346002)(376002)(39860400002)(136003)(396003)(451199021)(41300700001)(5660300002)(8676002)(8936002)(38100700002)(6916009)(66556008)(66476007)(66946007)(36756003)(86362001)(31696002)(2906002)(4326008)(2616005)(31686004)(6486002)(186003)(6512007)(26005)(6506007)(54906003)(83380400001)(316002)(478600001)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dnJhd21BUXlsRE4xWlVab0Z1WnBZcnJlaWlabjNNNVE5dXZ5cHh2cW1XMkVx?= =?utf-8?B?eVNPT1V0Y2g1Zmhpay9lSTM4bUdWV1N0Z3VmSHhpeTVjeEJ1QnIrYmFnZTFv?= =?utf-8?B?ZEI5cVhqWXp4UWY3dzlUN2h4akd6cnJ3RlArcWYyR1RsK0lweGlMckZtcUtC?= =?utf-8?B?SGFxR3B1ME5MQUxJWHVMemdibDE3K2sxcE5wWmNDbkM0RmhYZkdNUjZTOFVt?= =?utf-8?B?MFZBRDl0amlCY3lyYUZTT1k5WERFdUM3cWhVN0FQUHpxYzVjMllGbDFzVGpZ?= =?utf-8?B?RktpS3E3MTdUS3B0a09OSmZxam5MUXpqTG9FcHZRZ2cxZjNRQ3lSa2NnZGh1?= =?utf-8?B?cXlHVWtNRDVWL3NZU1crSUhNcm10T1dETmdpbEg0bVhCbkVGalNYdWJpZnJn?= =?utf-8?B?dUxHNm83cDAwV0NvbjdzNVkwSzc3aXk2T3VhbStQZmhQNE1YdEpOWkttdUtV?= =?utf-8?B?MHU5aVV6cDdwK3NxN3V3WGZuaUhId0hZQ3N1TTdqY2pETkp0cWFpdjBDRG5K?= =?utf-8?B?Yml3a1hGMS9sYW85emE3WW5GV0hneDIrRCtSUE5DWjcrOEsvVUUzazVQMzd4?= =?utf-8?B?c0R0TW10WWZoUzVXUzhPUWJud2FzZ0pwbGVXaGdJbXpQZnVoa3ZUTG5IMEZh?= =?utf-8?B?dXU0MFlOTU9UMHpyb1BLZ3MybDBxMk5VRHFjK0x1bEZkdktOMmhjOFRrVm9p?= =?utf-8?B?Q1NYVXJMODJLZDArTktMbVJXMkVZd3ZMN1FKMnR1YmVrN0oyMTRuTmxlbDNT?= =?utf-8?B?cm1sREovZHJsUHlWSnd1d3h2eGRCeHJ2QXpySHhBY2VKdjBDR1ErWStVbFZa?= =?utf-8?B?aUxmWC9hNytRRXdMSlNhbnpXcmRMN1BxTEhPMGRvQmlXT21yMHZpZ3RaejBJ?= =?utf-8?B?YTVjT0gxWWhpNlVROFphdHRpaXhWYjhmZDZ6Y2JKYjhFL2RpSlFlRWtTZEk3?= =?utf-8?B?S1BHdm5LREtYQTYrbTJ2Q2F6Y2VXZFlGdVZSdU1NY29icHl0Mmdia2l2RUIx?= =?utf-8?B?dnFqSmdkbXg0K3Q5V2xMQkdRM0JKVWNnK1BHc2M0QWxrVGNnOTV0NHhsbnY0?= =?utf-8?B?bHcwZXlQVGp1RVNERjFyV0VjZnZnYjBjZ1ZVQVo0S21kWVhkVFRJSlAvNm9G?= =?utf-8?B?eFB0VTk5Z3V3TFFwbDM3ZDlPZG5vdUwrSlRwbHBPTmtUNEd0N1Iyb0lNNjJQ?= =?utf-8?B?aEpSV0xCcDlGSG1TV09lRklMWjQ4MU0xUEthaHZnNHgraHV4ck1xeDY1Rkk5?= =?utf-8?B?WTNxbmRET0hZWG56NTJCVkZHWlNlTkdTUUhMWDhrL0ZkSFlrVkZGVmZjK2lV?= =?utf-8?B?ZWZ1OGxweS9Hc1B5THZhcnUrMnZNWjFqYU9Jc2djTUEzS3hQbVJKSCtwZVhm?= =?utf-8?B?aVRkRmZRUlFLQnBKZDhqb2QwdmRNc25XcEh6emF4YUMwM2NxZmVYQWljaXBl?= =?utf-8?B?UlZ2VU4vZ2RMTG1jUjIrN1NWTW9aMDZ6UXJKMlIzL0ZUMjNOSjBaWTR2ZVJv?= =?utf-8?B?aUpiWXcvbjJKb3pWbDVNd3k2NzhlRHUrNjZnWG82VFNNK3diYUJxKzZZYTI1?= =?utf-8?B?VkNZcU52NUFhRXN0bDZObHRuQzIxWm8yL1VUZTFpTyt1UUgyUWx6ZWFWWk9x?= =?utf-8?B?S3J6ak9lN0kxVEU0YlprOWowcU5CUURaMFdiVExIcFlwQ2RBRDRXMk9idjQv?= =?utf-8?B?NDBYQll5a0xOTVhZSUZhU1F4Y1VXK3ovNFdmVUNaa0kwVEtrdEZ5VmdSU1Bp?= =?utf-8?B?aWNmMWxwc09OMGFIb2Nrd0YvWlBhZE9kOThHZThjdi9JNktGVUhDYmNMSWZT?= =?utf-8?B?OGhmUytJNmlRQ0t0RzArcFVkMU5JOUUwMURvMFFPbW5oaVZFbmhOSmtqSUJW?= =?utf-8?B?OWhJUm1ObU0wa1JTcFUvZFdWcHJIWFpnV3ZZMFVoRnd3Z3NzWEFOTkk0TWQ4?= =?utf-8?B?bGY4WkJEM2lqYjZSOUVsRTBHU0p1NHdYbUduVDVid3VkWWx4djNjYldmR1Mx?= =?utf-8?B?NTAvbnl3c1RqL3ptQlF2Y0VtT3UwUy9DWDZ3cm1xU2trbXI5SnB5SFg5Mnhl?= =?utf-8?B?R2cvT1FyakJqNU5RTnlKRzRQN3NpUWNhWjkyL0sxVUZnTmlwQkFsTDFlaEp6?= =?utf-8?Q?uCkU7EWZsXoUxv8bOkn6tXSr6?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: d32b30b1-b33f-48bb-0de8-08db34da1c77 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Apr 2023 06:59:18.9559 (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: Pj8H7CDpnDc6gYXxSyvdqLAmx5KtS7N2TayOhVN+asAI+OlXdcmQh19HSEf7o/Sisf6yaULGQdOIrr7YJdd5YQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR04MB7314 X-Spam-Status: No, score=-3028.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 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: Use a tristate (enum) return value type to be able to express all three cases which are of interest to the (sole) caller. This also allows doing away with the abuse of "rex_used". --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -8921,7 +8921,11 @@ static const struct dis386 rm_table[][8] #define BND_PREFIX 0x04 #define NOTRACK_PREFIX 0x05 -static int +static enum { + ckp_okay, + ckp_bogus, + ckp_fetch_error, +} ckprefix (instr_info *ins) { int newrex, i, length; @@ -8931,7 +8935,8 @@ ckprefix (instr_info *ins) /* The maximum instruction length is 15bytes. */ while (length < MAX_CODE_LENGTH - 1) { - FETCH_DATA (ins->info, ins->codep + 1); + if (!fetch_code (ins->info, ins->codep + 1)) + return ckp_fetch_error; newrex = 0; switch (*ins->codep) { @@ -8955,7 +8960,7 @@ ckprefix (instr_info *ins) if (ins->address_mode == mode_64bit) newrex = *ins->codep; else - return 1; + return ckp_okay; ins->last_rex_prefix = i; break; case 0xf3: @@ -9023,27 +9028,23 @@ ckprefix (instr_info *ins) ins->codep++; /* This ensures that the previous REX prefixes are noticed as unused prefixes, as in the return case below. */ - ins->rex_used = ins->rex; - return 1; + return ins->rex ? ckp_bogus : ckp_okay; } ins->prefixes = PREFIX_FWAIT; break; default: - return 1; + return ckp_okay; } /* Rex is ignored when followed by another prefix. */ if (ins->rex) - { - ins->rex_used = ins->rex; - return 1; - } + return ckp_bogus; if (*ins->codep != FWAIT_OPCODE) ins->all_prefixes[i++] = *ins->codep; ins->rex = newrex; ins->codep++; length++; } - return 0; + return ckp_bogus; } /* Return the name of the prefix byte PREF, or NULL if PREF is not a @@ -9886,8 +9887,12 @@ print_insn (bfd_vma pc, disassemble_info sizeflag = priv.orig_sizeflag; - if (!ckprefix (&ins) || ins.rex_used) + switch (ckprefix (&ins)) { + case ckp_okay: + break; + + case ckp_bogus: /* Too many prefixes or unused REX prefixes. */ for (i = 0; i < (int) ARRAY_SIZE (ins.all_prefixes) && ins.all_prefixes[i]; @@ -9896,6 +9901,9 @@ print_insn (bfd_vma pc, disassemble_info (i == 0 ? "" : " "), prefix_name (&ins, ins.all_prefixes[i], sizeflag)); return i; + + case ckp_fetch_error: + return fetch_error (&ins); } ins.insn_codep = ins.codep;