From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2042.outbound.protection.outlook.com [40.107.104.42]) by sourceware.org (Postfix) with ESMTPS id D5998385697F for ; Fri, 19 May 2023 14:07:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D5998385697F 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=FSBw0+CfAz/qiQ7JRm4zvmZY2IxT5zgJ19htWsc5fTW5ASaU3KQae5FKNr8sSqGjD01WIDtR5tBRudWlpc6bT/O1Kb3sGrCm0EHslGAS5TDv8LiDtJlwR/86Uf9B+g/jujd3gVO+zIAs8/NuW8Q49C0LwW1q9spo+aF010BW1PAZPnzFkH55YXiyQFWbGbtlnYPlh+g5w/FrOqtv8j+mWdOvx4gOXhAWqQDhyxQto6f3x/yujpwpmtI6rnNT415SCR4wrHoai1h2B+9cDQDrh30uWm6MhDorSwVKWIt+qNTce0jTK1VparFOkPoK41guRh5Jm5t9ZuAXLqJcdlg0Bw== 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=BVlWfTSVghCO6SY4CRrlaFWuNw0jYDYL8FB/pIkk94s=; b=NmcGoKoEka+gxPitu45ejCwe1DQY4fvl0kZBmCLANcnMabjeL1z+QAxv1dPqAzEVmDwo73f0V5jNch14EBmmpvrZ0sSAT18cC1FsoELTkoMWHIl2pt0DgtiGIFVDv2b4vUoTGeDk6qP7kdWFMHUGmilATxWSVhlKfx2u56Hl9Mj/mTaxW465LNn4Yw5MnWWU1j8K3iYkwvGpmJWC/AshtvG+P+9ClUe+9mswrWJGdfZVKywy+BCq2L4st+8dN8AQwfmyyjp6u64UHJr+I7oX+xjNx0OSlrWShW7ttTuEyt3lViFLbGKnXt7ClLM7jilx7Wb1qRU9C28xp2BWeCiZng== 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=BVlWfTSVghCO6SY4CRrlaFWuNw0jYDYL8FB/pIkk94s=; b=U/rEVeRZle8A7Oo6H8g/c4WtcUTj3TynHjhWfsPGKnZKGaAn/9+VfAkrnC0GvdkIormvixUGPQX2pNyXZ7umROBUhADUgZ3oXk57s5+LSMYoh9yGatN5wH+SmGY3MJXy0+lD5muhYo3LxutGe6LOe74/fYxdmRg13K6hqLyTgWYsT1YCAC01lKaNf8X3VzxuZvmWLwijKSbwe9f/xV8Ry3H+l+XktdzpP5qyxD/3pAiIYoLZwAsHWCal3JlLJtGdxYuiUfYPtvIeyaIe9kmHThV/mJ8+IwMJHAiWvv2iPiHHC2kw4IgpSCqt95LCa8yWcBYpmLhPzKRrZWLqfWVImA== 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 AM7PR04MB6823.eurprd04.prod.outlook.com (2603:10a6:20b:102::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.21; Fri, 19 May 2023 14:07:28 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e442:306f:7711:e24c]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e442:306f:7711:e24c%5]) with mapi id 15.20.6411.021; Fri, 19 May 2023 14:07:27 +0000 Message-ID: <51d38635-479f-831f-e678-3da1a1c9acae@suse.com> Date: Fri, 19 May 2023 16:07:25 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.10.1 Subject: [PATCH 3/3] x86: convert two pointers to (indexing) integers 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: FR3P281CA0096.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a1::8) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AM7PR04MB6823:EE_ X-MS-Office365-Filtering-Correlation-Id: 61a16751-3e92-4fde-2e3d-08db587260a6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: eYFNlaNeNrGqkkGCh5NvB8A2q6TR7/uX3en2Imxw/jnaC3v7iaNRQdhkbGS0c4JU8FBcXIfRm5L/dA3V+6Esz7xY66QpyF2qgicvToRXfytFdA+VTMx0G/WoQQx+kCZMpRYo5wm+q6dzu9Mf27AhsLt0Zzn+7MZrbUjl4ddAm4kU/WMyaYmT46RWrYoR0EGS4oKncnYREWdmiHLe/xO/S5KUv8VT8tn/nPycIAeYHTX9S3xpavIn/AXPpmvTbM36B4K9UI+dqbwQV6B53ofndAQkvzAg/euHpbKSEKnINBmQPmsyt6rqtK3Z94Qo7aGgsMNo4AvjD/jYBpkhr9jVVdNhPgLQWeb2SiTE8UZ15tov0AUaUKCCI9UP2fAcXhvfcltp6gCCGildhXwve2/3Z2Gk7CO5wJeVUZg7HiIpnyeGLr+jUePoj9S1Gl1r5orUiix45dMTnNDtPgdZ+OnELncYQHplB2U4thgXMOHEUDMC0Q3F+GDB+tA2149LnWRqefJJRzk6cjtxs79ekKU5tV/SA9O8K6PMBXDW1u0Bm1mm6K/Jy/NuuyI2Rci+15E9Nb/bcZjIg7/VjxPbCRqIeO9DCHU2dgpN7p9g0KVV/FQo9YPHAJoX9cYZ1scB2pMoJgtvsnBuMbhN14clcjls9w== 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)(39850400004)(136003)(346002)(376002)(366004)(396003)(451199021)(478600001)(6486002)(83380400001)(2616005)(6512007)(6506007)(26005)(186003)(2906002)(5660300002)(8676002)(8936002)(36756003)(6916009)(4326008)(38100700002)(66476007)(66556008)(316002)(31696002)(66946007)(86362001)(41300700001)(31686004)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bUhNc3ZGaUt6dVUzbVFhVkhvUEh1WWxaOW9IRE84S0hGRVB6VmJwOU0rK0pM?= =?utf-8?B?RG8xUVFLckdmWmUzZklTRS9Nalk4L284cm1YbkpPMk5KcVZLMGZHSkUxdVd5?= =?utf-8?B?MHNQdXMweGpHQzZBTEluK3RIb3ArNlJaemU4ejVCYkxpbFlWOXBtTEVPZnRT?= =?utf-8?B?Rno4dUEzS013eVpjSlp5ckNHOXlYdG0yQkM5V0Jxc0F5RTVic0pHenlxV1A1?= =?utf-8?B?Tmp2Tnh3V2tXQXdFYXUvSENraVNsS3kydEFOem5PVUc4VTczZUs1d1RpUGZU?= =?utf-8?B?T0E2NXBnNXNIUnNTTUtmMk9rZWxjRHRJb2pOOFVteGN5RkQzZFJsU2x3Ryt3?= =?utf-8?B?UXZySW02SU1qeVAzbVR2OXdqSXJHeHd3RzV4MnF4TDIwK2dRbGlJRFdUQWRB?= =?utf-8?B?bFIvaFBDdFVMVzlkVXZWcXJoYm5lcHJNSHFFamoxZTFTQllQNkxNZTV2bG1B?= =?utf-8?B?M1dGYVBmTzZZUmx1bmM5WUQwcnVUMjZuNXlFSEtweE40dFR3czVPdnhaYlpT?= =?utf-8?B?ZzhXdW44WS84UUxKNDNIQklpdzl1ZjBJU3ljWEM2cC9ZR2lzdkNjaDBldzZJ?= =?utf-8?B?S2NNdjhhS0hsUmVSNzF5SlRCcnA2ZENJMHF1bjMyTEtrQWRIN3dZdGtoYThN?= =?utf-8?B?U2dUR3puRWFVR2RZYkNLMURTckp4L3VyUUJZNC9ybEMwN2JQOWRqVHVPNzZP?= =?utf-8?B?QXEwNjY5Yy9ZbmYvTklWVU81ak9oa2tVK1RMQ3Z2ckZFRitFUGVjMDZzWXpq?= =?utf-8?B?VkJvKzFKM2RUelZBS0MvRS8wTGp0Ny81WEc0QkdsSXJ0V3NQZWNDRkcrU2Vl?= =?utf-8?B?T1N1K0FUVUtGUk9GdTFWa3o0dGJyR2VIR25xS003WDJ1eVdPMk9jNUdoRUx5?= =?utf-8?B?bndVMTRKZjJncUFLdU1LSlBDRHA1WmJKYmhPbnUxbitIRURWaUs5enJzc3VQ?= =?utf-8?B?U2xRYXV5ZHdYbW0vSVNFdEpFOG1iU2hlZHZ6U3luQlFnNHh1VmRKUVlVc2Uz?= =?utf-8?B?NzQwR09VM244amlDb2wxYzFiZm9jZjByMHR4VjQ5Y1pkS0tSaTVxa2s0dlpI?= =?utf-8?B?bkUreFhteUhvWW9UemN1OHQvMEJGdTJpUTVzYnFLZ0JodUtaZmJidVk3alcx?= =?utf-8?B?SDBvRCsva2p1QlRFQ3RONFVEODUwZkNKbmthM0JzenM4ZHdmNmgzcjd4RUp1?= =?utf-8?B?QTFJYWErY2xGTG1XV3BpQkFiRWxSME5LUm5XeWVTcmhxTWdFdmYxM3lPWkli?= =?utf-8?B?TjJTcGV4MVZFQXZONTJVQnB6NTFSWm5uNFdPUDBtWnBkTnM4UG5mc3oxcDVV?= =?utf-8?B?ZVhqeDRUaUZHaHJveFdPTnZTOVBhSGJLaUphbGtOYmZuWXRnUUFMdUJTMU9N?= =?utf-8?B?ZHg2Zy9Ucmd4TDdnR1NmdjE1TGJ6MW1vOWdUNmQxRi9jbDIyR3VDNUZVYnFO?= =?utf-8?B?dFBXUmJBazlVK0YyZSszQ3hsVVJtdHcyQVc2UkM3TThOY1NmNjhpQWRZazVo?= =?utf-8?B?Mno1QnVvT0U3SkxvVGhEZzdubWIraXhTbDV1b3AwcnpTUHlIa01tNjJIN3NJ?= =?utf-8?B?S1FlRk9jZ1BFdFZZUEEyTGtTTFloZ0NTSlFxd3pDbU1JUTgvdVEzakpDU0Va?= =?utf-8?B?Um9mSzdRUnBJZUdMVHEvZHJ0QUNUN29SdFk0QUJJYlpHRTk4OU96S0liS3Jh?= =?utf-8?B?R1IrL3prNm0vMDdkd2taNGMzYTVEZzc1VXhidzE0aXVTeCtTQi8zdTFIaEd0?= =?utf-8?B?MjE3NkZJOGtYOWVYMDRKODMrRW1rVFBXb3h3QjkzMzA2aFdic0lEMFBMWTFT?= =?utf-8?B?SDR6MU5CM1BsazJLdDl5ZTRJQ2JpL2s3NythdmJGSkR4QXI2Uk5VdFNmbXNN?= =?utf-8?B?bWl2MUF6bTVvYytNUXk2a2RPVG9PYnJxZ2RjK1F3eUMzd0NqWEIrRVE0N2Qz?= =?utf-8?B?aHVIeS95Zkc3Ny9kNTZYcEhSQVRNVXdtVWJXRS9lY205Uk9iRFZpdWxsK1hz?= =?utf-8?B?QktjS0VPT3pSRkZ6RzBvbWVvVjhJd2RQamFVUHpHLzUxZzFzKzlrdko3QzFE?= =?utf-8?B?dHRFV0pleVhBQU9hN0gvOTVmaS91aDdmSDRyVThZUVVaU3hLbGJCL3NkNW9Q?= =?utf-8?Q?2N5la+x5+XuiMcJoFhBu5yspU?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 61a16751-3e92-4fde-2e3d-08db587260a6 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2023 14:07:27.8147 (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: QCw6cb0CCiaB9Iy/O2rn6DsqiHM2AncEQ1ZRDcnuvgLggbGEC9NGqvz5gneO36hib6ru8BwIYzQO8loT09/gVQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR04MB6823 X-Spam-Status: No, score=-3027.8 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_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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: This in particular reduces the number of pointers to non-const that we have (and that could potentially be used for undue modification of state). As a result, fetch_code()'s 2nd parameter can then also become pointer-to-const. --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -161,9 +161,9 @@ struct instr_info char *obufp; char *mnemonicendp; const uint8_t *start_codep; - uint8_t *insn_codep; uint8_t *codep; const uint8_t *end_codep; + unsigned char nr_prefixes; signed char last_lock_prefix; signed char last_repz_prefix; signed char last_repnz_prefix; @@ -247,8 +247,8 @@ struct dis_private { bfd_vma insn_start; int orig_sizeflag; - /* Points to first byte not fetched. */ - uint8_t *max_fetched; + /* Indexes first byte not fetched. */ + unsigned int fetched; uint8_t the_buffer[2 * MAX_CODE_LENGTH - 1]; }; @@ -289,32 +289,31 @@ struct dis_private { to ADDR (exclusive) are valid. Returns true for success, false on error. */ static bool -fetch_code (struct disassemble_info *info, uint8_t *until) +fetch_code (struct disassemble_info *info, const uint8_t *until) { int status = -1; struct dis_private *priv = info->private_data; - bfd_vma start = priv->insn_start + (priv->max_fetched - priv->the_buffer); + bfd_vma start = priv->insn_start + priv->fetched; + uint8_t *fetch_end = priv->the_buffer + priv->fetched; + ptrdiff_t needed = until - fetch_end; - if (until <= priv->max_fetched) + if (needed <= 0) return true; - if (until <= priv->the_buffer + ARRAY_SIZE (priv->the_buffer)) - status = (*info->read_memory_func) (start, - priv->max_fetched, - until - priv->max_fetched, - info); + if (priv->fetched + needed <= ARRAY_SIZE (priv->the_buffer)) + status = (*info->read_memory_func) (start, fetch_end, needed, info); if (status != 0) { /* If we did manage to read at least one byte, then print_insn_i386 will do something sensible. Otherwise, print an error. We do that here because this is where we know STATUS. */ - if (priv->max_fetched == priv->the_buffer) + if (!priv->fetched) (*info->memory_error_func) (status, start, info); return false; } - priv->max_fetched = until; + priv->fetched += needed; return true; } @@ -9743,7 +9742,7 @@ print_insn (bfd_vma pc, disassemble_info info->bytes_per_line = 7; info->private_data = &priv; - priv.max_fetched = priv.the_buffer; + priv.fetched = 0; priv.insn_start = pc; for (i = 0; i < MAX_OPERANDS; ++i) @@ -9775,7 +9774,7 @@ print_insn (bfd_vma pc, disassemble_info goto fetch_error_out; } - ins.insn_codep = ins.codep; + ins.nr_prefixes = ins.codep - ins.start_codep; if (!fetch_code (info, ins.codep + 1)) { @@ -11790,7 +11789,9 @@ static bool BadOp (instr_info *ins) { /* Throw away prefixes and 1st. opcode byte. */ - ins->codep = ins->insn_codep + 1; + struct dis_private *priv = ins->info->private_data; + + ins->codep = priv->the_buffer + ins->nr_prefixes + 1; ins->obufp = stpcpy (ins->obufp, "(bad)"); return true; }