From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id ihbAHY0SwmiacT8AWB0awg (envelope-from ) for ; Wed, 10 Sep 2025 20:06:37 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=ZSFZMjS8; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 637CF1E0BA; Wed, 10 Sep 2025 20:06:37 -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,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 38B841E047 for ; Wed, 10 Sep 2025 20:06:36 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D7A743858C5E for ; Thu, 11 Sep 2025 00:06:35 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D7A743858C5E Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=ZSFZMjS8 Received: from mail-pj1-x102b.google.com (mail-pj1-x102b.google.com [IPv6:2607:f8b0:4864:20::102b]) by sourceware.org (Postfix) with ESMTPS id 450263858C53 for ; Thu, 11 Sep 2025 00:03:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 450263858C53 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 450263858C53 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::102b ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1757549004; cv=none; b=lj8hg5XAiZAagsQ5cyeQJzurl+GhpA5cCKnysC0AVUWydBvn47x6eKXuVkrx/DTzvxgyL+qNk1YGCWIo8E8f8vQ8oY2TpV/Xxz2LNPOy0rhfxyUo726wcHM9SiemZ0d6/rSvMr3kkA+qdCQ0ncas1GjjN0ioxqa3GxSCCUlot6Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1757549004; c=relaxed/simple; bh=V+ikASfIp1xGeaWzWtPxFoUGWSV67tvF8gSH5CxON7M=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=wnQdxHDFF77zSH+SMUeg1Cmlny8MDRtlEqS6/AqZkH/9ec64FwFbQHB05nFDpzagcgphamqyhDBn3Jb/O2zhyZXrS3dmUS1mkUq/ZsbDmRltFbARfjJAwq8OwYbnVdagjROE78lc6DiuTFqmV4UeP9PR4P9Mg0MwCGKUtuoMzYQ= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 450263858C53 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-32326e2f0b3so69787a91.2 for ; Wed, 10 Sep 2025 17:03:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1757549003; x=1758153803; darn=sourceware.org; h=mime-version:message-id:date:user-agent:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=X3G8aMUoAAYW17tEc6/tbGh+s4tCv0OcrrOQXALAwkE=; b=ZSFZMjS8Q/zl98ryPQcykk3nJiMX820gYmOGJoMIuZAbyuPyvQSA+olsz0/WzODhzO OPgo3NmgO+iS/tlVXbyoct0F4lLfJ0DRpbIbPjAY6Vy4jt+clTnGvvkUmwLH2hluzHqy f+nf11sZbbXPbBTyqy3JaS6CDAKjlLYugbuTctiFUmaw00L0+H2a3tTCcZWl0SoIV/vN JQtZjD3jMEu9bkCUU6p6qKxjrqlMyYLdYkJAww1Qm8NyjjFZeCX3aEN0NLq+KtTSa5LC q+heK4i8MsXXP3IMDZttzUumLXkhhFqTSj0t7ZQtD4mVa5jp0afdYGzF7C97nQJYolyZ pQsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757549003; x=1758153803; h=mime-version:message-id:date:user-agent:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=X3G8aMUoAAYW17tEc6/tbGh+s4tCv0OcrrOQXALAwkE=; b=Q2exLs7IwQH1hypez9FKh498Vy/ZmQN+x40GY4di3O1PZwhJ7i+blhCTmR1OHUX/Yi IGGF5L0cBFE++Zlh8d5WrG8FQBR4Oa2xbscq1fLsZcp6Au8ubqzMhhifvUphT0cg+tNq TAxkh/5apMAW/MfiiuuFF69BoOoYMo5EVa5hmGOHapCQhF6RdgenEnpYhXtG5lKv9ykg qxXmasyjDgUyadPgnwavcjjUyrLS92qM4FRl0tOFb6a+vlkaSQ6Gtdz6nvTM54U0sMV/ PG51fgsqWHMUNjX8CgtT7XcrVclogPyP5hjqVLtGjyQAr7KpCA/5KsN/i/JlBs/zpOCl FQHA== X-Forwarded-Encrypted: i=1; AJvYcCWtQtm78tgclymfraoXzXz2uhrpWJPfOsdbA+bNw5HN1Mp7EuyNNM4gMMMN8nsQvEDWE9ZFDiusTRTmyw==@sourceware.org X-Gm-Message-State: AOJu0YzYVP92fQrobcoNY+j8P8YbYHcWbqvSeD+0sur/FmP64RJtQVpk 7xfrCf97LXdyCkrgvEQXaX/6vbbUQkyTCo7osROMGYu7unWu1hi00+q3ArxkNkoeP0mNhRWDPDa DsFY+ X-Gm-Gg: ASbGnctj146OJKwfaYd95RJ2aL/XGpWhQn/oUbKTpNTmWhR6pykueeaPrkPesPS3WWH I4MMomnlI3mrSBYGOWJDC7/WsZ6lfRlx2VzXrqY5cYeR2mj3Hh3YUjBaaqwGVZeX87SUI3FMgL3 6N8Wnpf7oK1zDWQyDdhk4UETZcUY5g1LfmRP0avGs3eXKZ9CFDDzHMwhUEObcZYLWfVMSxd4cAR f+ZpAum6qKcPIeF+qcgOKuHhlCgyyKSkQpvlZ94mb8+F5oukKyNXD6KAhjdxMdI1pnH4dEp4vJq Ygddesq5dSMNJpdcF3SIWtUVWWYoCuMJ5/7ICUerPUc3Ks2Cjc7Jng3rwAMJePEuO9sFPh8PyoT y8aK4TZ0HrFF6jPm6a+waRknykVh+DkOk X-Google-Smtp-Source: AGHT+IFVvg6DFJa4eW212+AWxQVfJiBEqcrH2bLnf17gCPzcRzcnGIA4ZDaLh8MXAG6ZScrGr0gUzA== X-Received: by 2002:a17:90b:2f8d:b0:32b:a332:7a0a with SMTP id 98e67ed59e1d1-32d43ee7173mr20395614a91.1.1757549003221; Wed, 10 Sep 2025 17:03:23 -0700 (PDT) Received: from localhost ([2804:14d:7e39:88d6:e23e:713e:98d0:a6b4]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-32dd61ea9e5sm432055a91.4.2025.09.10.17.03.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Sep 2025 17:03:22 -0700 (PDT) From: Thiago Jung Bauermann To: Luis Cc: Ezra.Sitorus@arm.com, gdb-patches@sourceware.org Subject: Re: [RFC PATCH 3/5] gdb/aarch64: signal frame support for fpmr In-Reply-To: <76a288b0-96b6-4ce1-9c86-8340de5281cf@gmail.com> (Luis's message of "Sun, 7 Sep 2025 23:56:02 +0100") References: <20250905131707.77027-1-Ezra.Sitorus@arm.com> <20250905131707.77027-4-Ezra.Sitorus@arm.com> <76a288b0-96b6-4ce1-9c86-8340de5281cf@gmail.com> User-Agent: mu4e 1.12.11; emacs 30.1 Date: Wed, 10 Sep 2025 21:03:20 -0300 Message-ID: <874it94zzr.fsf@linaro.org> MIME-Version: 1.0 Content-Type: text/plain 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 Luis writes: > On 05/09/2025 14:17, Ezra.Sitorus@arm.com wrote: >> From: Ezra Sitorus >> Add support for FPMR in signal frames and restore contents of FPMR. >> Manually validated with Shrinkwrap (Arm FVP). >> --- >> gdb/aarch64-linux-tdep.c | 34 ++++++++++++++++++++++++++++++++++ >> 1 file changed, 34 insertions(+) >> diff --git a/gdb/aarch64-linux-tdep.c b/gdb/aarch64-linux-tdep.c >> index acb650db514..b4911d36410 100644 >> --- a/gdb/aarch64-linux-tdep.c >> +++ b/gdb/aarch64-linux-tdep.c >> @@ -168,6 +168,7 @@ >> #define AARCH64_TPIDR2_MAGIC 0x54504902 >> #define AARCH64_ZT_MAGIC 0x5a544e01 >> #define AARCH64_GCS_MAGIC 0x47435300 >> +#define AARCH64_FPMR_MAGIC 0x46504d52 >> /* Defines for the extra_context that follows an AARCH64_EXTRA_MAGIC. */ >> #define AARCH64_EXTRA_DATAP_OFFSET 8 >> @@ -214,6 +215,9 @@ >> /* features_enabled value offset in the GCS signal frame context. */ >> #define AARCH64_GCS_CONTEXT_FEATURES_ENABLED_OFFSET 16 >> +/* FPMR constants. */ >> +#define AARCH64_FPMR_OFFSET 8 >> + >> /* Holds information about the signal frame. */ >> struct aarch64_linux_sigframe >> { >> @@ -261,6 +265,12 @@ struct aarch64_linux_sigframe >> uint64_t gcspr; >> /* Flags indicating which GCS features are enabled for the thread. */ >> uint64_t gcs_features_enabled; >> + >> + /* True if we have an FPMR entry in the signal context, false otherwise. */ >> + bool fpmr_available = false; >> + /* The Floating Point Mode Register. */ >> + CORE_ADDR fpmr = 0; >> + >> }; >> /* Read an aarch64_ctx, returning the magic value, and setting *SIZE to the >> @@ -577,6 +587,22 @@ aarch64_linux_read_signal_frame_info (const frame_info_ptr &this_frame, >> section += size; >> break; >> } >> + case AARCH64_FPMR_MAGIC: >> + { >> + gdb_byte buf[8]; >> + if (target_read_memory (section + AARCH64_FPMR_OFFSET, >> + buf, 8) != 0) >> + { >> + warning (_("Failed to read the FPMR section address from the" >> + " signal frame context.")); >> + section += size; >> + break; >> + } >> + signal_frame.fpmr = extract_unsigned_integer (buf, 8, byte_order); >> + signal_frame.fpmr_available = true; >> + section += size; >> + break; >> + } >> case AARCH64_EXTRA_MAGIC: >> { >> /* Extra is always the last valid section in reserved and points to >> @@ -740,6 +766,13 @@ aarch64_linux_sigframe_init (const struct tramp_frame *self, >> } >> } >> + /* Handle FPMR. */ >> + if (tdep->has_fpmr () && signal_frame.fpmr_available != 0) >> + { >> + trad_frame_set_reg_value (this_cache, tdep->fpmr_regnum, >> + signal_frame.fpmr); >> + } >> + >> /* Restore the tpidr2 register, if the target supports it and if there is >> an entry for it. */ >> if (signal_frame.tpidr2_section != 0 && tdep->has_tls () >> @@ -792,6 +825,7 @@ aarch64_linux_sigframe_prev_arch (const frame_info_ptr &this_frame, >> aarch64_features features = aarch64_features_from_target_desc (tdesc); >> features.vq = sve_vq_from_vl (signal_frame.vl); >> features.svq = (uint8_t) sve_vq_from_vl (signal_frame.svl); >> + features.fpmr = signal_frame.fpmr_available; > > Unrelated, but looks like we're not handling gcs in aarch64_linux_sigframe_prev_arch. Is > that something we need to do Thiago? It isn't. This method is needed when gdbarch can change from one frame to the next (or previous, rather). In the case of GCS, its state can be enabled or disabled between consecutive frames, but in any case the GCS feature will still be there because its presence only depends on whether AT_HWCAP has the GCS bit set, which doesn't change at runtime. >From what I understood of this patch series, it looks like FPMR works the same way so I think it also doesn't need this change in aarch64_linux_sigframe_prev_arch either. -- Thiago