From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id GfYkJhu+kmA8BgAAWB0awg (envelope-from ) for ; Wed, 05 May 2021 11:47:39 -0400 Received: by simark.ca (Postfix, from userid 112) id 8C4EB1F11E; Wed, 5 May 2021 11:47:39 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,RDNS_DYNAMIC, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (ip-8-43-85-97.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 DF8CB1E813 for ; Wed, 5 May 2021 11:47:37 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 06B913851C3A; Wed, 5 May 2021 15:47:37 +0000 (GMT) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2100.outbound.protection.outlook.com [40.107.244.100]) by sourceware.org (Postfix) with ESMTPS id 5E5803857410 for ; Wed, 5 May 2021 15:47:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 5E5803857410 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=XKazXhFCoLsfZrvZ0YF3uvfzEFH8weZfXAZhCWHRnl59+HByCF9KTCGWyka3yyi4RomPBSJDEdytwKN7CRQPEiHjdT+jqc6DHVR40WmL3qoWAng0dho9MQW0r4tyaMjmj6XYH1q1o9Ra7FGaYZbqZ/VlvBabwrPzCiU1u/TBbZr8/UjftF5HEhrLfLlRr7BtQuKL5mWSFt85pWklRjx1o9mcBBQX267BVUhVAR+nbAs39GF2940MTvZW0S8EObDrOcilMjuCE+h8REjkB5uG4xbT7KLhzwSPZXw+UrPVaVN2829QddDXbubhHHURIwqfJGMvAII6oXTnHa1EYhTnHg== 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=GQtEUIBlMeMpIGFx3TfDZzo+y4duAeIIzIP5xTeiaqWOtXu+WcnZKGWJ8J8wO327/q18Nrf/hOJT5sGWurkGPyC30uIKiuKcYBFTc4jNMOpYUWUgWOAgWXdvk+HnSh1dfBEqE+IhFAd2fK/DNkY7YDS6s7aPQWNqsjaxmjDplCAHb5RoobTftOpoSg250DBj0LhQ+sP2VN96Ph7Qf+i7CLXTeQt/WX65n57YTfMrcGG9C3PTuXaDwl2r5ViNeUey5t/dCDinMq5dNJaH0U34w/i54GyRkUpFZSt4q2lF//WQyvWufxOz8IaVj++IR27LiGCXtHBSajS8SBE3mL6YsQ== 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=ed/YlDiz4Prtuo3PzMlFyDrcsDPv4vxpVKiE3oJW10FPk2kqUt17yHuoZrVL9TWxRLaGJkeyCk7GxuZFczclaEiznnZxYqFvumyaMYUsVzhfWYeqXKqcZauK6o6uRnSgvqqlqS/wHiru8bdT3I+D+xMgR0anLpVZVQtGEx1KGMY= 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 MWHPR2201MB1215.namprd22.prod.outlook.com (2603:10b6:301:1f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.38; Wed, 5 May 2021 15:47:31 +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.4108.026; Wed, 5 May 2021 15:47:31 +0000 From: Faraz Shahbazker To: gdb-patches@sourceware.org Subject: [PATCH 1/2] [pr gdb/19447] sim: mips: Only truncate sign extension bits for 32-bit target models Date: Wed, 5 May 2021 21:17:18 +0530 Message-Id: <20210505154719.217542-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: [123.201.54.207] X-ClientProxiedBy: BYAPR05CA0065.namprd05.prod.outlook.com (2603:10b6:a03:74::42) To MW3PR22MB2299.namprd22.prod.outlook.com (2603:10b6:303:47::10) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from frsxps.mipstec.com (123.201.54.207) by BYAPR05CA0065.namprd05.prod.outlook.com (2603:10b6:a03:74::42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.11 via Frontend Transport; Wed, 5 May 2021 15:47:29 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3b106486-1bd0-4aed-7696-08d90fdd176b X-MS-TrafficTypeDiagnostic: MWHPR2201MB1215: 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: 9mB4vkpVAmoBuVX32H0EMDWXwGQ/gY3HY9r1iWqctHpZdfd06EcRTJTL/k1rPz/Mn+LqvzmCgx4VyVComrAFuEUukWyeK1mFArugA0vbHZ67KpXWXB12r0lwHXGFI6SUDTRAPQjlD8ZMSGE8k6fuSKe5JxvvxiR2+9r3OKs6LHlqrWgbomr7rADX3NODYE19YHWWgVUUxQZUeD7SlwhxnG9CgzOY91fy8FZgpiHGWgpHJtI3kr0o5ezJZmZKa1DCMfDeWpMLFgRW526bTPyJTxW/PxQKUxgiqqdL+b2HF/fe6TUx9Ldxn8G5T3xRBPE4xc+1vN1xLJvZjP8ItCGmP1olxqykH1teT+GyMgF90uZPJWVB/eKnNS1zZ4dsPJCao31GpQxLOZqlBy1RCYY5HrGvweGM2DQSE4UIydbjdh7RY5qgA7mhMztz+GUvQblg5uVqbVK7VBaPnym66olBFBrk6sbQtA2MpuzfXIs+VuRquXQeFd/rzDaFxs1cLXoPzV5L/e6W13ILVz5DYht019zxb02hq94lBdpvKm96tjRTNKWKMsuzvGWbhP3CRKljLKwmDDRiqoMsV1jOmFOYn1pHL0UdARq/p/5CQbdozdxNjqOjKET79ut4qjrfivrcy5JS/KxQtTwXOExbnUuPbFcOYDh50HX4j98mnSQ780Ac5pcU2/ET6ayR2iRfuZK4f0E1NEsRsLFjpK8g11nOl+5aAHB0tYoq5M/38wD+ucwgP8QjGLbEiZ+duTxayJxG 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:(346002)(376002)(366004)(396003)(39830400003)(136003)(66946007)(38350700002)(6506007)(38100700002)(16526019)(66556008)(66476007)(86362001)(83380400001)(1076003)(6916009)(26005)(36756003)(8676002)(4326008)(478600001)(316002)(2906002)(6486002)(6666004)(107886003)(966005)(6512007)(8936002)(52116002)(186003)(2616005)(956004)(5660300002)(170073001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?hVmjbTvtA1wkI11quIdOKZD/TQ19NGd27u606tAw9IIpuZmUNZxuYQFYQr+O?= =?us-ascii?Q?DAdVpLTsL1K3WqTl142cREv37tGbR1vHcHB/JRhjZSYz8IzyCjBTOQ4IizN/?= =?us-ascii?Q?NF4v1i9LgqhDb5DsCELCDkbg/9WDM7eUpdwMFLU1CXRi2OTZPtbBPK95vArp?= =?us-ascii?Q?Ms0tPnLmkrjMVY1n7c2jNcVTSOZ2Pb6aVZ5GGg4qyfusmrMVGN3IRrHq4AVi?= =?us-ascii?Q?CXSgq3jYtsd0lwgzLnHs2ZY4VlOgjjQWmeWhrdE//Qa5W+Lc3O376qJSqTqM?= =?us-ascii?Q?q9NsBTyJFfZ5s/gBncGZb798ovjnJdg67KFpWb71Tw2gMvy8giqfexNfMN0t?= =?us-ascii?Q?5sxjthmku5tDm29JS4ohx0Klvu4IrtsJhVsFkchgPwOTpy9C1ouBDJ4VmhM3?= =?us-ascii?Q?I4p8UEsut52ps+N/3kGpGXtxuRIpbrX3xzdbHs2Hac6pZz0s5x0hCLAKkvwa?= =?us-ascii?Q?wm+eoV15PQyNmR4ZTR3vNXXeG9dN8SQjjFJVIb44pachAAaDE9Tw0yD4VBm7?= =?us-ascii?Q?mHJx9Q4RhsYG5H5f3EEhi9HnwdUkf7LQHl1GGvuWh+i/C4ljMLJSbUhRjlP6?= =?us-ascii?Q?ZKpjia3tACHuJOsyFb6g7VRbxBSu1jnedz0IbY+o3B+chXaJpTrPd2CAByJW?= =?us-ascii?Q?IQ/C0aDYZPaC2TnqE9qx/PSZVQ4bLsy+Ac7Are+ZWwJXpPVL4SsBPqx5KWJe?= =?us-ascii?Q?/8sL3oh23HeZCASNAy0NZLoV3XvbR7X1rBA43lo9ceASb3W8AWBNwtAxj0S/?= =?us-ascii?Q?IxiRi/LjptOZv1a6KUgRee/apwxJ37AJRvgfU3MHsdGx/oETZahBgAw5PuAc?= =?us-ascii?Q?vHHdS4RhYCmU/wNDUJ6OWmYreNaTG0s5N23YMy0kGdNRbxiKuTsXOpQoidcs?= =?us-ascii?Q?WGfZGnmHxudESiNzHKTBoxRo2FBut5/VmV2OuYJuMPJ74fhL9PugEZM4TGr1?= =?us-ascii?Q?aEnS8ZILJwVr16fma/n1S/iix1VM5NywFh8xLc7bb/aoz3Wx4VPmC7gWZV2l?= =?us-ascii?Q?k63sbyo3TL6KNWIzWEhd3ZdW6MNRBTvUWDVn2aVZw5snBZAu8ctZYcau34/L?= =?us-ascii?Q?3wHJGbqFewG1KE2lk5loZXO9UTewaZLtFRtTj0EXUuzVHK6nJPzxyjSUs6qN?= =?us-ascii?Q?kZnv1d5KRduBgezOsrMOjQXSLzdjHbXPGGja6OohhdOGlGBDWDwXj4nfFUbt?= =?us-ascii?Q?6kiDSgNgOpYIu2fHvBUqBUEr5c7e3KhZajfY/nAO7vbzKi7H6fydWASCeQcs?= =?us-ascii?Q?KJSE0jAxJTv7Y3NebfC5xqbT+QgAmd+LmglMEMynE7JOto9Hlp0/DTi338t/?= =?us-ascii?Q?LNH0t8kx7M2Z5+N1U0Pp/mWw?= X-OriginatorOrg: wavecomp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3b106486-1bd0-4aed-7696-08d90fdd176b X-MS-Exchange-CrossTenant-AuthSource: MW3PR22MB2299.namprd22.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 May 2021 15:47:30.9711 (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: EXShvRYs52YrhiKCp0eIqMSxyHdlq9FybvNQBOFnZ/HYzgTZBrOCtp1WsYUWYXvULTTOs6wE7SGj2g3Jzxjy2MOctQiWeG+bcYVo4OAvhhU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR2201MB1215 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: Faraz Shahbazker 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