aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@efficios.com>2023-12-01 11:27:33 -0500
committerSimon Marchi <simon.marchi@efficios.com>2023-12-14 16:04:49 +0000
commit06f02beb8fae22b079ed7c5360c17b3670cbb291 (patch)
treee8efeccf6ac60cb3a13e547997cf6ff3661c5ac4
parent246179eaf681faeba6f49f3cd45b0857a6b42710 (diff)
downloadbinutils-06f02beb8fae22b079ed7c5360c17b3670cbb291.zip
binutils-06f02beb8fae22b079ed7c5360c17b3670cbb291.tar.gz
binutils-06f02beb8fae22b079ed7c5360c17b3670cbb291.tar.bz2
gdb: add missing raw register read in aarch64_sme_pseudo_register_write
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 <jhb@FreeBSD.org> Approved-by: Luis Machado <luis.machado@arm.com>
-rw-r--r--gdb/aarch64-tdep.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c
index 5c3b824..e3658c2 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++)