From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id MGnuDqZH6mgeeCkAWB0awg (envelope-from ) for ; Sat, 11 Oct 2025 08:03:50 -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=PC6y2smQ; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 1E0DD1E047; Sat, 11 Oct 2025 08:03:50 -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 806451E047 for ; Sat, 11 Oct 2025 08:03:49 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 1B5493857806 for ; Sat, 11 Oct 2025 12:03:49 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1B5493857806 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=PC6y2smQ Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by sourceware.org (Postfix) with ESMTPS id 7F38C385843F for ; Sat, 11 Oct 2025 12:03:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7F38C385843F 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 7F38C385843F Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::32a ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1760184195; cv=none; b=ryutzdc/9gT0RnCyIxjA9NkC1RP8/qu2pMjhoL4+ChPqlPjGOXziOYIRZ/jrFjGIE1VsOrofSKI5Ci1qoTDZQqjoXtG40jr54utaOrK6HXnbPZ9Sk6pUSXTkAZopbE3HOBUdppDhK3NQSkTR56VJqsVIOdQ1j5fRG8VopJphTRo= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1760184195; c=relaxed/simple; bh=gV1yCA+XwmozwJl5+Q1Bc2gEfep6jJiqGdTAqZXtzHY=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=N9saqHJRMM9291BOm4YbWPj/fis7FETPZF52YB9CcRngwxLDn0m+rxnfWWrIbHb2IPZuBLCrOGoJTAKGE160sT6ajFmdeVwpL59Aaht8YmFLCCxdaKrr6/ry19wDf9k32RTroFIMBn7acM2WYBQ1Fx2kT7+8WdlWDqemhSyk6HY= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7F38C385843F Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-46e3a50bc0fso21680585e9.3 for ; Sat, 11 Oct 2025 05:03:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760184194; x=1760788994; darn=sourceware.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=Gh+4vA5xjRC8i5S0VlFmsGW23D1SzsKe0xy0K2J5T2w=; b=PC6y2smQZPtvffF8q2o1EHQ8CpD8mkzQ31FK0Z3+NB1YPfDX8sALZAY9tvByHcztGo +ZKP4whyYcaML/8HR2brRQrx/sI9BBYVZ7KWo58lZp0vFWktUKjHrCUYpmekWRW5cBRx qCMTg80MQdwXRiubfpIAOGdHuOZDaxmMECoesewzxYA9k/FvoNi8q9nM3otBnrlhAjZF FgOpOMC+VFtjeR05mDzL4zlasSeXetX+mFD73z3Y5DNp91rAUHqJvIAK1sQMOTLjm/8F Cpmjj1xfpGNvJXXVzE/w3ngAQ3S/KwKox/983yfWkhTs7W7OkFEUBJKSiXySLVL0/7b6 vMyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760184194; x=1760788994; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Gh+4vA5xjRC8i5S0VlFmsGW23D1SzsKe0xy0K2J5T2w=; b=KX/eZ0mvq/qpBJanOEgny8/B8zF2/0mzFciZ4I1lhGn739cPA1T9BuCz/okQ0BabW7 7q7kK8gpcofuf3hOUdBPfP7uJzLsdi5NlbUes+dpBjIchxumU+f+phAa4z4T7NHrmEkm wNbQ5oXWraVRpv5bCGa7hllD6GX2Nqg9wXGRjTee4ughYZvjSzLyQcahYDX/3IBrpxTv PgGp7hSsacoNXBAdfcQXP3yOn7/+YZBJUblj2n7iXo6b62/G8lxZbijzdcMarqz97jGf ncFjuLynWNu4jLuFiE2eBhWel5RHgbilVXQ/YelB4W6AyRulku7BAlJc64CqFMSVmM0r Ox8w== X-Forwarded-Encrypted: i=1; AJvYcCX1OjWKIpseQMrhJiy7cNtXGZRK4exmp05Weg2BK/gHfDnTE4+RYxxTy3Pa2dTYkOITqvnIIJ9oYVJXUg==@sourceware.org X-Gm-Message-State: AOJu0YyYpemjHffAE4kvuznuPFzOT3glJ76BqORxvE/lc0Qh8U9ozCUj UYkcgiEUwZypUS2/D8GVbys4iUqiKcLNXFypQeGUIT1aUkMOc0qQBF7f X-Gm-Gg: ASbGncvqcDkOUSpNx14cfgNv9mJ9bpeK3CTx4mt5FQuLP4p2lBqQMq1ybOeTci8Pl5r h/lRtNPpGwrhgqRgUEqGUZ3ln8xEUV8TGUEJQJA+VMVaaDhDWUhO5xCeMubT0Rxu/c0MLQMB321 n60xrzhnaLXwsqGIMXAURnfR3kuYIB66X+aGIdoI80MU6n4hJtKg5sb/KhvI9NhAkSpA0Gpbrn9 tO/nLLHlD8CR6vARQX3yzzj711X6Gu0ZQwncr27CPexOU0wLbtCMK75077WkeBNaKNEGmGFyo9o SrYuLq5SlIwT2mdyVfjwv1Qzp32+GH4oqVNwuXWLKZJfUMSbszIQop/RWI3m0AECODUzsiuNo66 cjjxhhEw4ZlqX8g4cPaajKQmWmVcKmAJVDHq46LFrhFpQ2iNftojv9vq8iu5Xwku9 X-Google-Smtp-Source: AGHT+IHsocF5mLFjaYF6bPQYCksZRCeLKxZdqFENW7n9aJIPlLctvbKWusz2W28rf25dixRrTo4IVA== X-Received: by 2002:a05:600d:42a4:b0:46f:b327:31eb with SMTP id 5b1f17b1804b1-46fb3273819mr39261445e9.11.1760184193828; Sat, 11 Oct 2025 05:03:13 -0700 (PDT) Received: from [192.168.0.38] ([86.12.216.189]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46fb32a84edsm54549945e9.4.2025.10.11.05.03.12 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 11 Oct 2025 05:03:13 -0700 (PDT) Message-ID: <81f518af-c2e4-4acc-a807-667d8b79a02b@gmail.com> Date: Sat, 11 Oct 2025 13:03:12 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 4/5] gdb/aarch64: core file support for FPMR Content-Language: en-US To: Ezra.Sitorus@arm.com, gdb-patches@sourceware.org Cc: thiago.bauermann@linaro.org References: <20251007123132.26769-1-Ezra.Sitorus@arm.com> <20251007123132.26769-5-Ezra.Sitorus@arm.com> From: Luis In-Reply-To: <20251007123132.26769-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 07/10/2025 13:31, Ezra.Sitorus@arm.com wrote: > From: Ezra Sitorus > > Add support for FPMR dumps/reads for core files. > --- > Changes from v1->v2: > * Addressed comments/whitespace/formatting issues. > > Ezra > > gdb/aarch64-linux-tdep.c | 66 ++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 66 insertions(+) > > diff --git a/gdb/aarch64-linux-tdep.c b/gdb/aarch64-linux-tdep.c > index e905be40a8d..5b4bc56210f 100644 > --- a/gdb/aarch64-linux-tdep.c > +++ b/gdb/aarch64-linux-tdep.c > @@ -1518,6 +1518,55 @@ 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 FPMR register contents. */ > + 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 > @@ -1635,6 +1684,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. */ Given the FPMR register set only has a single register, do you really need custom supply/collect functions for it? See the example of the MTE register set, where we just provide the register set but use the generic collect/supply functions. I think we could do the same for FPMR here, unless there is a reason for the custom functions, which I'm not seeing at the moment.