From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2121.outbound.protection.outlook.com [40.107.243.121]) by sourceware.org (Postfix) with ESMTPS id 24842384841E for ; Tue, 4 May 2021 23:21:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 24842384841E 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=jLH6L/5RdUqbKZG4UOaPE1mvxXDYKBDiBOaBuEb15ov0fmjFlR+a1SjVIy068HO+dJW3NixQSOe55a1Ag2SAhXoD9CPWvvjtaN4PaFe8hDDU2oAKgLKR6gPit+nfwLi3JPrYnbCxkOREWRZo96K0hiSh5XzbLWCcPX6GeXGAoONw/k7V1wZ2hgZRk3Asuy2suMGgmB17QAFxNx8p5ZhKad65dlWWsxHsKon2y6w7AGbkV+7IiitZXrRLMrtzmhD7Ti5A2V6Lj29wVSziPFIT0k8LH91WLoCsuwxlD3Vz0ezhw8/MmvRl8HjpOZVM2p/ppd+bS3yBPy52MwgMoJlWYg== 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=EL0gtWexm2//0q3BiZ1fWYUBoydmWzG85B1F5Qro4UzyvL5xenWKYh/gwxtkfCzLIm+wlq/pxfT3PAvGoD5sitwbKng6BBrsthF5Y62EW1xJB7or1RwsgD5GBLtK/fvtjp5xKBYBoKqgKOJDyXhSm8l6GWFoUmlzkuKFTDiSf8odgJQGA9Fr/leJ2zLoJ06YY5svjf5SHBOD9aVN67ucocsJQIDj4lMe4l8fbeMnDG1Ib8eSbKq/WCmcIE3VYD0VDbxXT/1M8GIFnYQxkNpsQs13+Nal8FkLVKnjUkzPovXPx1bpIYWTfk3JqVoEglJHoBS3FORJkQngEptHYZUNow== 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=bA9SXPQII1WxlKNH0qTtA2RJheGSudgyK2uP88ubnMHWO5i9g8I7xMZ1nZUlqnglM9FVlZKaAScijFw2A5DyNPkjQOZNHBMiF7nAf0R+kMnrjaOdeykda2DjN8LEMXYNVf25qVMJn6jCvo7oCLrJJxDD97vo7oOoE+N7hCP8YAc= 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 MWHPR22MB0462.namprd22.prod.outlook.com (2603:10b6:300:71::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.41; Tue, 4 May 2021 23:21:34 +0000 Received: from MW3PR22MB2299.namprd22.prod.outlook.com ([fe80::29cf:e1bc:6ac3:3a2e]) by MW3PR22MB2299.namprd22.prod.outlook.com ([fe80::29cf:e1bc:6ac3:3a2e%8]) with mapi id 15.20.4087.044; Tue, 4 May 2021 23:21:33 +0000 From: Faraz Shahbazker To: gdb-patches@sourceware.org, Mike Frysinger Cc: "Maciej W . Rozycki" , Chao-ying Fu , Faraz Shahbazker Subject: [PATCH 1/2] [pr gdb/19447] sim: mips: Only truncate sign extension bits for 32-bit target models Date: Wed, 5 May 2021 04:51:16 +0530 Message-Id: <20210504232117.896136-1-fshahbazker@wavecomp.com> X-Mailer: git-send-email 2.25.1 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable X-Originating-IP: [175.100.139.252] X-ClientProxiedBy: BM1PR0101CA0017.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:18::27) To MW3PR22MB2299.namprd22.prod.outlook.com (2603:10b6:303:47::10) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (175.100.139.252) by BM1PR0101CA0017.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:18::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Tue, 4 May 2021 23:21:31 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f60f8f2a-09c5-4b5f-25f2-08d90f535b08 X-MS-TrafficTypeDiagnostic: MWHPR22MB0462: 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: +cyEUWbnVcIjlmgyWe/kJ7TXrzd5S0BcX+XUrY5wnXauOket+WJWFZ05vLH2t7JbZooU9/SLWZDE3gw16sQBChlBBmN9/Bn5337ulcmg9tZ0CEm70qznz/L3dTgstZpdj+WLM1Exr+G2LHbn8jb33g8WIQbwhrFN0NbXQOX2TZuJkDywq52lOkIn8NxS+4lxicTKNqtNjcZizg/a9/EbhWmN6ChFdqG99oiiooyc4zzPABM8vjHtfXjc0XWKFtY5GeMKB4fIqMe8iaQBmnhvzCkHLhdctxwugQqDBdVhbbUXvhT0+IDhZWIQYLvgJxyg5FvEsPmE1Ej96Lg+bfyBvo75RaYq8/LjZM2B2xdkxa0XOtBcUQpZcMRDQSoQz3787vFFUhIvOArOLMwUDON2whzzkUkEG6rPCLuD6QfK65nVMPQbb2cDuIBPOG16EsqUKU1VpcCK4F/PTfkPjWaK4HDwmfeQiz54rGGpLgKjo+yPnNQotf6YJkZxT774cFff3+Fp4UXB9TWGq2Vmf04yW+QPcRbzdpdKelZ3Fk30OD+mST3ArtqJzRzIpnGH+wRaMFzWwJy80BEUwXOKKLjaTDKfFNQHFIZUz2bm6Z+FTHnx12hB5hzQYLdF4guvAouFR80KkgvRACoApsGxCfyvv/+wS/2v967LdnRKtgoH8UGvLVP/KsYdqwRdNBzOsr0I44heUm7XbJ42nl0L32GahNFk3CeERUbu7KN0MoKeaxF7hecMG7cHMeFJa1csJWpJ 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:(396003)(39830400003)(366004)(376002)(136003)(346002)(316002)(8936002)(36756003)(66476007)(66946007)(6666004)(6512007)(86362001)(54906003)(6486002)(38100700002)(107886003)(38350700002)(1076003)(66556008)(26005)(8676002)(966005)(2906002)(4326008)(16526019)(6506007)(5660300002)(186003)(2616005)(478600001)(83380400001)(956004)(52116002)(6916009)(170073001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?rhXDW4mNnWpfQ+1qTkNahXXkwOGRUNwPQn2a6yDWt7qljsowhp1I4ZgYW++K?= =?us-ascii?Q?FBgCkVtA7LJpieaDRinY4Yby8u0DmL0HEmQehtieoEJRMumNhoIz2+9gSCsu?= =?us-ascii?Q?BenJxumEHU15KYgWaqgWkOnFkO9ZQV5iUmQCToCB7MheJovLirUpBIiObU0d?= =?us-ascii?Q?KjtiOb8eZV4js2ia2eD6voOEDaiZGnliUleObpnuLkqdUWD6XxrdDi+2RMQm?= =?us-ascii?Q?CwhvGl65UffbXQ+YCOLEN8vKfpSQG5nfi0cUKZ/Qc9cVFrV+Sb/JlbdMWMBB?= =?us-ascii?Q?KHwKkeGCijx3Ke8z8i49T+KSvCvHL3WWEsWfSCVtgYXsaA0w2aWHQgyH6CQe?= =?us-ascii?Q?r1/rB5aAsj8t3Kd5pGg1JJi9sFMOs4So2j5Xewn7zDJ9riB9L8T4zDfO5ZPJ?= =?us-ascii?Q?HQBee1ISqqjYuiXY2+WEmJGqVWAxg30yfJrtZ8Cuob2Y+WLvTPRZ3LxgphgR?= =?us-ascii?Q?/izkPVGJpos1/8irNDp3RM1ACtW2QbVPSWo9evbpqzJ+pL6ocIkObfpQizBc?= =?us-ascii?Q?lzJYS7SFR557imaERuKSv467VLUCQl+6KtLUU4e/LeAIsScbT41vQKGuFdzu?= =?us-ascii?Q?DAbpDKqjpvEx8qzOOoGYr0La5N/uzQuEA93Ptstdzmb91c63z71nOcLpZnIP?= =?us-ascii?Q?eqdh76juVzOpwpzgjLB+gUwVW3EiWcB9kYbdOIcj4iRqnhLazf7+VAV6fQfB?= =?us-ascii?Q?cjMsRcHcWh62K3OwVsHGN5fOz7PQ7IZm2nHeGdahUBK/5IcvxeyTN7lULtXc?= =?us-ascii?Q?NNvKzsgAPLVe06EVlxXc8BiAtzBUAzn4whlKXrWoiqFP4P5Wv0A/0p+SNJUn?= =?us-ascii?Q?0ir3B8IwzUtUETk+2JOBO/E+x7nYJ7Wb2cFagyVQlBGiVA2xDtisktNUKpBO?= =?us-ascii?Q?H6xbwlWZz9DaEeZv1ECIZ5APJ/svvWbQU6pCYbfRxlUQQyKoYm2MqliQOZ2Z?= =?us-ascii?Q?v8OF5tTOs52Vr4npF7dNI0LE2mH5GNjboG1xdIt6l3Qljk98LPb6UtoMTB36?= =?us-ascii?Q?/mAYgo+7cGH9I728ohBq6PYkxaHuRcVEccm/i3a9O6zjfQRF9PGj2wBTcgXK?= =?us-ascii?Q?l0AHJYo7uwgckOV6ZpZjYdFBC718pr9ttXdI1h9WWqhkEHWyzCO+JKfSoXLk?= =?us-ascii?Q?Xc24Klf+ttEESQ3pK1wMqGfrwNGza+v1u/TNGBjURecIZeU33C6RHK8dZFtD?= =?us-ascii?Q?qN/u+iJix3AO76tUvLfxweQeTKRdeYJptjXJFgWGedxdRBHcSU7oymRebNfu?= =?us-ascii?Q?8oHihnjxuMFkraHSdN41G4Q8Y8YSWj4Z6ZdbHlnuj4w1vtBy+Pt5RPSkHCPK?= =?us-ascii?Q?95GnYUG2r5XeM7wp+CF60ZAc?= X-OriginatorOrg: wavecomp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f60f8f2a-09c5-4b5f-25f2-08d90f535b08 X-MS-Exchange-CrossTenant-AuthSource: MW3PR22MB2299.namprd22.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2021 23:21:33.7312 (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: 875N/3ZMa+jW0LWLJPvLKU6LVpP7FSpJbVc4jvQAtMEb9Kqq3W9R42WgMkFu5lUySZ+8O/LPDrvJ0BIwn21JqXfj6clKsjjHXGX8h8mc3jU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR22MB0462 X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org 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: , X-List-Received-Date: Tue, 04 May 2021 23:21:38 -0000 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