From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id KOA7JRcfomAybAAAWB0awg (envelope-from ) for ; Mon, 17 May 2021 03:45:27 -0400 Received: by simark.ca (Postfix, from userid 112) id 94ADF1F11C; Mon, 17 May 2021 03:45:27 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 56A4C1E813 for ; Mon, 17 May 2021 03:45:24 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 1DC57388CC03; Mon, 17 May 2021 07:45:24 +0000 (GMT) Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam08on2092.outbound.protection.outlook.com [40.107.102.92]) by sourceware.org (Postfix) with ESMTPS id 28680386EC54 for ; Mon, 17 May 2021 07:45:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 28680386EC54 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=wavecomp.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=fshahbazker@wavecomp.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OAbcQKDUJ/hhFvY0/Tu3zirD/h9MZ7kYZ8qlf4CS/eG3/NUuFliHSios7xn4KpTIQSFRxlI0Hzg/5/3IM9vOHttdUx+i1w2WoMWCcIbrLzzFEQtbBjjedPZBL7ZGyJT/qg1q8ac2uK5BBv0mppU7baEcOJ3bPA2dbXt32culkww0alWNio2kVQy6AYXHInNVd6RX8YJ1jmMr9ofNZ1ZRABMn+p9F8BZ5FUk7KKjGYgnFkyjIUwgqgjoFS1/dpHzoRGGPMDZfyDY7CdbI9qPM4LyK8ipf+87PQCdYY8EQMWvhnjRhDZqub3xEleApjVCCcIFJjrBYX/kpI6taCqxt8Q== 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-SenderADCheck; bh=s1q4z6MRxRzmWeZbnC47a2rMS/DhvLWRO+bOcYrByGM=; b=FfLsW3LR6byh3NyOim/3Q4580YJ/PnkhyQMD0KAH6NkleMJ501UxpuhT+9K4Sy5E2EMK3GjpkhFyvk7ebt3C0im/137Ds4wKk+dQAUfkwfJMa/zom2rdEV6ccWnB/BqrIeG7AkUX9/NzVQx2jxwf/IoCgXhXKPyc0gIAg5tl2FlSoPz4rP1O6Liw76cE+B1yAolqY7QH2t5Sk7xk7BicHzvc2N0b6EIdcFQ8mbqeUXh/+D9wxGebgcHBr5Vq4jkvHT8PsnyqO8TyqfYfodaCUWkuBBtpvpEidE3X5C3ourwk7MGYy45MG4geTZMf2gF16KJMyQdYcFsCl+3CCnDZFg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=wavecomp.com; dmarc=pass action=none header.from=wavecomp.com; dkim=pass header.d=wavecomp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wavecomp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=s1q4z6MRxRzmWeZbnC47a2rMS/DhvLWRO+bOcYrByGM=; b=od4f9i2AKELbTvOg/DZialabp48bkuvB3clxks+KAQ1WeRe7nE3I59E9MTfsTil78StTZFwcIF91lqxel1FiOzfBpeHqVzEQ7IoJfzNBVJjl7kzrQSmL2ixRObE6YIlSA44d08CM2RqnRDXnil/UlvYonMjQHNiNV/uDiliGrk4= Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=wavecomp.com; Received: from MW3PR22MB2299.namprd22.prod.outlook.com (2603:10b6:303:47::10) by MWHPR2201MB1759.namprd22.prod.outlook.com (2603:10b6:301:6b::39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.28; Mon, 17 May 2021 07:45:13 +0000 Received: from MW3PR22MB2299.namprd22.prod.outlook.com ([fe80::e098:7822:150b:bb5b]) by MW3PR22MB2299.namprd22.prod.outlook.com ([fe80::e098:7822:150b:bb5b%6]) with mapi id 15.20.4129.031; Mon, 17 May 2021 07:45:13 +0000 From: Faraz Shahbazker To: gdb-patches@sourceware.org, Mike Frysinger Subject: [PATCH v2 1/2] [pr gdb/19447] sim: mips: Only truncate sign extension bits for 32-bit target models Date: Mon, 17 May 2021 00:45:10 -0700 Message-Id: <20210517074511.7932-1-fshahbazker@wavecomp.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: References: Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable X-Originating-IP: [216.35.128.4] X-ClientProxiedBy: BYAPR07CA0020.namprd07.prod.outlook.com (2603:10b6:a02:bc::33) To MW3PR22MB2299.namprd22.prod.outlook.com (2603:10b6:303:47::10) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mips-compiler-bld001.mipstec.com (216.35.128.4) by BYAPR07CA0020.namprd07.prod.outlook.com (2603:10b6:a02:bc::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.25 via Frontend Transport; Mon, 17 May 2021 07:45:13 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2357a3c9-6f8a-432e-02f2-08d91907b4a8 X-MS-TrafficTypeDiagnostic: MWHPR2201MB1759: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3383; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: atAJAgTdfpr0bP8ZkJONNBzdVkxXseW7WmGL64tIi1+7mTu4kcsFYllozi8yKGgbA/7MSPbHzvpcZYHoahRCQNH96wWZVqGFA2irTW4dQ/rVS45QVsgvbIayNadHLngCeQ+eOmx/Wdyhcp+xeqfOSy2IrYjy+A+U2nnHHKN6eZRHNxLV1WiLmc+PpnglPmrH905CG9vsKT+lwirumVBQXapSRvSNf13Rfk1PtPPECChzEnHXdvj0w7H33Yo6ekdZpScfIqpEwGAWV43bBhZ0i6D7YBoadM1GiY79sR3Umu5fVFQlOfdN2AyGXFsaR0U4T22019YfnpYPTh3nQtocw6QccNu2oSiypVSkRQKyi6cgQO9b+Xd/GgM0+zayHbLykxgusQ60+Y/s9TVX7U/E4pIlLJjEB91RP8Ma9QkRP0h9ia91GYyTfEimJ3zYanQKnFABdvK39/+zhnoLQhZNJt36tpAHiLqxUTCC7DidyheWlqcB+f2uSPoFbHrpE+FjA/tYZBOyoRqK+1Q/oEnAft/NnaQRThDxzq/2tbOzxzKY6aJFpezLt8q0FhsDSDAuoZzXBox/a2oM3Z6f7WxxPMG9DDuyyWNHhKSWbb3pCPWIcpsuayFg2wt3zxaOxwW+YE65vbx3/KynfyQ6gR13gdmlFSUymCcHHnT8ci1gIXEyw0xiZRNYWjLJhYjJ+PecqsC1IEW3qbaJDUxNrTtkY9S9j66jj4TyK0CKwhdmByHWwou2w6pLMwqJ1ZmAusOHgbl813k1rlLZwyhNctXtcg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW3PR22MB2299.namprd22.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(376002)(39830400003)(136003)(396003)(346002)(6916009)(6486002)(956004)(8676002)(16526019)(26005)(4326008)(186003)(36756003)(1076003)(5660300002)(478600001)(6512007)(2616005)(107886003)(8936002)(38350700002)(52116002)(83380400001)(66476007)(66556008)(966005)(86362001)(66946007)(316002)(54906003)(2906002)(38100700002)(6506007)(170073001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?IcraSWYvFVeA9YcqHOXNojLH0J3DfLacYrUzpEHLScvIJakH3iXbBpGPQgA+?= =?us-ascii?Q?smYQ0cfR8kAIaEZ1TmHGhp72ylap2TUur2r9C60Np4VmWFP6yeO2JbGXnWRq?= =?us-ascii?Q?bB3m5BrBzld0aNsDkVBEohU7dx6gUgzdCCncvTN7h9iH56n7ArNQtj0iUwnk?= =?us-ascii?Q?nyUXhGD+cd7iRYuNvMXS1uuIGzgsJBMveYSKEhaPYb75G5ONXHq89zDBcqWz?= =?us-ascii?Q?eGYnWzLHpFzgWaRI+5fu7C53wSpN2zG6YCtVnddzm2cR5mMcQNmj8vAze1Tm?= =?us-ascii?Q?gJ2SPB2c2RyhzOE/4aPP0YqrtSRUlWouuiFUBdus6qUjLs++qU+2ME9CZ2ES?= =?us-ascii?Q?sxp88ijAXXi4VobpACH/6/RRLfLIOsShx+7OukfmmZP/nTeTQXNbzSlfNv2B?= =?us-ascii?Q?ULvqSv+3AtFYLw+peno3rTGmZ34rB8VS9BMbVMRgLqGGDgxvHA0uSSzrFjDS?= =?us-ascii?Q?96W9JbnL5qE6vUbJFF6gqLhrdVs8Q7s7flmTzrdmR4mR/48EPX2BPGacq1FL?= =?us-ascii?Q?BM0zs/bQ9wgaalMsR6INnxz6+xNR2l1aM4YOezi7fCqiPnsdhbu58SIcXTBF?= =?us-ascii?Q?TcFqrSe4XZBqmHQ+GXUgMVBz0Yx+DvpyFVYs7t7ywrJ+0EFhG36noU3rtUYR?= =?us-ascii?Q?24u7+WZ8tBiF2ztmwVWsQNlP+QE90xuJpim0NPEDluRBIkOOdEJ0G5J9JKho?= =?us-ascii?Q?n3bHHYHxbWjhs7AekcysatDp4PSCOHzxH/lQhGk2PA1KVGosRFPYGmvSziyy?= =?us-ascii?Q?yby08Z3GtZyLUnQneWldp1SaYobjXHljYP5exdkuvsJfaNbLr2D1AuJOOBIj?= =?us-ascii?Q?0ynU26lyntdJX7pcF7r6rx7Ey622AukLwJ9kEMxeIAnF0aRfoWuyJJ2jtxLC?= =?us-ascii?Q?e7u6PhzRjKM4JSuozNtYhys4SSOh5c1P8/wGT5DtXhpNNYcVldp4oiq5WYyW?= =?us-ascii?Q?HhCZ2d1gxn2eybUwD/8rAewswENNa8/TxXyXjurnHX62LsGU+Rdwvg3pnVn3?= =?us-ascii?Q?MqrPpQVOtBIn2hWpSJZT9TuqB27aDc3pD6fs56SlZ/nK3F/HRrvkq/2704WQ?= =?us-ascii?Q?TtYWKAWkjkWkw5TekycJD/mWgXhFMMmBW9wggPFzRSvWDY/K5Z/+p7+96usH?= =?us-ascii?Q?Pr1i2y7aO3+DA1V9+g3yGzTL7Icgtp4qfS++w1cBhyZyPSNObDtXlv6TVml8?= =?us-ascii?Q?XSpoS5Aq6PT4Za58EQXhHRnjs8jEgZAdVo9PR9bc55zkeVxnqiNxONcHqabc?= =?us-ascii?Q?TonBTmTJyimXDOGVMLWsCDsygs/aJdU5qGu7WCL03mSJnST3gowGEX1WFjh9?= =?us-ascii?Q?WQOtOUuQ1y6zXrgR4UMDBfIG?= X-OriginatorOrg: wavecomp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2357a3c9-6f8a-432e-02f2-08d91907b4a8 X-MS-Exchange-CrossTenant-AuthSource: MW3PR22MB2299.namprd22.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 May 2021 07:45:13.8460 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 463607d3-1db3-40a0-8a29-970c56230104 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: mX6sQsALgjFOGEPs4TBgIgv8VInJ49YiLu9l4YkeJDCanZzkAS8sxS/vFRQBW1PRKHHALQWd+owoAVIowSz3J+rHjQpyjMxmm7ZYAZEfLX0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR2201MB1759 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Chao-ying Fu , Faraz Shahbazker , "Maciej W . Rozycki" Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" 64-bit BFD for MIPS applies a standard sign extension on all addresses assuming 64-bit target. These bits are required for 64-bit and can only be safely truncated for 32-bit target models. This partially reverts commit b36d953bced0a4fecdde1823abac70ed7038ee95 The sign-extension logic modeled by BFD is an integral part of the MIPS64 architecture spec. It appears in the virtual address map, where sign extension allows for 32-bit compatibility segments [1] with 64-bit addressing. Truncating these addresses prematurely (commit models (-DWITH_TARGET_WORD_BITSIZE=3D64). In the ISA itself, direct addressing (Load-Upper-Immediate) and indirect addressing (Load-Word) both automatically sign-extend their results. These instructions regenerate the sign-extended addresses even if we don't start with one (see pr gdb/19447). Moreover, some instructions like ADD*/SUB* have unpredictable behaviour whe= n an operand is not correctly sign extended [3]. This affects PC-relative addressing in particular, so arithmetic on the link-address generated in th= e return address register by a jump-and-link is no longer possible, neither i= s the use of the PC-relative addressing instructions provided by MIPSR6. [1] "MIPS64 Architecture for Programmers Volume III: The MIPS64 Privileged Resource Architecture", Document Number: MD00091, Revision 6.02, December 10, 2015, Section 4.3 "Virtual Address Spaces", pp. 29-31 https://s3-eu-west-1.amazonaws.com/downloads-mips/documents/MD00091-2B-MIPS= 64PRA-AFP-06.03.pdf [2] "MIPS64 Architecture for Programmers Volume II-A: The MIPS64 Instruction Set Reference Manual", Document Number: MD00087, Revision 6.06, December 15, 2016, Section 3.2 "Alphabetical List of Instructions", pp. 321 https://s3-eu-west-1.amazonaws.com/downloads-mips/documents/MD00087-2B-MIPS= 64BIS-AFP-6.06.pdf [3] "MIPS64 Architecture for Programmers Volume II-A: The MIPS64 Instruction Set Reference Manual", Document Number: MD00087, Revision 6.06, December 15, 2016, Section 3.2 "Alphabetical List of Instructions", pp. 56 https://s3-eu-west-1.amazonaws.com/downloads-mips/documents/MD00087-2B-MIPS= 64BIS-AFP-6.06.pdf 2021-04-23 Faraz Shahbazker sim/mips/ChangeLog: * interp.c (sim_create_inferior): Only truncate sign extension bits for 32-bit target models. --- sim/mips/interp.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/sim/mips/interp.c b/sim/mips/interp.c index 2839715959c..6e00fd0dbf0 100644 --- a/sim/mips/interp.c +++ b/sim/mips/interp.c @@ -1014,12 +1014,11 @@ sim_create_inferior (SIM_DESC sd, struct bfd *abfd, sim_cpu *cpu =3D STATE_CPU (sd, cpu_nr); sim_cia pc =3D bfd_get_start_address (abfd); =20 - /* We need to undo brain-dead bfd behavior where it sign-extends - addresses that are supposed to be unsigned. See the mips bfd - sign_extend_vma setting. We have to check the ELF data itself - in order to handle o32 & n32 ABIs. */ - if (abfd->tdata.elf_obj_data->elf_header->e_ident[EI_CLASS] =3D=3D - ELFCLASS32) + /* The 64-bit BFD sign-extends MIPS addresses to model + 32-bit compatibility segments with 64-bit addressing. + These addresses work as is on 64-bit targets but + can be truncated for 32-bit targets. */ + if (WITH_TARGET_WORD_BITSIZE =3D=3D 32) pc =3D (unsigned32) pc; =20 CPU_PC_SET (cpu, pc); --=20 2.25.1