AArch64: Add MTE CPU feature check support
authorLuis Machado <luis.machado@linaro.org>
Mon, 15 Jun 2020 16:39:30 +0000 (13:39 -0300)
committerLuis Machado <luis.machado@linaro.org>
Wed, 24 Mar 2021 17:51:10 +0000 (14:51 -0300)
This patch is a preparation for the next patches implementing MTE. It just adds
a HWCAP2 constant for MTE, creates a new generic arch/aarch64-mte-linux.h file
and includes that file in the source files that will use it.

gdb/ChangeLog:

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

* Makefile.in (HFILES_NO_SRCDIR): Add arch/aarch64-mte-linux.h.
* aarch64-linux-nat.c: Include arch/aarch64-mte-linux.h.
* aarch64-linux-tdep.c: Likewise
* arch/aarch64-mte-linux.h: New file.

gdbserver/ChangeLog:

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

* linux-aarch64-low.cc: Include arch/aarch64-mte-linux.h.

gdb/ChangeLog
gdb/Makefile.in
gdb/aarch64-linux-nat.c
gdb/aarch64-linux-tdep.c
gdb/arch/aarch64-mte-linux.h [new file with mode: 0644]
gdbserver/ChangeLog
gdbserver/linux-aarch64-low.cc

index 0ea440dd8d57ce4e36b76d2f0661129620084088..a7d89022010e52179b54b5c704478f9cc8664ee5 100644 (file)
@@ -1,3 +1,10 @@
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+       * Makefile.in (HFILES_NO_SRCDIR): Add arch/aarch64-mte-linux.h.
+       * aarch64-linux-nat.c: Include arch/aarch64-mte-linux.h.
+       * aarch64-linux-tdep.c: Likewise
+       * arch/aarch64-mte-linux.h: New file.
+
 2021-03-24  Luis Machado  <luis.machado@linaro.org>
 
        * remote: Include gdbsupport/selftest.h.
index a6ca5a5365524271a422205958c28777c7ee624b..49202d4653dff2414bff7df82154422c29d25493 100644 (file)
@@ -1474,6 +1474,7 @@ HFILES_NO_SRCDIR = \
        arch/aarch32.h \
        arch/aarch64.h \
        arch/aarch64-insn.h \
+       arch/aarch64-mte-linux.h \
        arch/arc.h \
        arch/arm.h \
        arch/i386.h \
index 0cae91b569c53d4ec1d7f945baedd84995b9f454..424e616b042339823e57ed317ab9b9820ae7efd2 100644 (file)
@@ -50,6 +50,8 @@
 #include "gdb_proc_service.h"
 #include "arch-utils.h"
 
+#include "arch/aarch64-mte-linux.h"
+
 #ifndef TRAP_HWBKPT
 #define TRAP_HWBKPT 0x0004
 #endif
index d8476c907e80cb34af2c2e4a70a1c6e0ba80ed20..a6044ead49f32457cbad7c4fd72504fb69edfe8c 100644 (file)
@@ -45,6 +45,8 @@
 #include "record-full.h"
 #include "linux-record.h"
 
+#include "arch/aarch64-mte-linux.h"
+
 /* Signal frame handling.
 
       +------------+  ^
diff --git a/gdb/arch/aarch64-mte-linux.h b/gdb/arch/aarch64-mte-linux.h
new file mode 100644 (file)
index 0000000..629ed9c
--- /dev/null
@@ -0,0 +1,28 @@
+/* Common Linux target-dependent definitions for AArch64 MTE
+
+   Copyright (C) 2021 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef ARCH_AARCH64_LINUX_H
+#define ARCH_AARCH64_LINUX_H
+
+/* Feature check for Memory Tagging Extension.  */
+#ifndef HWCAP2_MTE
+#define HWCAP2_MTE  (1 << 18)
+#endif
+
+#endif /* ARCH_AARCH64_LINUX_H */
index eefd402fbe93bd95430aaddd46febc7b28217fc5..51c059caf082f729106d9786fe6d9f366af2b931 100644 (file)
@@ -1,3 +1,7 @@
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+       * linux-aarch64-low.cc: Include arch/aarch64-mte-linux.h.
+
 2021-03-24  Luis Machado  <luis.machado@linaro.org>
 
        * server.cc (test_memory_tagging_functions): New function.
index 86c5f069fa1b06212ad7793b58406223636c5f91..7d7da87fdc2708fcba9fe8ae33f3db9331eb0292 100644 (file)
@@ -40,6 +40,7 @@
 
 #include "gdb_proc_service.h"
 #include "arch/aarch64.h"
+#include "arch/aarch64-mte-linux.h"
 #include "linux-aarch32-tdesc.h"
 #include "linux-aarch64-tdesc.h"
 #include "nat/aarch64-sve-linux-ptrace.h"