From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2063.outbound.protection.outlook.com [40.107.6.63]) by sourceware.org (Postfix) with ESMTPS id D4384386D61A for ; Tue, 28 Nov 2023 12:35:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D4384386D61A 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 D4384386D61A Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.6.63 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1701174926; cv=pass; b=XB9PHlIAbqzHlsct9wHnF8oH/4CqI8i0p9/cEwNf7zfLd61YCdbrRMfoisAHUEKFL8IzGNwNqpSvm+Aq37UhakZ8nXmNbtfEQLeBJ/ZEnCdJWhpw0f8CR0xHau9yXLLzDrPjFgKmLTh5z7PJQFMNsI95lLAnU2x162wspOOG5Es= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1701174926; c=relaxed/simple; bh=5zksFi8tQY6iM+x9rFCD73+lFrt0f4qJEZi22hUvTbo=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:Subject:To:From: MIME-Version; b=RJ9nl1eT0qSuAo1J5+JXpWxzcz8aFsRuhbxTQHlia2ZZtzMRmEL7FfIaers/kC52YzKWcI9+q16KtNysifqMq27m4cZLgxvtsnkdWhrMulPSPgrjrYPMRLzSHXxrb13WJdr0ZjRywm9I/+Doryepio9wtIAO6K39vm9HsiGHwYM= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=P9+S3yfWiem9MKNOsSjvF1he1wDTEhXH5G3/NEGKbX+n6I1GieKK7OXjpEoDqEJhjckzXfUcs1Ie7pgmL4bNCqWK+UUeXwNqphiEEx97CB90Kt4UJk0tTswyJy3EFTFbeqWfs5q+qxeGrZCvMbWcnSWFySyCl/K+IqPRDXy2LPQWFMK+09kaSg7jfj403IfuwzlCDYH8buQMTSAvY+sK7zKZDCFsxbs5e5nU2aA+Wc/DyY4q2rIRzJehX86UqPmcIoNkJb9qju6/iWQP6HDym1yRwIgRpZDvQmns4F5YlFZl/FOe2rsZy0lpCqomSRYqAt0e+y8QzaSmJ7jZRZE3zg== 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=7ZybHzx8ELUWSkvWdZOQa2pnrgSTmVEIPVe15EMpOes=; b=M0bTW8XN5h7lQGyk5BAGBFxZyIfYeHpdKJ7v1NVOzQnMDsOrucxlLxk5bOVVRIvoMwOlkn2Vf7iyv8Gnt/s+LbgJpbWytyj6F7lnHrbofNHdJxAZhW+yqVqACE/CXvhvgHAE05RiWTr+/pDVZYCtVPJe5fBhyf4PcxFjBqZIG0vtq//xGWiirKM02K1+4IX0sMQk+4+pMLwk1CAJ95/DF65mrOMY4iLObsdVUyEKv24D/5XvG/CZWubi/CAE/JlPjYpwBlPKpVQyQUBXhcNUPB2LmzSX/e5NawooF0Am8Dr+h2DemNA8/k9qhZ+cwnWN/X6KFCJLXB6TGaePeyHXeA== 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=7ZybHzx8ELUWSkvWdZOQa2pnrgSTmVEIPVe15EMpOes=; b=bLIj2VmcoRK6U05sAn1Xq0FTma8QQFIZ75fhAFir5ZmzXK1p3KDLW/zEekUr+fEebJopoZQNl+8r+DE/4XKPxK+fENupkHk5XK5ozehryntvT4jlwsv3tAsMytverqpA/Klvqx8dcMXUVUXm4yUUkRZJXhkizXYESDrVdwOxn1w= Received: from DU7PR01CA0017.eurprd01.prod.exchangelabs.com (2603:10a6:10:50f::19) by AS2PR08MB10125.eurprd08.prod.outlook.com (2603:10a6:20b:649::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7025.29; Tue, 28 Nov 2023 12:35:20 +0000 Received: from DB5PEPF00014B92.eurprd02.prod.outlook.com (2603:10a6:10:50f:cafe::da) by DU7PR01CA0017.outlook.office365.com (2603:10a6:10:50f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7025.27 via Frontend Transport; Tue, 28 Nov 2023 12:35:20 +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 DB5PEPF00014B92.mail.protection.outlook.com (10.167.8.230) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.17 via Frontend Transport; Tue, 28 Nov 2023 12:35:19 +0000 Received: ("Tessian outbound 7671e7ddc218:v228"); Tue, 28 Nov 2023 12:35:19 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 98c6a02a5b6e1583 X-CR-MTA-TID: 64aa7808 Received: from 15f62926b077.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 4F85BF1A-235E-40C2-9074-410DC2EC9382.1; Tue, 28 Nov 2023 12:35:12 +0000 Received: from EUR02-AM0-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 15f62926b077.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 28 Nov 2023 12:35:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JADHVUdCjRYp+QEZ/O69uBop/VK97BKz7+0R0jqHqVhHBXYsoUCZMz8EPMbOKLry/1APJjpnvNi285B5izY7ROXZz3z5+2QraiOTB6b0ZB2i4g+kODkreRyp2IpNVmOswYwK4ZXCCTwHf1jlnLMjdoIOxdkP0pTPlzMmmommTQSwU4o1o57Vaxzu7O3cesQBqc5B7bJQ8fd+BgX9ZmQ1pfGLlOikFvkdAZKnPfdj+4anp4gVdJgxdOV/ZchdDAjKYopec9TCsXTJt1KBidd46PT1Vu5mqVgEp4jWRPPT5q9U2UaqcZiJqM2ixH93aOrJOicZyo6yczyXMtcawN4tFg== 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=7ZybHzx8ELUWSkvWdZOQa2pnrgSTmVEIPVe15EMpOes=; b=nrmXapwFCMEiJtI6k7E/QPlF7iOYIhX+4BBBKzoTBYnrVS0Xq9tLvolnsetbEkhLRHN2PiM35YJupRPzomnODguXGywFiDPyjPYCjgAj6YlHPbdBodxyuKdtZn0kbKbS50Q8X+awkai6ooVDW5Lb0/HQL3/SIDfQECj1t+6XVqleOfSsIieR2UaOF+fomeVm3A14UcPVVBu8amkfIupUGg+KWbyrtowxMa3ir494UMklxfwh2RN+3jHdo/qV1V+k9pCsGp23T91yeHbPSO+mInIbgc9M4ahBRe/SJlbGVVM34LrF9+nFeScKw8PIHq/MkYkbIWJToLf3UVfi4ZTm5g== 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=7ZybHzx8ELUWSkvWdZOQa2pnrgSTmVEIPVe15EMpOes=; b=bLIj2VmcoRK6U05sAn1Xq0FTma8QQFIZ75fhAFir5ZmzXK1p3KDLW/zEekUr+fEebJopoZQNl+8r+DE/4XKPxK+fENupkHk5XK5ozehryntvT4jlwsv3tAsMytverqpA/Klvqx8dcMXUVUXm4yUUkRZJXhkizXYESDrVdwOxn1w= 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 DBBPR08MB10697.eurprd08.prod.outlook.com (2603:10a6:10:52a::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.22; Tue, 28 Nov 2023 12:35:10 +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.7025.022; Tue, 28 Nov 2023 12:35:10 +0000 Message-ID: Date: Tue, 28 Nov 2023 12:35:09 +0000 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 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 , Andrew Burgess References: <20231124212656.96801-1-simon.marchi@efficios.com> <20231124212656.96801-22-simon.marchi@efficios.com> From: Luis Machado In-Reply-To: <20231124212656.96801-22-simon.marchi@efficios.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO4P265CA0204.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:318::14) To VI1PR08MB3919.eurprd08.prod.outlook.com (2603:10a6:803:c4::31) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI1PR08MB3919:EE_|DBBPR08MB10697:EE_|DB5PEPF00014B92:EE_|AS2PR08MB10125:EE_ X-MS-Office365-Filtering-Correlation-Id: 99a78b84-9268-47f5-52ab-08dbf00e7bc3 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: CqlfSjs+X4uSlnwnnXLW4EKc219m4V+Ch3wD1RZUqBYE/VfEcRzBrZMgCAey3SZ6kkVC/oHpUqCfpVgk3pudLMjPE6LCLYqc0W8tgpiRse2eGYWUfW6QjRE66dpCCi+QLimvRKm/dzgZfRTcWlUktF/9Pus22ii5inELlVePaEDvimygmKEsmSnf9ciXpFD56GcGRqzXpKL3zxxG5V2EqkiX+kLk1jcPK8CY9PpLKp8grX5YXbjONEXeow+gWEtC8lrI26+BRF4Pl/N4HXsHWXs6XTUJoiz/AoIXgCCWGoopGJSdQ1jzwX6yQKFjOtIWsrokcFKG07b2k9LLERsQeDeV/efYsEWkVb0Nr56T/14g1pHpicuCpeWqGZaiDyvU52mQuCbVjc2FxVWMgkIpsf0OrOmOFd6ewMp8xuSOLP/4tF+G7mqy1vujkvcZkYYK0m1b+iNhJVpi/3NWSlNuhgwojyM5lCvDN/VXTNi7dMf1hTjW+MJZayJhiAfsBkyEXiYdY12CMtLaHMZHWmUOGPKmEFlH7gUuiNXYVICbAkWa12QTMBTbP+r8O0r4i7EFo9dx6Fe994nKKYuF5YgdrFmrxmUP3Dhw1qbIuvOWbQVVMxfG3apkFnWue0zEnAIjuJB6Dvk7OGmAqDT+krdHWw== 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)(376002)(346002)(39860400002)(136003)(366004)(396003)(230922051799003)(451199024)(186009)(1800799012)(64100799003)(2616005)(6512007)(26005)(31686004)(38100700002)(2906002)(83380400001)(53546011)(6506007)(478600001)(6486002)(66946007)(66556008)(66476007)(54906003)(8676002)(4326008)(8936002)(5660300002)(44832011)(31696002)(86362001)(316002)(41300700001)(36756003)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10697 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: DB5PEPF00014B92.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 9a674552-0cb6-4354-912a-08dbf00e760b X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: V+GzkOkWdCtneuaGkZTxMIm7/Vv/wa7+AcdfzzLAT4BoLUGbsB17UiGZyNgbJ/uJ0iWHOXhS4B/Utnx97rthm0EMt+DS3hSHansr6jivBTfWAYTuuVyfEmire43HDVyEC3xDtVLaGnj0rp2/3CMiFklE+qUSkV8N9NwiztaIV+Pz+kWt6Ocm3XDnf78k2UE33QVT5K/O7TmY0hn8Yqh7wdG750bAGzuYHPP51eaI2Bwn9p8JM8psOOvy4MwfnbITX0HtSaN3W+n22Q9A52/ky7HCp7jc89PUNTpfgOw9VwllFjdJKTwMA9sFaRZJj2v78fQoe0zlTem0lQUAxOAUMRtejwnEbItOv4ke8UoxkY5fVJPNosC3D07hANMQUCkxfwboRXinPq/LMb4lLVtSr2+1Pf7FedT9Wx/h1Dl+yAG1M16bUjirNL19OnNg9bxL05idnksnfw+UXrv+88zBUdIayc6BPDMUyNcrxOwtbEaBpYOupaJ4N6IPM1FEFa1BwcxXsBU6iHbcrNfzJ7xEc4/Xv4uQq51hs3obqZDI09DcdVCuYKIHNhcCrsbyujgQ4ts9UqKG6QUljhk0ggdXyFobTgsL1YStx435bwEJSzADVNr0TVFf/FAojJO6kRXtnaxSayjflNSLoZ4ZmhvrMuQg0d+MZcf/EfgKZh/bTe9WeldzRMoUQYhpFfZk/Cv7nd4Yc4c+dkJ1zaVK6TipJFZUHSMjMhwEIdvOYq9Jv4ED+EW2g5r6mjBye+c0WojRIlkPdNYeLvMd4eavNYxtgA== 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)(376002)(39860400002)(346002)(136003)(396003)(230922051799003)(64100799003)(82310400011)(451199024)(1800799012)(186009)(40470700004)(36840700001)(46966006)(336012)(83380400001)(356005)(81166007)(82740400003)(107886003)(2616005)(41300700001)(40460700003)(26005)(47076005)(36860700001)(2906002)(40480700001)(478600001)(6486002)(31696002)(86362001)(36756003)(8936002)(8676002)(4326008)(54906003)(316002)(31686004)(70586007)(70206006)(5660300002)(44832011)(6512007)(53546011)(6506007)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Nov 2023 12:35:19.9507 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 99a78b84-9268-47f5-52ab-08dbf00e7bc3 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: DB5PEPF00014B92.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB10125 X-Spam-Status: No, score=-11.8 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 List-Id: On 11/24/23 21:26, 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 e31e4bea41fc..4d670853bb6b 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]; > gdb_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, The patch itself looks OK to me, but I'm getting some internal errors when running some of the SME core file tests. I need to investigate that a bit more to see what the root cause is. If I revert the series, it works fine.