]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb: add missing raw register read in aarch64_sme_pseudo_register_write
authorSimon Marchi <simon.marchi@efficios.com>
Fri, 1 Dec 2023 16:27:33 +0000 (11:27 -0500)
committerSimon Marchi <simon.marchi@efficios.com>
Thu, 14 Dec 2023 16:04:49 +0000 (16:04 +0000)
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>
gdb/aarch64-tdep.c

index 5c3b824ed0ad43df77b7d337736b1fde99b9de0b..e3658c2c8e1028e85e80d3e2d878734b9e12223e 100644 (file)
@@ -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++)