aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuis Machado <luis.machado@linaro.org>2021-05-21 10:40:32 +0100
committerNick Clifton <nickc@redhat.com>2021-05-21 10:40:32 +0100
commit894982bfccec66a1496785bbef4d46423345b8c8 (patch)
treeb1cc82e6ce9f4bab68f9aa2e30146ca5b73ab124
parent75b969ccb1b05c3fbcecb0b6bb392d7448ce7286 (diff)
downloadbinutils-894982bfccec66a1496785bbef4d46423345b8c8.zip
binutils-894982bfccec66a1496785bbef4d46423345b8c8.tar.gz
binutils-894982bfccec66a1496785bbef4d46423345b8c8.tar.bz2
[AArch64] MTE corefile support
bfd * elf.c (elfcore_make_memtag_note_section): New function. (elfcore_grok_note): Handle NT_MEMTAG note types. binutils* readelf.c (get_note_type): Handle NT_MEMTAG note types. include * elf/common.h (NT_MEMTAG): New constant. (NT_MEMTAG_TYPE_AARCH_MTE): New constant.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf.c19
-rw-r--r--binutils/ChangeLog4
-rw-r--r--binutils/readelf.c2
-rw-r--r--include/ChangeLog5
-rw-r--r--include/elf/common.h6
6 files changed, 41 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 2ad7803..b614bd4 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2021-05-21 Luis Machado <luis.machado@linaro.org>
+
+ * elf.c (elfcore_make_memtag_note_section): New function.
+ (elfcore_grok_note): Handle NT_MEMTAG note types.
+
2021-05-20 Andrew Burgess <andrew.burgess@embecosm.com>
* section.c (bfd_get_section_by_name): Return NULL if name is
diff --git a/bfd/elf.c b/bfd/elf.c
index 8ed1623..a4cfaf1 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -9597,6 +9597,23 @@ elfcore_make_auxv_note_section (bfd *abfd, Elf_Internal_Note *note,
return true;
}
+static bool
+elfcore_make_memtag_note_section (bfd *abfd, Elf_Internal_Note *note,
+ size_t offs)
+{
+ asection *sect = bfd_make_section_anyway_with_flags (abfd, ".memtag",
+ SEC_HAS_CONTENTS);
+
+ if (sect == NULL)
+ return false;
+
+ sect->size = note->descsz - offs;
+ sect->filepos = note->descpos + offs;
+ sect->alignment_power = 1 + bfd_get_arch_size (abfd) / 32;
+
+ return true;
+}
+
/* prstatus_t exists on:
solaris 2.5+
linux 2.[01] + glibc
@@ -10657,6 +10674,8 @@ elfcore_grok_note (bfd *abfd, Elf_Internal_Note *note)
return elfcore_make_note_pseudosection (abfd, ".note.linuxcore.siginfo",
note);
+ case NT_MEMTAG:
+ return elfcore_make_memtag_note_section (abfd, note, 0);
}
}
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 1795f41..b765188 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,7 @@
+2021-05-21 Luis Machado <luis.machado@linaro.org>
+
+ * readelf.c (get_note_type): Handle NT_MEMTAG note types.
+
2021-05-19 Eli Schwartz <eschwartz@archlinux.org>
* dwarf.c (ENABLE_CHECKING): Define to 0 if not previously set.
diff --git a/binutils/readelf.c b/binutils/readelf.c
index cf20117..656df64 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -18696,6 +18696,8 @@ get_note_type (Filedata * filedata, unsigned e_type)
return _("NT_SIGINFO (siginfo_t data)");
case NT_FILE:
return _("NT_FILE (mapped files)");
+ case NT_MEMTAG:
+ return _("NT_MEMTAG (memory tags)");
default:
break;
}
diff --git a/include/ChangeLog b/include/ChangeLog
index e22f3e8..fdb2a7b 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,8 @@
+2021-05-21 Luis Machado <luis.machado@linaro.org>
+
+ * elf/common.h (NT_MEMTAG): New constant.
+ (NT_MEMTAG_TYPE_AARCH_MTE): New constant.
+
2021-05-07 Clément Chigot <clement.chigot@atos.net>
* coff/internal.h (C_DWARF): New define.
diff --git a/include/elf/common.h b/include/elf/common.h
index f36bb0b..234aef0 100644
--- a/include/elf/common.h
+++ b/include/elf/common.h
@@ -685,6 +685,12 @@
/* The range 0xff000000 to 0xffffffff is set aside for notes that don't
originate from any particular operating system. */
#define NT_GDB_TDESC 0xff000000 /* Contains copy of GDB's target description XML. */
+#define NT_MEMTAG 0xff000001 /* Contains a copy of the memory tags. */
+
+/* NT_MEMTAG record types. */
+
+/* ARM-specific NT_MEMTAG types. */
+#define NT_MEMTAG_TYPE_AARCH_MTE 0x400 /* MTE memory tags for AArch64. */
/* Note segments for core files on dir-style procfs systems. */