From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30064.outbound.protection.outlook.com [40.107.3.64]) by sourceware.org (Postfix) with ESMTPS id 2E9C4386181D for ; Mon, 20 Jul 2020 15:31:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 2E9C4386181D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Matthew.Malcomson@arm.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Q+Bt3GY4gPYFVUKjt2dCgIjV5bvbULSAy1lgj8M+DqI=; b=9HT/xtFZlm7Q3nVQRxpq4VxVrYlDqhv810dBBRgOh/F8+fnwA9HcSGMkCzXl7kZY7Z3PlwUGk/g2eBhKAxwBLelTjRsHDTW88lWfHk3CZleEr0Qyp/t/oPL6CFj9XLMkG6mKSd7ncGDlgbAn1B3GKsX0N/76dGB16k0tpuD2u2s= Received: from AM5PR0402CA0003.eurprd04.prod.outlook.com (2603:10a6:203:90::13) by HE1PR0801MB1643.eurprd08.prod.outlook.com (2603:10a6:3:83::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3195.18; Mon, 20 Jul 2020 15:31:45 +0000 Received: from VE1EUR03FT047.eop-EUR03.prod.protection.outlook.com (2603:10a6:203:90:cafe::ee) by AM5PR0402CA0003.outlook.office365.com (2603:10a6:203:90::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3195.17 via Frontend Transport; Mon, 20 Jul 2020 15:31:44 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; sourceware.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; sourceware.org; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT047.mail.protection.outlook.com (10.152.19.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3195.18 via Frontend Transport; Mon, 20 Jul 2020 15:31:44 +0000 Received: ("Tessian outbound 1c27ecaec3d6:v62"); Mon, 20 Jul 2020 15:31:44 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 47285738cf56ce8f X-CR-MTA-TID: 64aa7808 Received: from 95129d3888c2.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id DEEA959D-6DE2-4439-9D7B-9F28A1C4F1FA.1; Mon, 20 Jul 2020 15:31:38 +0000 Received: from EUR01-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 95129d3888c2.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 20 Jul 2020 15:31:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KNqF80ZUaibECqCe/1vgZZhYLKunSVDrU7G6FFptxX7fPD4+mp7aMMiRHo4NS0C0SqKWK4/Afu3vAgl73vrKpbLk9VbLqXaSuBYimZLXfvTohwpdgKeIqxvTpeSiIDCikbBZUyIiDFpnuDdzTGS4lv5e3GiJnvjyDmoATk1+V3/sqM4e7d7dU0z7EH1AeCf0Twdqgw/wU/CAIRMFi/jzQ318tui4+4POt1VS1+m2XvxL+9bnwsUV17DbjZLe56XHRFjy7gt0v1SJ2xFgRf5c7EQ1V6yLeQmCJdjgJ+XzGywdRqMKU8wOF2dnRthfT3jsZE/ZJntVgbt8wZKZMkLkhQ== 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=Q+Bt3GY4gPYFVUKjt2dCgIjV5bvbULSAy1lgj8M+DqI=; b=dlXW8BaIleAkD4gXvuaqh4HEL4iuhQQMpUH1xyitTQp8WJvts8tmbI+E3k4/IHeLeKXUFs8HYskoElYhtBWhA4QN2q5/iuHPq0ziE+x3lCZhKlBFaTqOYIJgt5Z5sVUVY7RwsSR6VSHA+p+7K3JWLfNvNbl98na9vlCp+fW7KWIBKNBeG67p3IB/cM1Ydp8J7sku80KNg6uSMLR4h/fRMLaevgACv7Iq2PHchVlEJv0vx2eDR92ydnN5yZ+cQ5qBoIPIQ9/FetCFuFnnN3VFtTu8EQ2YMAUhIbH+ISR8DO5JENt6m7kFAU0jcXQN10zxNzlXmToShbWeUHmoyHefnQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Q+Bt3GY4gPYFVUKjt2dCgIjV5bvbULSAy1lgj8M+DqI=; b=9HT/xtFZlm7Q3nVQRxpq4VxVrYlDqhv810dBBRgOh/F8+fnwA9HcSGMkCzXl7kZY7Z3PlwUGk/g2eBhKAxwBLelTjRsHDTW88lWfHk3CZleEr0Qyp/t/oPL6CFj9XLMkG6mKSd7ncGDlgbAn1B3GKsX0N/76dGB16k0tpuD2u2s= Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; Received: from AM6PR08MB3157.eurprd08.prod.outlook.com (2603:10a6:209:48::24) by AM6PR08MB5255.eurprd08.prod.outlook.com (2603:10a6:20b:ef::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3195.17; Mon, 20 Jul 2020 15:31:37 +0000 Received: from AM6PR08MB3157.eurprd08.prod.outlook.com ([fe80::5f9:be56:311a:c1dd]) by AM6PR08MB3157.eurprd08.prod.outlook.com ([fe80::5f9:be56:311a:c1dd%3]) with mapi id 15.20.3195.025; Mon, 20 Jul 2020 15:31:37 +0000 Content-Type: multipart/mixed; boundary="===============3929697445344136442==" From: Matthew Malcomson Date: Mon, 20 Jul 2020 12:13:18 +0100 To: Alan Hayward Cc: gdb-patches , nd , Luis Machado References: <9226b8ae-aaea-65c3-3e86-f607b11fd375@linaro.org> <9EACDC38-BB8D-4804-AD19-057E3309819A@arm.com> In-Reply-To: <9EACDC38-BB8D-4804-AD19-057E3309819A@arm.com> Subject: Re: [Patch] GDB: aarch64: Add ability to step over a BR/BLR instruction X-ClientProxiedBy: SN4PR0201CA0056.namprd02.prod.outlook.com (2603:10b6:803:20::18) To AM6PR08MB3157.eurprd08.prod.outlook.com (2603:10a6:209:48::24) Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from e120487-lin.cambridge.arm.com (217.140.106.52) by SN4PR0201CA0056.namprd02.prod.outlook.com (2603:10b6:803:20::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3195.17 via Frontend Transport; Mon, 20 Jul 2020 15:31:34 +0000 X-Originating-IP: [217.140.106.52] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 90bafaf2-6c20-48f5-0030-08d82cc2024c X-MS-TrafficTypeDiagnostic: AM6PR08MB5255:|HE1PR0801MB1643: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:2449;OLM:2449; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: WQYZpEW4As8Tt6dGVdsbla18ZAKrFJ+4om/802vM+Ca1qfHWtYld4pmqwdiuZ6rWXe3A7VDCSIdPHkSbJIJWkQo5ftqmc2jI+niGSoD7IqKTrHqqIOvVUqCDLomkSAIG8fdXAIVJAdPnDoJDWYScwTgZx4GVQ78vqzHQcGXGzjrkNM8ydT0rO/3o5sSODALjkjaAjOTDemuiSAqtzo5xCUXIO9l45P8a7aEifloXjHFb+Zenqg8V7DJlPqf51pMWmnjRZWp/K5FGdb2JObEQ0dbMBn3r3g0Gb4kQlmNmeoj/t85dE8zHTvgMZeWPtv191DpA41VSFX4NhmvfEmkRlauE7GJqLN7lEvbRY6AmDc1lieia2Mu7nMMif7hpHJPelmz938dDSs4Efob6tl1YkNFOqe2k27gBTy4JBFtkXz9q3t2e8eWP9v5zd7QC0PE+GufMYG6Gy9WtHl0zW1zGCg== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR08MB3157.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(376002)(136003)(396003)(346002)(39860400002)(366004)(6486002)(26005)(6636002)(8936002)(478600001)(2906002)(66946007)(9686003)(52536014)(66556008)(66616009)(5660300002)(86362001)(6512007)(53546011)(235185007)(66476007)(6666004)(33964004)(186003)(83380400001)(52116002)(316002)(33656002)(6862004)(8676002)(4326008)(16526019)(44832011)(956004)(54906003)(2004002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: qMSuyoLK/ftfQU3UY9wmidr+7qsw5HlEqybO8V1zLzKr8NkiwtgvM4ialgU3jdD6AdEyg3TeFs872K6bbfI7kK6cdoNfzyRieNZOTVfz3VtNC5IDc2bBotOyENEvZVsVee9qNtjFGE5d6Ws5qJyfQpmvUt0MLXB6nf0Po9/1RBuXHZ2lNkckUbaOF8bs+4qwvT8GdRdLYBhju2p5Spu2Q3z83Qr6AwJA1LZgCtqFlNUqEBtszk6ooLRb8mI6gFinI0AhDynoOJ3QmMikKA9cS2/4m/KeAr3oxp56FrBffnPAmZxxmxDzQLFLEph8DS5iiDkpbkbCW23hheV9n5DKS0cy4W6SAj8MwGxkxT1q3Riziafqbj8pzOjNCUHpTC3nRaOlGVCxDWbFDifas2ymzcAfxWHYjU1ScYp1jkbizGPtSx0sgHvbxFCMrZiNPr+EjnQhPjJyTOsh9Lm6iHonIpnjh/EwWimIlJwjcNbI20s= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB5255 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT047.eop-EUR03.prod.protection.outlook.com X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFTY:; SFS:(4636009)(376002)(346002)(136003)(396003)(39860400002)(46966005)(6486002)(36906005)(4326008)(336012)(478600001)(83380400001)(235185007)(6512007)(2906002)(9686003)(6862004)(8936002)(54906003)(8676002)(5660300002)(70206006)(66616009)(70586007)(316002)(107886003)(956004)(33964004)(82310400002)(6636002)(44832011)(186003)(26005)(16526019)(81166007)(47076004)(82740400003)(33656002)(53546011)(86362001)(356005)(52536014)(6666004)(2004002); DIR:OUT; SFP:1101; X-MS-Office365-Filtering-Correlation-Id-Prvs: 8ae61777-33e4-4d55-6bfb-08d82cc1fd60 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iJ5X5yImubF3Qs/OCFm2TBNfa3mHwjh7p7nPghEoyhK2EOLRVjlX7Ujjmsrca/ZowSB2E0qJVbitVhd9x21yxwnkit2McjH1LnfyqrjiGXi2mOO7M7kU4PyzIlUB723sJLrR13rdXyL0liidiD0F1SXGNnljy08Fey2asrdN1q+wIWuKPZzSra9tgga/SEiFZkAKTNStmRJhaNqzcjuQpx3/tdLgkQrK6Qso5Ry4D9TfPOgFllgB1uGMFy+9EMt6eO5BMvMwLrw7qtbA6035ZlSaBkKcZJa9owfRPok7PZLzD34bQsJ2vjHNH3gxrMiL2qO0luvxNAeF8pooLxt0bF3voOLQKMLR2FwxoOnGUvCSHp2Atq+MNveBGgmsM2WzNXcJijKfTSuCB8Qzlfx5s5PX3x/uGkbqzi5qzbzQ1pGqE7bgjz1gWjpxO5/ddPuzZLaoK7kxPhcG4px93j2rmmZZhLgWvDp3qChSMmQCYvsMEvKuoKtMaTtnJLrc3aOr X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jul 2020 15:31:44.4387 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 90bafaf2-6c20-48f5-0030-08d82cc2024c X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT047.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1643 X-Spam-Status: No, score=-15.7 required=5.0 tests=BAYES_00, DATE_IN_PAST_03_06, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, KAM_SHORT, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY 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: Mon, 20 Jul 2020 15:31:51 -0000 --===============3929697445344136442== Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit > > >> On 3 Jul 2020, at 16:36, Luis Machado wrote: > > >> On 7/3/20 11:55 AM, Matthew Malcomson wrote: > >> Manually tested on AArch64 (it doesn't look like there are tests for > >> displaced stepping on the other instructions that are manually handled, > >> so I figured adding a testcase for BR and BLR would be out of place). > > >> Not out of place, but those just did not get added. A test that exercises displaced stepping over those two instructions would be a good addition. That or some unit testing code to make sure the function handled the instruction in the expected way. > > +1. Was going to write a very similar comment. A test for all the cases would be great. > I've added tests for the BR and BLR instructions rather than for all instructions due to time constraints ... I hope that's OK? > >> ############### Attachment also inlined for ease of reply ############### > >> diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c > >> index 5e7d0d0b8682af04ce4f01fd999d26c9eb459932..640a3e302f8e2b5fac3575e2f37212d40441d318 100644 > >> --- a/gdb/aarch64-tdep.c > >> +++ b/gdb/aarch64-tdep.c > >> @@ -2974,15 +2974,22 @@ aarch64_displaced_step_others (const uint32_t insn, > >> struct aarch64_displaced_step_data *dsd > >> = (struct aarch64_displaced_step_data *) data; > >> - aarch64_emit_insn (dsd->insn_buf, insn); > >> - dsd->insn_count = 1; > >> - > >> - if ((insn & 0xfffffc1f) == 0xd65f0000) > > Maybe the 0xfffffc1f mask belongs in aarch64-insn.h > > >> + uint32_t masked_insn = (insn & 0xfffffc1f); Done. I'm not 100% confident on the approach of the testcase. I tried to make it robust and clear, but may have missed a better approach. (I used an assembly file to have easy control over the exact sequence of instructions, and I think this is the nicest approach even though there are only a few assembly files in the testsuite). ############### Attachment also inlined for ease of reply ############### diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index 5e7d0d0b8682af04ce4f01fd999d26c9eb459932..d247108f53bf045a018b2bf85284088563868ae0 100644 --- a/gdb/aarch64-tdep.c +++ b/gdb/aarch64-tdep.c @@ -2974,15 +2974,22 @@ aarch64_displaced_step_others (const uint32_t insn, struct aarch64_displaced_step_data *dsd = (struct aarch64_displaced_step_data *) data; - aarch64_emit_insn (dsd->insn_buf, insn); - dsd->insn_count = 1; - - if ((insn & 0xfffffc1f) == 0xd65f0000) + uint32_t masked_insn = (insn & CLEAR_Rn_MASK); + if (masked_insn == BLR) { - /* RET */ - dsd->dsc->pc_adjust = 0; + /* Emit a BR to the same register and then update LR to the original + address (similar to aarch64_displaced_step_b). */ + aarch64_emit_insn (dsd->insn_buf, insn & 0xffdfffff); + regcache_cooked_write_unsigned (dsd->regs, AARCH64_LR_REGNUM, + data->insn_addr + 4); } else + aarch64_emit_insn (dsd->insn_buf, insn); + dsd->insn_count = 1; + + if (masked_insn == RET || masked_insn == BR || masked_insn == BLR) + dsd->dsc->pc_adjust = 0; + else dsd->dsc->pc_adjust = 4; } diff --git a/gdb/arch/aarch64-insn.h b/gdb/arch/aarch64-insn.h index 6a63ce9c2005acd6fe018a12c640f1be01751d6b..f261363feefe4e93e155434ba6d3df8e4b994c9f 100644 --- a/gdb/arch/aarch64-insn.h +++ b/gdb/arch/aarch64-insn.h @@ -40,7 +40,9 @@ enum aarch64_opcodes CBNZ = 0x21000000 | B, TBZ = 0x36000000 | B, TBNZ = 0x37000000 | B, + /* BR 1101 0110 0001 1111 0000 00rr rrr0 0000 */ /* BLR 1101 0110 0011 1111 0000 00rr rrr0 0000 */ + BR = 0xd61f0000, BLR = 0xd63f0000, /* RET 1101 0110 0101 1111 0000 00rr rrr0 0000 */ RET = 0xd65f0000, @@ -107,6 +109,14 @@ enum aarch64_opcodes NOP = (0 << 5) | HINT, }; +/* List of useful masks. */ +enum aarch64_masks +{ + /* Used for masking out an Rn argument from an opcode. */ + CLEAR_Rn_MASK = 0xfffffc1f, +}; + + /* Representation of a general purpose register of the form xN or wN. This type is used by emitting functions that take registers as operands. */ diff --git a/gdb/testsuite/gdb.arch/aarch64-disp-stepping.exp b/gdb/testsuite/gdb.arch/aarch64-disp-stepping.exp new file mode 100644 index 0000000000000000000000000000000000000000..54eae61358c084d9342318591b7dbc57aa265ee4 --- /dev/null +++ b/gdb/testsuite/gdb.arch/aarch64-disp-stepping.exp @@ -0,0 +1,65 @@ +# Copyright 2020 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# This file is part of the gdb testsuite. + +# Test displaced stepping over BR and BLR instructions. + +if {![is_aarch64_target]} { + verbose "Skipping ${gdb_test_file_name}." + return +} + +standard_testfile ".s" +if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] } { + return -1 +} + +gdb_breakpoint "*blr_teststart" +gdb_breakpoint "*blr_testcheck" +gdb_breakpoint "*br_teststart" +gdb_breakpoint "*br_testcheck" + + +# Test for displaced stepping over the BLR instruction. +gdb_test "run" \ + "Starting program.*Breakpoint $decimal.*" \ + "Run until BLR test start" + +set expected_lr [get_hexadecimal_valueof "\$pc + 4" 0] +gdb_test "print/x \$x0" \ + ".. = 0x0" \ + "Ensure x0 is 0 before BLR test." + +gdb_continue_to_breakpoint "BLR test check" + +gdb_test "print/x \$lr == $expected_lr" \ + ".. = 0x1" \ + "Ensure LR is set to just after BLR." +gdb_test "print/x \$x0" \ + ".. = 0x1" \ + "Ensure x0 is 1 after BLR test." + + +# Test for displaced stepping over the BR instruction. +gdb_continue_to_breakpoint "BR test start" + +gdb_test "print/x \$x0" \ + ".. = 0x0" \ + "Ensure x0 is 0 before BR test." +gdb_continue_to_breakpoint "BR test check" +gdb_test "print/x \$x0" \ + ".. = 0x1" \ + "Ensure x0 is 1 after BR test." diff --git a/gdb/testsuite/gdb.arch/aarch64-disp-stepping.s b/gdb/testsuite/gdb.arch/aarch64-disp-stepping.s new file mode 100644 index 0000000000000000000000000000000000000000..fb67333271e649388a613fb9558f39ff30297697 --- /dev/null +++ b/gdb/testsuite/gdb.arch/aarch64-disp-stepping.s @@ -0,0 +1,92 @@ +// Instructions not yet tested. +// - B +// - BL +// - B.COND +// - CBZ +// - CBNZ +// - TBZ +// - TBNZ +// - ADR +// - ADRP +// - LDR (literal) +// - RET + +// Function testing stepping over BLR instruction. + .text + .align 2 + .global test_blr_stepping + .type test_blr_stepping, %function +test_blr_stepping: + .cfi_startproc + // x2 Stores the old LR. + mov x2,x30 + // x0 is the indicator value to show whether the jump happened. + mov x0, #0 + // Load the jump position into register x1 + movz x1, :abs_g3:.LJUMPPOS + movk x1, :abs_g2_nc:.LJUMPPOS + movk x1, :abs_g1_nc:.LJUMPPOS + movk x1, :abs_g0_nc:.LJUMPPOS +blr_teststart: + blr x1 + b blr_testcheck +.LJUMPPOS: + mov x0, #1 +blr_testcheck: + // Put the old LR value back into the LR register. + // Do this for both successful jump and unsuccessful jump since the LR + // will have changed both times and we want the program to continue + // properly both times. + mov x30, x2 + ret + .cfi_endproc + .size test_blr_stepping, .-test_blr_stepping + + +// Function testing stepping over BR instruction. + .text + .align 2 + .global test_br_stepping + .type test_br_stepping, %function +test_br_stepping: + .cfi_startproc + // x0 is the indicator value to show whether the jump happened. + mov x0, #0 + // Load the jump position into register x1 + movz x1, :abs_g3:.LJUMPPOS2 + movk x1, :abs_g2_nc:.LJUMPPOS2 + movk x1, :abs_g1_nc:.LJUMPPOS2 + movk x1, :abs_g0_nc:.LJUMPPOS2 +br_teststart: + br x1 + b br_testcheck +.LJUMPPOS2: + mov x0, #1 +br_testcheck: + ret + .cfi_endproc + .size test_br_stepping, .-test_br_stepping + + + +// Main function calling all test functions above. + .text + .align 2 + .global main + .type main, %function +main: + .cfi_startproc + stp x29, x30, [sp, -16]! + .cfi_def_cfa_offset 16 + .cfi_offset 29, -16 + .cfi_offset 30, -8 + bl test_blr_stepping + bl test_br_stepping + ldp x29, x30, [sp], 16 + .cfi_restore 30 + .cfi_restore 29 + .cfi_def_cfa_offset 0 + ret + .cfi_endproc + .size main, .-main + .section .note.GNU-stack,"",@progbits --===============3929697445344136442== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="blr-patch.patch" ZGlmZiAtLWdpdCBhL2dkYi9hYXJjaDY0LXRkZXAuYyBiL2dkYi9hYXJjaDY0LXRkZXAuYwppbmRl eCA1ZTdkMGQwYjg2ODJhZjA0Y2U0ZjAxZmQ5OTlkMjZjOWViNDU5OTMyLi5kMjQ3MTA4ZjUzYmYw NDVhMDE4YjJiZjg1Mjg0MDg4NTYzODY4YWUwIDEwMDY0NAotLS0gYS9nZGIvYWFyY2g2NC10ZGVw LmMKKysrIGIvZ2RiL2FhcmNoNjQtdGRlcC5jCkBAIC0yOTc0LDE1ICsyOTc0LDIyIEBAIGFhcmNo NjRfZGlzcGxhY2VkX3N0ZXBfb3RoZXJzIChjb25zdCB1aW50MzJfdCBpbnNuLAogICBzdHJ1Y3Qg YWFyY2g2NF9kaXNwbGFjZWRfc3RlcF9kYXRhICpkc2QKICAgICA9IChzdHJ1Y3QgYWFyY2g2NF9k aXNwbGFjZWRfc3RlcF9kYXRhICopIGRhdGE7CiAKLSAgYWFyY2g2NF9lbWl0X2luc24gKGRzZC0+ aW5zbl9idWYsIGluc24pOwotICBkc2QtPmluc25fY291bnQgPSAxOwotCi0gIGlmICgoaW5zbiAm IDB4ZmZmZmZjMWYpID09IDB4ZDY1ZjAwMDApCisgIHVpbnQzMl90IG1hc2tlZF9pbnNuID0gKGlu c24gJiBDTEVBUl9Sbl9NQVNLKTsKKyAgaWYgKG1hc2tlZF9pbnNuID09IEJMUikKICAgICB7Ci0g ICAgICAvKiBSRVQgKi8KLSAgICAgIGRzZC0+ZHNjLT5wY19hZGp1c3QgPSAwOworICAgICAgLyog RW1pdCBhIEJSIHRvIHRoZSBzYW1lIHJlZ2lzdGVyIGFuZCB0aGVuIHVwZGF0ZSBMUiB0byB0aGUg b3JpZ2luYWwKKwkgYWRkcmVzcyAoc2ltaWxhciB0byBhYXJjaDY0X2Rpc3BsYWNlZF9zdGVwX2Ip LiAgKi8KKyAgICAgIGFhcmNoNjRfZW1pdF9pbnNuIChkc2QtPmluc25fYnVmLCBpbnNuICYgMHhm ZmRmZmZmZik7CisgICAgICByZWdjYWNoZV9jb29rZWRfd3JpdGVfdW5zaWduZWQgKGRzZC0+cmVn cywgQUFSQ0g2NF9MUl9SRUdOVU0sCisJCQkJICAgICAgZGF0YS0+aW5zbl9hZGRyICsgNCk7CiAg ICAgfQogICBlbHNlCisgICAgYWFyY2g2NF9lbWl0X2luc24gKGRzZC0+aW5zbl9idWYsIGluc24p OworICBkc2QtPmluc25fY291bnQgPSAxOworCisgIGlmIChtYXNrZWRfaW5zbiA9PSBSRVQgfHwg bWFza2VkX2luc24gPT0gQlIgfHwgbWFza2VkX2luc24gPT0gQkxSKQorICAgIGRzZC0+ZHNjLT5w Y19hZGp1c3QgPSAwOworICBlbHNlCiAgICAgZHNkLT5kc2MtPnBjX2FkanVzdCA9IDQ7CiB9CiAK ZGlmZiAtLWdpdCBhL2dkYi9hcmNoL2FhcmNoNjQtaW5zbi5oIGIvZ2RiL2FyY2gvYWFyY2g2NC1p bnNuLmgKaW5kZXggNmE2M2NlOWMyMDA1YWNkNmZlMDE4YTEyYzY0MGYxYmUwMTc1MWQ2Yi4uZjI2 MTM2M2ZlZWZlNGU5M2UxNTU0MzRiYTZkM2RmOGU0Yjk5NGM5ZiAxMDA2NDQKLS0tIGEvZ2RiL2Fy Y2gvYWFyY2g2NC1pbnNuLmgKKysrIGIvZ2RiL2FyY2gvYWFyY2g2NC1pbnNuLmgKQEAgLTQwLDcg KzQwLDkgQEAgZW51bSBhYXJjaDY0X29wY29kZXMKICAgQ0JOWiAgICAgICAgICAgID0gMHgyMTAw MDAwMCB8IEIsCiAgIFRCWiAgICAgICAgICAgICA9IDB4MzYwMDAwMDAgfCBCLAogICBUQk5aICAg ICAgICAgICAgPSAweDM3MDAwMDAwIHwgQiwKKyAgLyogQlIgICAgICAgICAgICAgMTEwMSAwMTEw IDAwMDEgMTExMSAwMDAwIDAwcnIgcnJyMCAwMDAwICovCiAgIC8qIEJMUiAgICAgICAgICAgIDEx MDEgMDExMCAwMDExIDExMTEgMDAwMCAwMHJyIHJycjAgMDAwMCAqLworICBCUiAgICAgICAgICAg ICAgPSAweGQ2MWYwMDAwLAogICBCTFIgICAgICAgICAgICAgPSAweGQ2M2YwMDAwLAogICAvKiBS RVQgICAgICAgICAgICAxMTAxIDAxMTAgMDEwMSAxMTExIDAwMDAgMDByciBycnIwIDAwMDAgKi8K ICAgUkVUICAgICAgICAgICAgID0gMHhkNjVmMDAwMCwKQEAgLTEwNyw2ICsxMDksMTQgQEAgZW51 bSBhYXJjaDY0X29wY29kZXMKICAgTk9QICAgICAgICAgICAgID0gKDAgPDwgNSkgfCBISU5ULAog fTsKIAorLyogTGlzdCBvZiB1c2VmdWwgbWFza3MuICAqLworZW51bSBhYXJjaDY0X21hc2tzCit7 CisgIC8qIFVzZWQgZm9yIG1hc2tpbmcgb3V0IGFuIFJuIGFyZ3VtZW50IGZyb20gYW4gb3Bjb2Rl LiAgKi8KKyAgQ0xFQVJfUm5fTUFTSyA9IDB4ZmZmZmZjMWYsCit9OworCisKIC8qIFJlcHJlc2Vu dGF0aW9uIG9mIGEgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVyIG9mIHRoZSBmb3JtIHhOIG9yIHdO LgogCiAgICBUaGlzIHR5cGUgaXMgdXNlZCBieSBlbWl0dGluZyBmdW5jdGlvbnMgdGhhdCB0YWtl IHJlZ2lzdGVycyBhcyBvcGVyYW5kcy4gICovCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5hcmNoL2FhcmNoNjQtZGlzcC1zdGVwcGluZy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNo L2FhcmNoNjQtZGlzcC1zdGVwcGluZy5leHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRlYWU2MTM1OGMwODRkOTM0 MjMxODU5MWI3ZGJjNTdhYTI2NWVlNAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmFyY2gvYWFyY2g2NC1kaXNwLXN0ZXBwaW5nLmV4cApAQCAtMCwwICsxLDY1IEBACisjIENv cHlyaWdodCAyMDIwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKyMKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3VpdGUuCisK KyMgVGVzdCBkaXNwbGFjZWQgc3RlcHBpbmcgb3ZlciBCUiBhbmQgQkxSIGluc3RydWN0aW9ucy4K KworaWYgeyFbaXNfYWFyY2g2NF90YXJnZXRdfSB7CisgICAgdmVyYm9zZSAiU2tpcHBpbmcgJHtn ZGJfdGVzdF9maWxlX25hbWV9LiIKKyAgICByZXR1cm4KK30KKworc3RhbmRhcmRfdGVzdGZpbGUg Ii5zIgoraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAiZmFpbGVkIHRvIHByZXBhcmUiICR7dGVz dGZpbGV9ICR7c3JjZmlsZX1dIH0geworICAgIHJldHVybiAtMQorfQorCitnZGJfYnJlYWtwb2lu dCAiKmJscl90ZXN0c3RhcnQiCitnZGJfYnJlYWtwb2ludCAiKmJscl90ZXN0Y2hlY2siCitnZGJf YnJlYWtwb2ludCAiKmJyX3Rlc3RzdGFydCIKK2dkYl9icmVha3BvaW50ICIqYnJfdGVzdGNoZWNr IgorCisKKyMgVGVzdCBmb3IgZGlzcGxhY2VkIHN0ZXBwaW5nIG92ZXIgdGhlIEJMUiBpbnN0cnVj dGlvbi4KK2dkYl90ZXN0ICJydW4iIFwKKyAgIlN0YXJ0aW5nIHByb2dyYW0uKkJyZWFrcG9pbnQg JGRlY2ltYWwuKiIgXAorICAiUnVuIHVudGlsIEJMUiB0ZXN0IHN0YXJ0IgorCitzZXQgZXhwZWN0 ZWRfbHIgW2dldF9oZXhhZGVjaW1hbF92YWx1ZW9mICJcJHBjICsgNCIgMF0KK2dkYl90ZXN0ICJw cmludC94IFwkeDAiIFwKKyAgIi4uID0gMHgwIiBcCisgICJFbnN1cmUgeDAgaXMgMCBiZWZvcmUg QkxSIHRlc3QuIgorCitnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiQkxSIHRlc3QgY2hlY2si CisKK2dkYl90ZXN0ICJwcmludC94IFwkbHIgPT0gJGV4cGVjdGVkX2xyIiBcCisgICIuLiA9IDB4 MSIgXAorICAiRW5zdXJlIExSIGlzIHNldCB0byBqdXN0IGFmdGVyIEJMUi4iCitnZGJfdGVzdCAi cHJpbnQveCBcJHgwIiBcCisgICIuLiA9IDB4MSIgXAorICAiRW5zdXJlIHgwIGlzIDEgYWZ0ZXIg QkxSIHRlc3QuIgorCisKKyMgVGVzdCBmb3IgZGlzcGxhY2VkIHN0ZXBwaW5nIG92ZXIgdGhlIEJS IGluc3RydWN0aW9uLgorZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIkJSIHRlc3Qgc3RhcnQi CisKK2dkYl90ZXN0ICJwcmludC94IFwkeDAiIFwKKyAgIi4uID0gMHgwIiBcCisgICJFbnN1cmUg eDAgaXMgMCBiZWZvcmUgQlIgdGVzdC4iCitnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiQlIg dGVzdCBjaGVjayIKK2dkYl90ZXN0ICJwcmludC94IFwkeDAiIFwKKyAgIi4uID0gMHgxIiBcCisg ICJFbnN1cmUgeDAgaXMgMSBhZnRlciBCUiB0ZXN0LiIKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gvYWFyY2g2NC1kaXNwLXN0ZXBwaW5nLnMgYi9nZGIvdGVzdHN1aXRlL2dkYi5h cmNoL2FhcmNoNjQtZGlzcC1zdGVwcGluZy5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiNjczMzMyNzFlNjQ5Mzg4 YTYxM2ZiOTU1OGYzOWZmMzAyOTc2OTcKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5hcmNoL2FhcmNoNjQtZGlzcC1zdGVwcGluZy5zCkBAIC0wLDAgKzEsOTIgQEAKKy8vIElu c3RydWN0aW9ucyBub3QgeWV0IHRlc3RlZC4KKy8vIC0gIEIKKy8vIC0gIEJMCisvLyAtICBCLkNP TkQKKy8vIC0gIENCWgorLy8gLSAgQ0JOWgorLy8gLSAgVEJaCisvLyAtICBUQk5aCisvLyAtICBB RFIKKy8vIC0gIEFEUlAKKy8vIC0gIExEUiAobGl0ZXJhbCkKKy8vIC0gIFJFVAorCisvLyBGdW5j dGlvbiB0ZXN0aW5nIHN0ZXBwaW5nIG92ZXIgQkxSIGluc3RydWN0aW9uLgorCS50ZXh0CisJLmFs aWduCTIKKwkuZ2xvYmFsCXRlc3RfYmxyX3N0ZXBwaW5nCisJLnR5cGUJdGVzdF9ibHJfc3RlcHBp bmcsICVmdW5jdGlvbgordGVzdF9ibHJfc3RlcHBpbmc6CisJLmNmaV9zdGFydHByb2MKKwkvLyB4 MiBTdG9yZXMgdGhlIG9sZCBMUi4KKwltb3YJeDIseDMwCisJLy8geDAgaXMgdGhlIGluZGljYXRv ciB2YWx1ZSB0byBzaG93IHdoZXRoZXIgdGhlIGp1bXAgaGFwcGVuZWQuCisJbW92CXgwLCAjMAor CS8vIExvYWQgdGhlIGp1bXAgcG9zaXRpb24gaW50byByZWdpc3RlciB4MQorCW1vdnoJeDEsIDph YnNfZzM6LkxKVU1QUE9TCisJbW92awl4MSwgOmFic19nMl9uYzouTEpVTVBQT1MKKwltb3ZrCXgx LCA6YWJzX2cxX25jOi5MSlVNUFBPUworCW1vdmsJeDEsIDphYnNfZzBfbmM6LkxKVU1QUE9TCiti bHJfdGVzdHN0YXJ0OgorCWJscgl4MQorCWIJYmxyX3Rlc3RjaGVjaworLkxKVU1QUE9TOgorCW1v dgl4MCwgIzEKK2Jscl90ZXN0Y2hlY2s6CisJLy8gUHV0IHRoZSBvbGQgTFIgdmFsdWUgYmFjayBp bnRvIHRoZSBMUiByZWdpc3Rlci4KKwkvLyBEbyB0aGlzIGZvciBib3RoIHN1Y2Nlc3NmdWwganVt cCBhbmQgdW5zdWNjZXNzZnVsIGp1bXAgc2luY2UgdGhlIExSCisJLy8gd2lsbCBoYXZlIGNoYW5n ZWQgYm90aCB0aW1lcyBhbmQgd2Ugd2FudCB0aGUgcHJvZ3JhbSB0byBjb250aW51ZQorCS8vIHBy b3Blcmx5IGJvdGggdGltZXMuCisJbW92CXgzMCwgeDIKKwlyZXQKKwkuY2ZpX2VuZHByb2MKKwku c2l6ZQl0ZXN0X2Jscl9zdGVwcGluZywgLi10ZXN0X2Jscl9zdGVwcGluZworCisKKy8vIEZ1bmN0 aW9uIHRlc3Rpbmcgc3RlcHBpbmcgb3ZlciBCUiBpbnN0cnVjdGlvbi4KKwkudGV4dAorCS5hbGln bgkyCisJLmdsb2JhbAl0ZXN0X2JyX3N0ZXBwaW5nCisJLnR5cGUJdGVzdF9icl9zdGVwcGluZywg JWZ1bmN0aW9uCit0ZXN0X2JyX3N0ZXBwaW5nOgorCS5jZmlfc3RhcnRwcm9jCisJLy8geDAgaXMg dGhlIGluZGljYXRvciB2YWx1ZSB0byBzaG93IHdoZXRoZXIgdGhlIGp1bXAgaGFwcGVuZWQuCisJ bW92CXgwLCAjMAorCS8vIExvYWQgdGhlIGp1bXAgcG9zaXRpb24gaW50byByZWdpc3RlciB4MQor CW1vdnoJeDEsIDphYnNfZzM6LkxKVU1QUE9TMgorCW1vdmsJeDEsIDphYnNfZzJfbmM6LkxKVU1Q UE9TMgorCW1vdmsJeDEsIDphYnNfZzFfbmM6LkxKVU1QUE9TMgorCW1vdmsJeDEsIDphYnNfZzBf bmM6LkxKVU1QUE9TMgorYnJfdGVzdHN0YXJ0OgorCWJyCXgxCisJYglicl90ZXN0Y2hlY2sKKy5M SlVNUFBPUzI6CisJbW92CXgwLCAjMQorYnJfdGVzdGNoZWNrOgorCXJldAorCS5jZmlfZW5kcHJv YworCS5zaXplCXRlc3RfYnJfc3RlcHBpbmcsIC4tdGVzdF9icl9zdGVwcGluZworCisKKworLy8g TWFpbiBmdW5jdGlvbiBjYWxsaW5nIGFsbCB0ZXN0IGZ1bmN0aW9ucyBhYm92ZS4KKwkudGV4dAor CS5hbGlnbgkyCisJLmdsb2JhbAltYWluCisJLnR5cGUJbWFpbiwgJWZ1bmN0aW9uCittYWluOgor CS5jZmlfc3RhcnRwcm9jCisJc3RwCXgyOSwgeDMwLCBbc3AsIC0xNl0hCisJLmNmaV9kZWZfY2Zh X29mZnNldCAxNgorCS5jZmlfb2Zmc2V0IDI5LCAtMTYKKwkuY2ZpX29mZnNldCAzMCwgLTgKKwli bAl0ZXN0X2Jscl9zdGVwcGluZworCWJsCXRlc3RfYnJfc3RlcHBpbmcKKwlsZHAJeDI5LCB4MzAs IFtzcF0sIDE2CisJLmNmaV9yZXN0b3JlIDMwCisJLmNmaV9yZXN0b3JlIDI5CisJLmNmaV9kZWZf Y2ZhX29mZnNldCAwCisJcmV0CisJLmNmaV9lbmRwcm9jCisJLnNpemUJbWFpbiwgLi1tYWluCisJ LnNlY3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9nYml0cwoK --===============3929697445344136442==--