From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id iLt4ES+NkmCKAQAAWB0awg (envelope-from ) for ; Wed, 05 May 2021 08:18:55 -0400 Received: by simark.ca (Postfix, from userid 112) id 4168F1F11C; Wed, 5 May 2021 08:18:55 -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 7B8801EE1B for ; Wed, 5 May 2021 08:18:52 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E15E739C2439; Wed, 5 May 2021 12:18:51 +0000 (GMT) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2114.outbound.protection.outlook.com [40.107.237.114]) by sourceware.org (Postfix) with ESMTPS id DA3B3398204D for ; Wed, 5 May 2021 12:18:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org DA3B3398204D 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=Nv1sLGbtK5SaOnrEDXd+8i0pKFx+OQmFCYlPPqbB6QbeG+NhvM7aIgnhSjs7hJoskIfMsc8sKQ6cM+TqrgjkkXS56R/0lgWI504AlG0EKXxsp5nPW8yTLrOj6tlgV+QY48OLZ3wME74LNk+bIZAJs+dM9lb76miotUqknvp3dSsmkkBixoRKvvuHRVsFG3eN7J2cLUzZSWaMTunhnRDDpmIh7xYU+8gfK2/kvuaE3oyB3BSbclkmO7rBQeYyY9JOassXhy9H+0RUVkx8EQL5+xO5qQBe6FP104N0u8SPr80/y3WBz7SYujZgpOjfh2QyZc7DTnwwewpqNjMT/YwLyQ== 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=AXQdol3uqvaSGZhur5SuLHG3rE6OOKAneU8fy17SCo0=; b=LKPPCtOsk9BQi+lXIU4zvycnMIuI/zCjXMxKcfIasR/b967132Di2wQl6Oi3FN0898LujYhPx+S0k1rsPKZwmZiaugjTzAxTh3GdmWLJcn9fhjtAQMuts4JfWQdCtZuVgCjU8mALmi6/eFYkZINQH+bnpdT4qW84bzyzNol8OzbHjpCeKjhr8UcUTGmwrIY0ZOxQ2RvJnqR0LEWlbQ1aLYAewwj2mL0dlAzBUurt0b38gZqR7WndrzbtpOchUE29TAdbC+uE5Z5LFmEPyzQEOke1MWpVF3l/k/2kIpDWFo7hZ5VzCSxVmVBJXpOWlGuDRoDOOawFVXLwxSMJZeUOEA== 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=AXQdol3uqvaSGZhur5SuLHG3rE6OOKAneU8fy17SCo0=; b=lU6gx8P0lAqxnDueY559065/mrY/l+eOCGgwuzkQW3rXWw/rfiTAGrf+GeJUZBFFOPOV3DcKmHJiJu/q7S2GFFZSL7cJypoVAdnJg9QLFer+FMARUQk2XtxfXlwtxdxdU5bk2g2E1gU6Y6WfpmE6xpfAJ7VatSmU8ndAcFExK4o= Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=wavecomp.com; Received: from DM6PR22MB2295.namprd22.prod.outlook.com (2603:10b6:5:295::12) by DM6PR22MB2120.namprd22.prod.outlook.com (2603:10b6:5:2b4::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.40; Wed, 5 May 2021 12:18:46 +0000 Received: from DM6PR22MB2295.namprd22.prod.outlook.com ([fe80::d44:e30a:fee:fb22]) by DM6PR22MB2295.namprd22.prod.outlook.com ([fe80::d44:e30a:fee:fb22%8]) with mapi id 15.20.4108.026; Wed, 5 May 2021 12:18:45 +0000 From: Faraz Shahbazker To: gdb-patches@sourceware.org, Mike Frysinger Subject: [PATCH 1/2] [pr gdb/19447] sim: mips: Only truncate sign extension bits for 32-bit target models Date: Wed, 5 May 2021 05:18:42 -0700 Message-Id: <20210505121843.24974-1-fshahbazker@wavecomp.com> X-Mailer: git-send-email 2.9.5 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable X-Originating-IP: [216.35.128.4] X-ClientProxiedBy: BY5PR16CA0007.namprd16.prod.outlook.com (2603:10b6:a03:1a0::20) To DM6PR22MB2295.namprd22.prod.outlook.com (2603:10b6:5:295::12) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mips-compiler-bld001.mipstec.com (216.35.128.4) by BY5PR16CA0007.namprd16.prod.outlook.com (2603:10b6:a03:1a0::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.24 via Frontend Transport; Wed, 5 May 2021 12:18:45 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9544b838-8beb-4103-cbbb-08d90fbfedeb X-MS-TrafficTypeDiagnostic: DM6PR22MB2120: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3968; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: aCcI42eDpESSfZk/3uO55nPZRVX6hnvQa4ncplaJk30PMwXcS+dcXYsvIZfe8OLQxjulZrOdH4R9cQgT7E/2OmUWIX97sNpe9oIQR5TlFwwZdgJ7yN2iAYvczcVHruyf9Z73g1dh8+5ZDmsC5L1LuFwSv16ezosbpK4IGUm8xv8uBrovq1XdobOZMU5VOXr9pl7jldkVWZvCyogbYCIiG11qaGOz2phSJ9tv8FJD8c+ol7WMMhXmkdgqxZgFUX1E227SsynwPs37dZmTTADPoVY80JsHDKKOUWVMYO5tkYV7W1cumLvNPeRC4h3Zf/FijYNboVyLm0hU7aoyC+5aHRUc0ibIPYO2IcKzx9EMPpJrBjTqeEIn+Javo2b/cWSg+BgSGlUGg84+AigTT0y0qhJxww8TiVsca8Z88RdxG6EF6duRZ1Yjuz3AMaf89q5mvvyLxI1LDna7f0opFu/ypfz/oCTIqO5hmBkPxFSCTc6bcgcNF193dgPrfFM0uazKEAui9ABUHBQiGIWwa0yuxsHTz0eaLF0Bkj3h8Vcv4p0EsYoVAYetc8W1t02bis3Ey0qTMhqn8xEtyi8C7VuRM5aspOouifdKOBD2VWeUXDqN3Bbt9vxkbfiPcQGzHZnHnzs35aeqTtkiLPYM896M+SI2CeAntxrLQO4csk9VcHWc9ojSXjc7O2K9phz7VWTex9RfG6EKQPld92ed1VP9coVxeuYgl3PUk0AQNHVQqvmGZXoSkHpjMt6zY/FUGRAZ47SKprUcL82Wjqv3J7gAoQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR22MB2295.namprd22.prod.outlook.com; PTR:; CAT:NONE; SFS:(39830400003)(136003)(366004)(346002)(376002)(396003)(6486002)(36756003)(2906002)(8676002)(6916009)(26005)(8936002)(186003)(956004)(16526019)(5660300002)(2616005)(1076003)(52116002)(6512007)(66476007)(66556008)(6666004)(66946007)(6506007)(316002)(107886003)(966005)(478600001)(4326008)(83380400001)(86362001)(54906003)(38350700002)(38100700002)(170073001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?f28LrwdQ7kwq1eB4JuFAOHJkmklpY/PEi9p8ixfnXVwXTTgDSop0ZBwTYAs6?= =?us-ascii?Q?lS7CwgRvWrph8+ZAOeYl0e3VpZ/+d0BwKHe8+cZ+Rfqo0F6iDk2jHBH2oIKz?= =?us-ascii?Q?kISJ3GPYj08lBS8fUr9V9KInjeFRunvSbX7y++M+k8CbTymaC8s+jfowfbVq?= =?us-ascii?Q?POzb4NlRitSSScVSAUIMsjs2D4Yw2gISrTXDQ+yNQ1GBZPC/QGg+GeJO3jXn?= =?us-ascii?Q?awYcuux+I6ZtdHXoEnYYkTOK73v7T+MdbaDDrlwh2SkvxLZF9U0nRDKMndlE?= =?us-ascii?Q?8LmPWJclblAb4WL2MsyVu4kMzmInxTe00Iba2hAzKfGUgAjS3xjJ23M/7guM?= =?us-ascii?Q?iKsjCdFnVItMkcoCTZCL7nm9Xve2mVWdr5UUybMqjWLUHI76UNNfyHLtqF6C?= =?us-ascii?Q?Rv0GhqlZaYiYiSbeGhb4hRRoF5jH09/1kc8/yFt7oXOm3oqSmg+dX1WiZUMa?= =?us-ascii?Q?zdjEUIUc7/2W4nTXhASJJcoPWCaYqwe+l0fmJ4Qybw0l+UKSPwAYcfEnQB2/?= =?us-ascii?Q?Y567jKl7xCkis1gTWl5D9d4ZuwQPk5exOK5swQtRz7LxqpYEW4Of2NFhHntU?= =?us-ascii?Q?oSFOkLKmdjiBi1qYtG5jzg13ekAm5OoCkgYu8u/9XmfdP0LdnvaUScNrE8w6?= =?us-ascii?Q?053LYOH2jxHshH0AYwV7fsO/1+w3Si/lk6B3RM03iBpOrnMVJ/myZQ5BA0+e?= =?us-ascii?Q?1kG5Hj0xU1kXtWFxzLeewcdUNRGqRTN5JZDjCLYkmcZrwpBGKH4XCI0mjcxA?= =?us-ascii?Q?aoOCtybmVB2XSvk1QD8Pj/Fq3DvhnsOEgAFlavPowkHJI+DBgNjRvn0HqNbX?= =?us-ascii?Q?KS8CLwtIUc3c4xY5ZISRJleZWOMuG+9AeYenKrEzdzLiWouEvzEG/0HAEB5q?= =?us-ascii?Q?X9bs1QJ1F2VZs4JOEJ4SDUt/FXIfRYNdgk1CMbglDVo/VMayRunl3yDW5ZLB?= =?us-ascii?Q?EpoGslKpjfWb94AbcjLYMG5/OXySO+ohqYlXkGRXFy0eZyFt0gHYbyarI3lt?= =?us-ascii?Q?/xY+7bEHNx2qkjx/0DQc4gNWZ69T54QJvZh0G4+TvAKIVeOrIhKtS/q4uoPR?= =?us-ascii?Q?rScDBjGqSjgZT4xwgMaLabFpFao00eRXp0bEN8pwELdv+vzoatmLSUrmKlVt?= =?us-ascii?Q?yHAIHuR6VAX6gdu46gu2SUNBucGo8MTjckr42E/RJq5O6bRjy/LUTWmlUyAR?= =?us-ascii?Q?K4TitW7NZ3g9epUCbYz00+dvHOsUpadOFgy0zNOsTeahNcxTWzlAFtdQbwju?= =?us-ascii?Q?FeePkxMaxElazACAmk6Jxc/OaxPXjga4SSeZWQ4sYwsuAOfZuAlWX6ONaRXz?= =?us-ascii?Q?mdx51T4YAUMjnmSdGhHlZfaw?= X-OriginatorOrg: wavecomp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9544b838-8beb-4103-cbbb-08d90fbfedeb X-MS-Exchange-CrossTenant-AuthSource: DM6PR22MB2295.namprd22.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 May 2021 12:18:45.6609 (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: Esy5psWsncTjJlFNwAdwKUUMfx+HZSZ7KEeG/Jh1kh+sm9jjlvIm6nm3ldXCIw3YZjXvnetknxEk9mMMjR1fEnxxCv0WyQUaDuIuad1e7q8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR22MB2120 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 2021-04-23 Faraz Shahbazker sim/mips/ChangeLog: * interp.c (sim_create_inferior): Only truncate sign extension bits for 32-bit target models. --- Notes: The sign-extension logic modeled by BFD is an integral part of the MIPS= 64 architecture spec. It appears in the virtual address map, where sign ex= tension allows for 32-bit compatibility segments [1] with 64-bit addressing. Truncating these addresses prematurely (commit #b36d953bced0a4fecdde1823abac70ed7038ee95) in PC space breaks 64-bit mo= dels (-DWITH_TARGET_WORD_BITSIZE=3D64). =20 In the ISA itself, direct addressing (Load-Upper-Immediate) and indirec= t addressing (Load-Word) both automatically sign-extend their results. Th= ese instructions regenerate the sign-extended addresses even if we don't st= art with one. That's what causes the failures in pr gdb/19447. =20 Moreover, some instructions like ADD*/SUB* have unpredictable behaviour= when an operand is not correctly sign extended [3]. This affects PC-relative addressing in particular. So arithmetic on the link-address generated i= n the return address register by a jump-and-link is no longer possible, neith= er is the use of the PC-relative addressing instructions provided by MIPSR6. = I am preparing upstream submission for R6, which is where I first encounted = this problem. =20 [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-= MIPS64PRA-AFP-06.03.pdf =20 [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-= MIPS64BIS-AFP-6.06.pdf =20 [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-= MIPS64BIS-AFP-6.06.pdf sim/mips/ChangeLog | 5 +++++ sim/mips/interp.c | 19 ++++++++----------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/sim/mips/ChangeLog b/sim/mips/ChangeLog index 62b3b4cf2a6..5dd0dc8512f 100644 --- a/sim/mips/ChangeLog +++ b/sim/mips/ChangeLog @@ -1,3 +1,8 @@ +2021-05-04 Faraz Shahbazker + + * interp.c (sim_create_inferior): Only truncate sign extension + bits for 32-bit target models. + 2021-05-04 Mike Frysinger =20 * configure: Regenerate. diff --git a/sim/mips/interp.c b/sim/mips/interp.c index 64259cc3fed..fc3a953f3b9 100644 --- a/sim/mips/interp.c +++ b/sim/mips/interp.c @@ -1012,17 +1012,14 @@ sim_create_inferior (SIM_DESC sd, struct bfd *abfd, for (cpu_nr =3D 0; cpu_nr < sim_engine_nr_cpus (sd); cpu_nr++) { sim_cpu *cpu =3D STATE_CPU (sd, cpu_nr); - sim_cia pc =3D bfd_get_start_address (abfd); - - /* 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) - pc =3D (unsigned32) pc; - - CPU_PC_SET (cpu, pc); + /* 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) + CPU_PC_SET (cpu, (unsigned32) bfd_get_start_address (abfd)); + else + CPU_PC_SET (cpu, bfd_get_start_address (abfd)); } } =20 --=20 2.25.1