From patchwork Fri Nov 24 21:26:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 80758 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B36F4385773F for ; Fri, 24 Nov 2023 21:31:20 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from simark.ca (simark.ca [158.69.221.121]) by sourceware.org (Postfix) with ESMTPS id 0D6B13858C2B for ; Fri, 24 Nov 2023 21:31:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0D6B13858C2B Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=efficios.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=efficios.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0D6B13858C2B Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=158.69.221.121 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700861468; cv=none; b=nxwPtPk+yReVgZxUY1ynVSWP5M1dguQDYWJCe+uwBqLYEirmmceDbD/2nzCPJKbOHKWXzXwe/nU2zNyhUT1Ig1VSG5qn9+5Fglr3pD9eNiVWYsLGByjvzaUZCa/9bJmynIQUOqTskfRll25rMmfmGVosrfCnMyBTn/6p1PZ5r8I= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700861468; c=relaxed/simple; bh=jnUs2kBMSHkxNTMx2fR2kNKnfN4xdU9FBxMN77zjM9w=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=JdzNY8ZdSGa30J/X7dWz1gHA++fy21H0SSlED/RHOl+9nO+1awmJPZ2LRP9W7YORLxHpfd0oVZX5bjYiS//5mcSeXQoXjpIIc4LRcVQHLMx7BM3udlcW05JGczRSZF/6kyTcjgxQW/6CfDf9y3OQPMgXN1pWY8HKCZdgBULhtbo= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from smarchi-efficios.internal.efficios.com (192-222-143-198.qc.cable.ebox.net [192.222.143.198]) (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 ESMTPSA id 777CE1E11E; Fri, 24 Nov 2023 16:31:06 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Luis Machado , John Baldwin , Andrew Burgess , Simon Marchi , John Baldwin Subject: [PATCH v2 20/24] gdb: add missing raw register read in aarch64_sme_pseudo_register_write Date: Fri, 24 Nov 2023 16:26:37 -0500 Message-ID: <20231124212656.96801-21-simon.marchi@efficios.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231124212656.96801-1-simon.marchi@efficios.com> References: <20231124212656.96801-1-simon.marchi@efficios.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3496.7 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_NONE, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_SOFTFAIL, TXREP, T_SCC_BODY_TEXT_LINE 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+patchwork=sourceware.org@sourceware.org It seems like the intention here is to read the contents of the ZA register and only write part of it. However, there's no actual read of the ZA register, so it looks like we'll write uninitialized bytes to the target, for the portion of the raw register where we don't write the pseudo register. Add a call to raw_read to fix this. I don't know how to test this though. Change-Id: I7548240bd4324f6a3b729a1ebf7502fae5a46e9e Reviewed-By: John Baldwin --- gdb/aarch64-tdep.c | 1 + 1 file changed, 1 insertion(+) diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index e9f5bdd141c8..e31e4bea41fc 100644 --- a/gdb/aarch64-tdep.c +++ b/gdb/aarch64-tdep.c @@ -3337,6 +3337,7 @@ aarch64_sme_pseudo_register_write (struct gdbarch *gdbarch, /* 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); /* Copy the requested data. */ for (int chunks = 0; chunks < offsets.chunks; chunks++)