diff options
author | Luis Machado <luis.machado@linaro.org> | 2021-05-21 10:40:32 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2021-05-21 10:40:32 +0100 |
commit | 894982bfccec66a1496785bbef4d46423345b8c8 (patch) | |
tree | b1cc82e6ce9f4bab68f9aa2e30146ca5b73ab124 | |
parent | 75b969ccb1b05c3fbcecb0b6bb392d7448ce7286 (diff) | |
download | binutils-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/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elf.c | 19 | ||||
-rw-r--r-- | binutils/ChangeLog | 4 | ||||
-rw-r--r-- | binutils/readelf.c | 2 | ||||
-rw-r--r-- | include/ChangeLog | 5 | ||||
-rw-r--r-- | include/elf/common.h | 6 |
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 @@ -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. */ |