AArch64: Add MTE register set support for core files
authorLuis Machado <luis.machado@linaro.org>
Tue, 18 Aug 2020 19:21:04 +0000 (16:21 -0300)
committerLuis Machado <luis.machado@linaro.org>
Wed, 24 Mar 2021 17:57:04 +0000 (14:57 -0300)
This patch handles the tagged_addr_ctrl register that is exported when
generating a core file.

gdb/ChangeLog:

2021-03-24  Luis Machado  <luis.machado@linaro.org>

* aarch64-linux-tdep.c
(aarch64_linux_iterate_over_regset_sections): Handle MTE register set.
* aarch64-linux-tdep.h (AARCH64_LINUX_SIZEOF_MTE_REGSET): Define.

gdb/ChangeLog
gdb/aarch64-linux-tdep.c
gdb/aarch64-linux-tdep.h

index 52e0ddeb2b4d1846361f62d85c3956642ee62208..76e905ea497d0291527864e39ad38217155f989c 100644 (file)
@@ -1,3 +1,9 @@
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+       * aarch64-linux-tdep.c
+       (aarch64_linux_iterate_over_regset_sections): Handle MTE register set.
+       * aarch64-linux-tdep.h (AARCH64_LINUX_SIZEOF_MTE_REGSET): Define.
+
 2021-03-24  Luis Machado  <luis.machado@linaro.org>
 
        * aarch64-linux-tdep.c
index 15bbdb253f956a2941a782eda74a6b35b64614e4..9602fc4b29a9e11c9b5a7f6f325fc011cd87de13 100644 (file)
@@ -728,6 +728,26 @@ aarch64_linux_iterate_over_regset_sections (struct gdbarch *gdbarch,
          AARCH64_LINUX_SIZEOF_PAUTH, &aarch64_linux_pauth_regset,
          "pauth registers", cb_data);
     }
+
+  /* Handle MTE registers.  */
+  if (tdep->has_mte ())
+    {
+      /* Create this on the fly in order to handle the variable location.  */
+      const struct regcache_map_entry mte_regmap[] =
+       {
+         { 1, tdep->mte_reg_base, 4},
+         { 0 }
+       };
+
+      const struct regset aarch64_linux_mte_regset =
+       {
+         mte_regmap, regcache_supply_regset, regcache_collect_regset
+       };
+
+      cb (".reg-aarch-mte", AARCH64_LINUX_SIZEOF_MTE_REGSET,
+         AARCH64_LINUX_SIZEOF_MTE_REGSET, &aarch64_linux_mte_regset,
+         "MTE registers", cb_data);
+    }
 }
 
 /* Implement the "core_read_description" gdbarch method.  */
index 84c25172a9b8e3df8d9cf5c1da91a0dfc83d1879..62a6da83494d21558ef05744282bfdc735cb4b6e 100644 (file)
@@ -36,6 +36,9 @@
 /* The pauth regset consists of 2 X sized registers.  */
 #define AARCH64_LINUX_SIZEOF_PAUTH (2 * X_REGISTER_SIZE)
 
+/* The MTE regset consists of a 32-bit register.  */
+#define AARCH64_LINUX_SIZEOF_MTE_REGSET (4)
+
 extern const struct regset aarch64_linux_gregset;
 extern const struct regset aarch64_linux_fpregset;