From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id HAzZARwXe2XVWiAAWB0awg (envelope-from ) for ; Thu, 14 Dec 2023 09:54:20 -0500 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=UW/jDq/e; dkim=pass (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=UW/jDq/e; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id EA7AA1E0C3; Thu, 14 Dec 2023 09:54:19 -0500 (EST) Received: from server2.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 ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id D3F111E0AC for ; Thu, 14 Dec 2023 09:54:17 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2BF59386100C for ; Thu, 14 Dec 2023 14:54:17 +0000 (GMT) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on2082.outbound.protection.outlook.com [40.107.8.82]) by sourceware.org (Postfix) with ESMTPS id 067EB3858D20 for ; Thu, 14 Dec 2023 14:54:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 067EB3858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 067EB3858D20 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.8.82 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1702565644; cv=pass; b=vPIjRXrBz7CWqWJqI3VeB0HPIeUr3pZOw+aleq9N0coQo2SQr51GWlPnxcXVFKDG1hiLyFJBb1BhUSAQtO2fe6K1ljcsj4xOrtSqjVxPa3zDG0S9e5/JW9sdGc7osqQZqBNLJrgt/eTbz4Enlnw7J6CBWUvKHiljhFULr4qI6gk= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1702565644; c=relaxed/simple; bh=BjHKBHLVuZWtLYgajMrz3zq7TIZHcABc8fE1O/F1iqg=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:Subject:To:From: MIME-Version; b=dnaaaP0UY7NhBXh5TdbSPf2hU1GMX1BdSY5lSm32MovrQoVuldLzDAE6LWq/8faeeiHk6FZfxf7cNHKhS+RTi1CCSkDydZx9y9x96fBZ+9Hu0R0MNbr11VUjDiJvk9o37IwNfXzo4sDqLB6qwY4W4rUifRvQoew1X/BxuuejTY4= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=W14TP6fY33iCX/3yBUXaTizEWDjpAOqMdKpnX58V7mIQxFnS5j/IxnfxQIQfwUIgK3t/eEkF4Yxc/5+JcBYyedkRHXbuz45k+4M69dzBjL3SY2eho5qrFEvD1llHfB/fF52BB1qZ/Sx4LUbvc4pa/+BVjIcM1CZVkJw8o4NJE52x88Mv6XdWw8o58uL/StPEAAXoe43xtx1WcncusXDA1oaT7NKIUmhrBPyF226UeEBSJRNS0eWk7o9DU/5F1EY4PXx46cqx06hC5ZJLrFlkeX53Yo7Jc6Un566OaOoVe9jdObx6jdXL1L51pJPqOf+KKZrnMqcySEaf3P1XfDB3Gw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=qxoEYSsRxtuPdVwYQSSNjox4h+YGNicZfDElKKg4uKg=; b=UH4qfqQb4l27RwEFsJXWoRfJJ/mDCB1XS99+M+KzHe0vjkzxTq1z5GvV3cruMZdIS0HxNKHS3H51D9KlS+dfjfDwaiglPAdb01NROizLO8VRsV84GXpM2l66S9TNNpkWw+4GbaTXqa5nFUa6mfpXwKsnvUGUbSXqi0lGdvZBSrcWEeGsd/6++8psRsbGMXOcJqtDFRrF/ppttiwiycnPsYGRt152B09bZ5aVi/w7xVT8j6gluwQ7dfU+RN3mm2yT9kmtHe0HL9I7eGiuVW+WtxTlniN9jOJA6Bhu4BvHlCphiFWJA4SlQDJPhM0Y2LDLWoppgMfngei2X0wHbt5+Gg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=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=qxoEYSsRxtuPdVwYQSSNjox4h+YGNicZfDElKKg4uKg=; b=UW/jDq/eTuHzV0OZFr4AnwrhxwzuLBklxlE1DUsyMmyqOsebg+TPWY1dYXZkvNO4w1+27pOKhWjLPWd6pU8Cjn1eeuvashgQRWC6lydNHdaCobl9iqK9WRXye+ZcNfVHEWNCzMiEe+BHy/GaiY06d1+FzdKXJnqWsifetXrGl6g= Received: from DU2PR04CA0282.eurprd04.prod.outlook.com (2603:10a6:10:28c::17) by GVXPR08MB10615.eurprd08.prod.outlook.com (2603:10a6:150:14b::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.28; Thu, 14 Dec 2023 14:53:57 +0000 Received: from DB1PEPF00039230.eurprd03.prod.outlook.com (2603:10a6:10:28c:cafe::e7) by DU2PR04CA0282.outlook.office365.com (2603:10a6:10:28c::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.28 via Frontend Transport; Thu, 14 Dec 2023 14:53:57 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass 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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB1PEPF00039230.mail.protection.outlook.com (10.167.8.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.26 via Frontend Transport; Thu, 14 Dec 2023 14:53:57 +0000 Received: ("Tessian outbound 8289ea11ec17:v228"); Thu, 14 Dec 2023 14:53:57 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 44fe6d83f532a855 X-CR-MTA-TID: 64aa7808 Received: from 843298ac6fd3.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id B1CC132E-D2E5-41F4-9A81-EFF67CD9EED7.1; Thu, 14 Dec 2023 14:53:51 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 843298ac6fd3.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 14 Dec 2023 14:53:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ADa3FwQQgMHdzVfIWqhNThaTrWy3PWjaC8aCSLS5cdJO+pqzd475b2FAIwJStU4DIuKf5nlTqXiOcbejTifC+B3m4bZjexkUz3mK58KvhzbnWMW2Kzyud7M16RWwpPKygu1Of8uDNa9xHCljqpnONm/JeCZPljwePpQYnKQVlRk9NzpNZE5RpmFXMLpDbGEijVlHvRbIWBh7jj/ZgvQvTWyH6HX63QFhyBEoJWfTGtsgRqfzn5ZQuDtzKXx2hLGrjnH8r0m5yq0y5wkP/VGj31dFJ7cd16p6igdKdEolN2USEYmPATZ1UJ8cAzW3IbTals9JQmbxykA/OciZStL5wg== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=qxoEYSsRxtuPdVwYQSSNjox4h+YGNicZfDElKKg4uKg=; b=YVgEQi3D8Snx4aXUTGFrdbsNzY/4J44UCCxNia2vCq9E0KN9B+PrFLovFZZyMQJsDxJFu4dBtthNLvv4LzFv2qP+CCS0k1gUBqAoalfUNbumu9r0gQ0qKx5gKpwiwqldy15v5Fpj24VWwtb6o4eoHp85wuX96g3MQ6P4U2qlCmFBOr4udrbMM/36eLqSwIEQaXmKR9bKDQSODehBwXFxBgVzO/rwGAIJhuGbrKJyNYz0HWLUkOAnJq7QS579pzco2zAjFja5sM1fiREdXnnmzhB2i2nwfo9007M9WivsOGqe+PikGWoyNKoY1FjLP0MeIvYMydAH6xBIsFZWcdR2Aw== 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=qxoEYSsRxtuPdVwYQSSNjox4h+YGNicZfDElKKg4uKg=; b=UW/jDq/eTuHzV0OZFr4AnwrhxwzuLBklxlE1DUsyMmyqOsebg+TPWY1dYXZkvNO4w1+27pOKhWjLPWd6pU8Cjn1eeuvashgQRWC6lydNHdaCobl9iqK9WRXye+ZcNfVHEWNCzMiEe+BHy/GaiY06d1+FzdKXJnqWsifetXrGl6g= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI1PR08MB3919.eurprd08.prod.outlook.com (2603:10a6:803:c4::31) by AS1PR08MB7636.eurprd08.prod.outlook.com (2603:10a6:20b:478::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.28; Thu, 14 Dec 2023 14:53:48 +0000 Received: from VI1PR08MB3919.eurprd08.prod.outlook.com ([fe80::e05e:c012:f1f9:eb51]) by VI1PR08MB3919.eurprd08.prod.outlook.com ([fe80::e05e:c012:f1f9:eb51%4]) with mapi id 15.20.7091.028; Thu, 14 Dec 2023 14:53:48 +0000 Message-ID: <3a1a30a7-1c40-49ba-bbfe-ae2977e0ab92@arm.com> Date: Thu, 14 Dec 2023 14:53:46 +0000 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 21/24] gdb: migrate aarch64 to new gdbarch_pseudo_register_write Content-Language: en-US To: Simon Marchi , gdb-patches@sourceware.org Cc: John Baldwin , "Aktemur, Tankut Baris" References: <20231201162751.741751-1-simon.marchi@efficios.com> <20231201162751.741751-22-simon.marchi@efficios.com> From: Luis Machado In-Reply-To: <20231201162751.741751-22-simon.marchi@efficios.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO4P265CA0139.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2c4::14) To VI1PR08MB3919.eurprd08.prod.outlook.com (2603:10a6:803:c4::31) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI1PR08MB3919:EE_|AS1PR08MB7636:EE_|DB1PEPF00039230:EE_|GVXPR08MB10615:EE_ X-MS-Office365-Filtering-Correlation-Id: 0b8e049a-829b-45a4-9eb7-08dbfcb47fff x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: F6+18APBOmUYdxMtSqH2o4eJZ90URK2qVG6+NEPH7G0X48XQzje5PldTEmG0loM/FELyaMwyo1mZXwLGiGQET5pjMb1FxZ6TBkkdlmVKUDtXfcOmNq1YYQwkR86Vlkmx6+nbOxZapyl+btH0EZN1B/OxKKw5MYFpU2Z2mPowuQ6I0tCljd86JYil+4/QuHl+JB/sjWIBwjkPfuiTKAMvYDRhKwy4929tDKYHDoricueBRZEHM2sGo86NVbBVS6ippmU/ZMqSwHUT5/jkl6aN0Sv7f116i+zYtm3x9KJ4QCUOUSjPKfHhw4OmCzRh5VW9iAwsvLY/ll2eUxt6Y3TT6mNPHlDZiHhtTa+P44ESIkzBDPD0o7w/QKns2ImnpYMlm2Y4nWnRhXFMDz6W3K0X5Gys3UoT12QsX+Ykq6DpVFdi92IlwtbsN2T0vYy+jaaFC9vO3gMM6B3OzJWVSLJeG2u07PIpWWgA+wwxAmYryTrElhQTdm/rqTU6EJ31Ch147GEajviP5BoDfdf/4mrjKen1xSbvC8dpvKHJn0UBDRKrRi3TXYQG6UUwhTIT6QW+7YlYAjCujNNLcF31ToiKrq90rrRVn38Ol7JusN6HI2yxzi231C0FpOP7OBCExhmwYhGzMZfC9/8dThIqMu+7MA== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB3919.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(136003)(376002)(396003)(346002)(366004)(39860400002)(230922051799003)(1800799012)(186009)(64100799003)(451199024)(31686004)(478600001)(6512007)(36756003)(6486002)(26005)(54906003)(66476007)(66556008)(66946007)(38100700002)(2616005)(83380400001)(53546011)(6506007)(31696002)(316002)(44832011)(8676002)(4326008)(8936002)(86362001)(2906002)(41300700001)(5660300002)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS1PR08MB7636 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF00039230.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 145661ff-f1be-4ffb-e7e6-08dbfcb47a90 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Y5JwETkGwxBsdNTkKVehp66nXtgEEtVIY/g5XYIT2jaSFq0yOu3I77TaMPhxLUsm/tJ6R8VcW7l3eIxgmKoJ2Vi2QWKwk8XzjURfdgJPpY9CXoMXspqfvIRUW0St/QfB5kpYuCr8Xbu0gRO50HfMRQGFYutG7j8Sdg/UUuI0wxmga9XjrXQ0vAzx+SgDYBe6I/5SuAKM/wzNRgIfISe5HrAJLL+jKC/uWH8quhnSw1JQbX1Rcn23tA17YzgSUZ2fR0PpVT/ca0mfomw+vR1FlZQRpBCvWkRT+caQ5GL18OpBiSs6FKd/sNljOZqBnYyPcPrTwSOCc56oB1LMwb0grVrkzhPolNbotOp39nkQaSxCYXl+ENIbvgXsNnWzqluOCg1GIfuDlPjIsmakD2SU46oNiXno39JOytjT09mRBdUoGNBNtWqGI7pVOrrAD8BhcEZLOu960diRayF2uG20mBfPyP0+RNcUiRMjsufFOjZqIMBkgacH/J7i0qGbUXWDw2N1ds0ape+3kVQLYZNiXe+qRb1vRiFZ/ZU4vs4+5fPdx5HOvSFj2NUlpdAQMjypSZ1p/YjrerPVaQ4QljF+DXoGfiQtZATpPIqVtiCOHKYpCZnhw/Z8oKdxdmxuLVHeNdNzDE7H+d05VCsp6JjtYSL8JM1owdWYyzPrF4zLhsBShwWQ1f5teDlTUndL+eiir0N9LCQb+M8Um1lUiNTCmXPDvWm/EWEtj6a8nE+VYD5QvpP6HHUHQaDu8cf1rDAWu528bda52t/I+bvJAh90FQ== 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; SFS:(13230031)(4636009)(396003)(346002)(376002)(136003)(39860400002)(230922051799003)(186009)(64100799003)(1800799012)(82310400011)(451199024)(40470700004)(46966006)(36840700001)(31686004)(107886003)(2616005)(31696002)(336012)(53546011)(40460700003)(6512007)(6506007)(356005)(44832011)(40480700001)(83380400001)(36860700001)(81166007)(47076005)(82740400003)(26005)(36756003)(478600001)(6486002)(41300700001)(70206006)(70586007)(8676002)(8936002)(54906003)(316002)(4326008)(86362001)(2906002)(5660300002)(43740500002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Dec 2023 14:53:57.4672 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0b8e049a-829b-45a4-9eb7-08dbfcb47fff 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: DB1PEPF00039230.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB10615 X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org On 12/1/23 16:27, Simon Marchi wrote: > New in v2: > > - Allocate enough space for an SVE register in aarch64_pseudo_write_1 > (i.e. keep the logic that's there before the patch for the local > buffer size) > > Make aarch64 use the new gdbarch_pseudo_register_write. This fixes > writing pseudo registers to non-current frames on this architecture. > > Change-Id: Ic012a0b95ae728d45a7121f77a79d604c23a849e > Reviewed-By: John Baldwin > --- > gdb/aarch64-tdep.c | 128 +++++++++++++++++++++++++-------------------- > 1 file changed, 70 insertions(+), 58 deletions(-) > > diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c > index e3658c2c8e10..a1eab01abb8c 100644 > --- a/gdb/aarch64-tdep.c > +++ b/gdb/aarch64-tdep.c > @@ -3296,32 +3296,35 @@ aarch64_pseudo_read_value (gdbarch *gdbarch, frame_info_ptr next_frame, > /* Helper for aarch64_pseudo_write. */ > > static void > -aarch64_pseudo_write_1 (struct gdbarch *gdbarch, struct regcache *regcache, > - int regnum_offset, int regsize, const gdb_byte *buf) > +aarch64_pseudo_write_1 (gdbarch *gdbarch, frame_info_ptr next_frame, > + int regnum_offset, > + gdb::array_view buf) > { > - unsigned v_regnum = AARCH64_V0_REGNUM + regnum_offset; > + unsigned raw_regnum = AARCH64_V0_REGNUM + regnum_offset; > > /* Enough space for a full vector register. */ > - gdb_byte reg_buf[register_size (gdbarch, AARCH64_V0_REGNUM)]; > + int raw_reg_size = register_size (gdbarch, raw_regnum); > + gdb_byte raw_buf[raw_reg_size]; > static_assert (AARCH64_V0_REGNUM == AARCH64_SVE_Z0_REGNUM); > > /* Ensure the register buffer is zero, we want gdb writes of the > various 'scalar' pseudo registers to behavior like architectural > writes, register width bytes are written the remainder are set to > zero. */ > - memset (reg_buf, 0, register_size (gdbarch, AARCH64_V0_REGNUM)); > + memset (raw_buf, 0, register_size (gdbarch, AARCH64_V0_REGNUM)); > > - memcpy (reg_buf, buf, regsize); > - regcache->raw_write (v_regnum, reg_buf); > + gdb::array_view raw_view (raw_buf, raw_reg_size); > + copy (buf, raw_view.slice (0, buf.size ())); > + put_frame_register (next_frame, raw_regnum, raw_view); > } > > /* Given REGNUM, a SME pseudo-register number, store the bytes from DATA to the > pseudo-register. */ > > static void > -aarch64_sme_pseudo_register_write (struct gdbarch *gdbarch, > - struct regcache *regcache, > - int regnum, const gdb_byte *data) > +aarch64_sme_pseudo_register_write (gdbarch *gdbarch, frame_info_ptr next_frame, > + const int regnum, > + gdb::array_view data) > { > aarch64_gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); > > @@ -3335,33 +3338,39 @@ aarch64_sme_pseudo_register_write (struct gdbarch *gdbarch, > za_offsets offsets = aarch64_za_offsets_from_regnum (gdbarch, regnum); > > /* Fetch the contents of ZA. */ > - size_t svl = sve_vl_from_vq (tdep->sme_svq); > - gdb::byte_vector za (std::pow (svl, 2)); > - regcache->raw_read (tdep->sme_za_regnum, za); > + value *za_value = value_of_register (tdep->sme_za_regnum, next_frame); > > - /* Copy the requested data. */ > - for (int chunks = 0; chunks < offsets.chunks; chunks++) > - { > - const gdb_byte *source = data + chunks * offsets.chunk_size; > - gdb_byte *destination > - = za.data () + offsets.starting_offset + chunks * offsets.stride_size; > + { > + /* Create a view only on the portion of za we want to write. */ > + gdb::array_view za_view > + = za_value->contents_writeable ().slice (offsets.starting_offset); > > - memcpy (destination, source, offsets.chunk_size); > - } > + /* Copy the requested data. */ > + for (int chunks = 0; chunks < offsets.chunks; chunks++) > + { > + gdb::array_view src > + = data.slice (chunks * offsets.chunk_size, offsets.chunk_size); > + gdb::array_view dst > + = za_view.slice (chunks * offsets.stride_size, offsets.chunk_size); > + copy (src, dst); > + } > + } > > /* Write back to ZA. */ > - regcache->raw_write (tdep->sme_za_regnum, za.data ()); > + put_frame_register (next_frame, tdep->sme_za_regnum, > + za_value->contents_raw ()); > } > > /* Implement the "pseudo_register_write" gdbarch method. */ > > static void > -aarch64_pseudo_write (struct gdbarch *gdbarch, struct regcache *regcache, > - int regnum, const gdb_byte *buf) > +aarch64_pseudo_write (gdbarch *gdbarch, frame_info_ptr next_frame, > + const int pseudo_reg_num, > + gdb::array_view buf) > { > aarch64_gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); > > - if (is_w_pseudo_register (gdbarch, regnum)) > + if (is_w_pseudo_register (gdbarch, pseudo_reg_num)) > { > enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); > /* Default offset for little endian. */ > @@ -3371,53 +3380,56 @@ aarch64_pseudo_write (struct gdbarch *gdbarch, struct regcache *regcache, > offset = 4; > > /* Find the correct X register to extract the data from. */ > - int x_regnum = AARCH64_X0_REGNUM + (regnum - tdep->w_pseudo_base); > + int x_regnum = AARCH64_X0_REGNUM + (pseudo_reg_num - tdep->w_pseudo_base); > > /* First zero-out the contents of X. */ > - ULONGEST zero = 0; > - regcache->raw_write (x_regnum, zero); > + gdb_byte bytes[8] {}; > + gdb::array_view bytes_view (bytes); > + copy (buf, bytes_view.slice (offset, 4)); > + > /* Write to the bottom 4 bytes of X. */ > - regcache->raw_write_part (x_regnum, offset, 4, buf); > + put_frame_register (next_frame, x_regnum, bytes_view); > return; > } > - else if (is_sme_pseudo_register (gdbarch, regnum)) > + else if (is_sme_pseudo_register (gdbarch, pseudo_reg_num)) > { > - aarch64_sme_pseudo_register_write (gdbarch, regcache, regnum, buf); > + aarch64_sme_pseudo_register_write (gdbarch, next_frame, pseudo_reg_num, > + buf); > return; > } > > - regnum -= gdbarch_num_regs (gdbarch); > + /* Offset in the "pseudo-register space". */ > + int pseudo_offset = pseudo_reg_num - gdbarch_num_regs (gdbarch); > > - if (regnum >= AARCH64_Q0_REGNUM && regnum < AARCH64_Q0_REGNUM + 32) > - return aarch64_pseudo_write_1 (gdbarch, regcache, > - regnum - AARCH64_Q0_REGNUM, Q_REGISTER_SIZE, > - buf); > + if (pseudo_offset >= AARCH64_Q0_REGNUM > + && pseudo_offset < AARCH64_Q0_REGNUM + 32) > + return aarch64_pseudo_write_1 (gdbarch, next_frame, > + pseudo_offset - AARCH64_Q0_REGNUM, buf); > > - if (regnum >= AARCH64_D0_REGNUM && regnum < AARCH64_D0_REGNUM + 32) > - return aarch64_pseudo_write_1 (gdbarch, regcache, > - regnum - AARCH64_D0_REGNUM, D_REGISTER_SIZE, > - buf); > + if (pseudo_offset >= AARCH64_D0_REGNUM > + && pseudo_offset < AARCH64_D0_REGNUM + 32) > + return aarch64_pseudo_write_1 (gdbarch, next_frame, > + pseudo_offset - AARCH64_D0_REGNUM, buf); > > - if (regnum >= AARCH64_S0_REGNUM && regnum < AARCH64_S0_REGNUM + 32) > - return aarch64_pseudo_write_1 (gdbarch, regcache, > - regnum - AARCH64_S0_REGNUM, S_REGISTER_SIZE, > - buf); > + if (pseudo_offset >= AARCH64_S0_REGNUM > + && pseudo_offset < AARCH64_S0_REGNUM + 32) > + return aarch64_pseudo_write_1 (gdbarch, next_frame, > + pseudo_offset - AARCH64_S0_REGNUM, buf); > > - if (regnum >= AARCH64_H0_REGNUM && regnum < AARCH64_H0_REGNUM + 32) > - return aarch64_pseudo_write_1 (gdbarch, regcache, > - regnum - AARCH64_H0_REGNUM, H_REGISTER_SIZE, > - buf); > + if (pseudo_offset >= AARCH64_H0_REGNUM > + && pseudo_offset < AARCH64_H0_REGNUM + 32) > + return aarch64_pseudo_write_1 (gdbarch, next_frame, > + pseudo_offset - AARCH64_H0_REGNUM, buf); > > - if (regnum >= AARCH64_B0_REGNUM && regnum < AARCH64_B0_REGNUM + 32) > - return aarch64_pseudo_write_1 (gdbarch, regcache, > - regnum - AARCH64_B0_REGNUM, B_REGISTER_SIZE, > - buf); > + if (pseudo_offset >= AARCH64_B0_REGNUM > + && pseudo_offset < AARCH64_B0_REGNUM + 32) > + return aarch64_pseudo_write_1 (gdbarch, next_frame, > + pseudo_offset - AARCH64_B0_REGNUM, buf); > > - if (tdep->has_sve () && regnum >= AARCH64_SVE_V0_REGNUM > - && regnum < AARCH64_SVE_V0_REGNUM + 32) > - return aarch64_pseudo_write_1 (gdbarch, regcache, > - regnum - AARCH64_SVE_V0_REGNUM, > - V_REGISTER_SIZE, buf); > + if (tdep->has_sve () && pseudo_offset >= AARCH64_SVE_V0_REGNUM > + && pseudo_offset < AARCH64_SVE_V0_REGNUM + 32) > + return aarch64_pseudo_write_1 (gdbarch, next_frame, > + pseudo_offset - AARCH64_SVE_V0_REGNUM, buf); > > gdb_assert_not_reached ("regnum out of bound"); > } > @@ -4483,7 +4495,7 @@ aarch64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) > > set_gdbarch_num_pseudo_regs (gdbarch, num_pseudo_regs); > set_gdbarch_pseudo_register_read_value (gdbarch, aarch64_pseudo_read_value); > - set_gdbarch_deprecated_pseudo_register_write (gdbarch, aarch64_pseudo_write); > + set_gdbarch_pseudo_register_write (gdbarch, aarch64_pseudo_write); > set_tdesc_pseudo_register_name (gdbarch, aarch64_pseudo_register_name); > set_tdesc_pseudo_register_type (gdbarch, aarch64_pseudo_register_type); > set_tdesc_pseudo_register_reggroup_p (gdbarch, Approved-By: Luis Machado Tested-By: Luis Machado