From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id wQcGMiUOvmiFgzIAWB0awg (envelope-from ) for ; Sun, 07 Sep 2025 18:58:45 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=OyEuH6n9; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id C168B1E0BA; Sun, 07 Sep 2025 18:58:45 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 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 F08481E047 for ; Sun, 07 Sep 2025 18:58:44 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 7DE603858D37 for ; Sun, 7 Sep 2025 22:58:44 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7DE603858D37 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=OyEuH6n9 Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by sourceware.org (Postfix) with ESMTPS id 7CCEA3858C53 for ; Sun, 7 Sep 2025 22:56:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7CCEA3858C53 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7CCEA3858C53 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::329 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1757285776; cv=none; b=Q/VFAMxyJpjzE2A0DIUg5EefktMzuxomKk9A9znBSRuW3Blp2mzRxGVOQKP1YUHgSubI49Et9GBZiCsS0R3137ndYvCo0eQy3I99nGJZckHIXtEvPbgxRprBechNczvIwcHTDNhE/tibnxDpPUgUd/JBVlV6nGW/o13uok3RB+Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1757285776; c=relaxed/simple; bh=QNrZhqrPzKHQ0nTwYjpnoCWkJ4Rj9mkdrYPwW88LBwU=; h=DKIM-Signature:Message-ID:Date:MIME-Version:From:Subject:To; b=wDz2PBWl6bo1Xmrw6hzd1ccLJuPYJWAmCNy33cHH1aVuBRJqEK1RAJm1t3PBnaEmTbGeU1UBZzFtd3nOKPqqh5ohnWe6SHj8iXNWx9f3KiQJ3WInJhiqUo+XsRPazaDVNtwCVdTzTTaLzR5DPZV4k96EOmGSViL0cP/f2+xZAro= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7CCEA3858C53 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-45de64f89a9so2476615e9.1 for ; Sun, 07 Sep 2025 15:56:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757285775; x=1757890575; darn=sourceware.org; h=content-transfer-encoding:in-reply-to:content-language:references :to:subject:from:user-agent:mime-version:date:message-id:from:to:cc :subject:date:message-id:reply-to; bh=VZwocF7ZK/2NJwsv61/u9jgTRFKPuio3NB9l5ber1oY=; b=OyEuH6n9mIpCC+EdLUXfQNLaDlHbgja0fPACIDzCMkdl/VokY3xat2fpdSLt16JsQm Jdg2YJz5oRgJ6WpIsn6Ht8Rc78qASuYn6tu+M1q9jr03YjypWf3Jx4LbZz7OqpUPawyk pOE7g9g2vnv8mUE+w4hSwUgzyDqc38mUTJoQP9AHklugv0aG4dVgS3Apb5sfJRnnO/i8 nFLYrQhcKQM8xBBa2J6FczZQKNmZQ0dTzVx1Vr8HQh5JKa+MiC9s48YldGPsacjvA1/a qNK1+NUYw5QuwcjpcBcYn12NonfLjg6Bu6DC1GWtdsByZtTX25wWpMoGrX/pS2H+6SvA /cxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757285775; x=1757890575; h=content-transfer-encoding:in-reply-to:content-language:references :to:subject:from:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=VZwocF7ZK/2NJwsv61/u9jgTRFKPuio3NB9l5ber1oY=; b=TpDXDiEUKMMAy8T0F2oMADo5P5rx0pg1qLzpHVEJNYBI7wm8ggdPrUP9TEEkaERHcf wfc5T7G1BjiwkUlhHXl56mYGUIZkB9p3sLGiFXICR4aMeAy4U+bpumWHggpBUl942sL9 yCQ3F7oPY0tlaJu+pw9x6IUs7eaEpQwj8UE6CmqCM4dvfmwuMDiz8cScqtsxTjh1rHvu ZYeCXdwkIVllPmkpEood7K0xrB5kDa5YrvfR+egp3xy4oA4Ut3xng9I9//pw+n0XVxec ht6Ivfda5uRTRJ79DmGoq+9TGUV7eBD7D+TL3p0xYIS6k8rLJfQAoryNfn94y7Zcq19r RRBQ== X-Forwarded-Encrypted: i=1; AJvYcCVTsPWFAv/nXKJh9vY5q5GBfRR/jYz/rMCPV6g4+p2Zpnw/3rIdIAG/7dC6vTW7TgfXou3ESz2I8/soBA==@sourceware.org X-Gm-Message-State: AOJu0YzeBmsOcZgBUZFfn+Jp1pxT7hYXGcbOhbVfqKXupXnL2xcPgIFb zUajlcS8NzvSxKTVJqqp4AIyt0CzydoXhNTwocvr5Jw7WCRY9K+tNLb7wI3zlBBC X-Gm-Gg: ASbGncvw4VeXuUrQGsrR/KU1BI+GOwMaV43GRuoAXSaiafIlWaWG7TvGCH3riJzYtFT BFA2qwSL3+xfpBkSU08JKS9dpSL/vBV8AI/ZymIPnu4Lxkte3naEI7OBmvcAP2O5okkvdIPPJQg uBBNvYSDcf/EyufLZ3Y2TaUqd2BWsPaT5vscODp5Wuu0WSUsghZXGFKPkyx01CqQky3c+WnvUl9 GGfIWqYshHZO6oj7qQ2qKqNoNK77eHV2wWSrVM6N0bs8j6bA+EIEWMwrgRnmeixslaqYZmacece V5j3YLo1+vTJe4wTjHlv9Zk/bQy6hIe3ZjH0qWNKTyNZ8d+VFsJwxzTpM9uk4h5647cCnRSaRt+ y4DCUl41hOowioPvbzhiXa5D3bX3V4ujGdxkssswP0fWw+g== X-Google-Smtp-Source: AGHT+IE/XFWGhXgbielzkS2cQk/3zOj5Ly3VdxxC42l5Q/dAr+m/YbFQUKhfO4SZJuWt29edOEUj+w== X-Received: by 2002:a05:6000:40dd:b0:3d8:8f86:7afc with SMTP id ffacd0b85a97d-3e62a10b2f3mr5256464f8f.21.1757285775088; Sun, 07 Sep 2025 15:56:15 -0700 (PDT) Received: from [192.168.0.38] ([86.12.216.189]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3cf276d204asm39604540f8f.24.2025.09.07.15.56.14 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 07 Sep 2025 15:56:14 -0700 (PDT) Message-ID: <8e075148-29b7-4618-be62-beb838724bef@gmail.com> Date: Sun, 7 Sep 2025 23:56:14 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Luis Subject: Re: [RFC PATCH 4/5] gdb/aarch64: core file support for FPMR To: Ezra.Sitorus@arm.com, gdb-patches@sourceware.org References: <20250905131707.77027-1-Ezra.Sitorus@arm.com> <20250905131707.77027-5-Ezra.Sitorus@arm.com> Content-Language: en-US In-Reply-To: <20250905131707.77027-5-Ezra.Sitorus@arm.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit 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 05/09/2025 14:17, Ezra.Sitorus@arm.com wrote: > From: Ezra Sitorus > > Add support for FPMR dumps/reads for core files. > > Manually validated with Shrinkwrap (Arm FVP). > --- > gdb/aarch64-linux-tdep.c | 67 ++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 67 insertions(+) > > diff --git a/gdb/aarch64-linux-tdep.c b/gdb/aarch64-linux-tdep.c > index b4911d36410..731f05bae5a 100644 > --- a/gdb/aarch64-linux-tdep.c > +++ b/gdb/aarch64-linux-tdep.c > @@ -1519,6 +1519,56 @@ aarch64_linux_collect_zt_regset (const struct regset *regset, > AARCH64_SME2_ZT0_SIZE); > } > > +/* Supply register REGNUM from BUF to REGCACHE, using the register map > + in REGSET. If REGNUM is -1, do this for all registers in REGSET. > + If BUF is NULL, set the registers to "unavailable" status. */ > + > +static void > +aarch64_linux_supply_fpmr_regset (const struct regset *regset, > + struct regcache *regcache, > + int regnum, const void *buf, size_t size) > +{ > + /* Read the FPMR note from a core file into the register buffer. */ > + > + /* Make sure the buffer contains at least the expected amount of data we are > + supposed to get. */ > + gdb_assert (size >= sizeof (uint64_t)); > + > + /* Handle an empty buffer. */ > + if (buf == nullptr) > + return regcache->supply_regset (regset, regnum, nullptr, size); > + > + aarch64_gdbarch_tdep *tdep > + = gdbarch_tdep (regcache->arch ()); > + > + /* Supply the ZT0 register contents. */ s/ZT0/FPMR > + regcache->raw_supply (tdep->fpmr_regnum, buf); > +} > + > +/* Collect register REGNUM from REGCACHE to BUF, using the register > + map in REGSET. If REGNUM is -1, do this for all registers in > + REGSET. */ > + > +static void > +aarch64_linux_collect_fpmr_regset (const struct regset *regset, > + const struct regcache *regcache, > + int regnum, void *buf, size_t size) > +{ > + /* Read the FPMR contents from the register buffer into the core > + file section. */ > + > + /* Make sure the buffer can hold the data we need to return. */ > + gdb_assert (size >= sizeof (uint64_t)); > + gdb_assert (buf != nullptr); > + > + aarch64_gdbarch_tdep *tdep > + = gdbarch_tdep (regcache->arch ()); > + > + /* Dump the register cache contents for the FPMR to the buffer. */ > + regcache->collect_regset (regset, tdep->fpmr_regnum, buf, > + sizeof (uint64_t)); > +} > + > /* Implement the "iterate_over_regset_sections" gdbarch method. */ > > static void > @@ -1636,6 +1686,23 @@ aarch64_linux_iterate_over_regset_sections (struct gdbarch *gdbarch, > } > } > > + if (tdep->has_fpmr ()) > + { > + const struct regcache_map_entry fpmr_regmap[] = > + { > + { 1, tdep->fpmr_regnum, sizeof (uint64_t) } > + }; > + > + const struct regset aarch64_linux_fpmr_regset = > + { > + fpmr_regmap, aarch64_linux_supply_fpmr_regset, > + aarch64_linux_collect_fpmr_regset > + }; > + > + cb (".reg-aarch-fpmr", sizeof (uint64_t), sizeof (uint64_t), > + &aarch64_linux_fpmr_regset, "FPMR", cb_data); > + } > + > if (tdep->has_pauth ()) > { > /* Create this on the fly in order to handle the variable location. */ Otherwise I have no further comments. Reviewed-By: Luis Machado