From 3350c5f5de3d2e62dd9de2a76cf2d5d8728d2600 Mon Sep 17 00:00:00 2001 From: John Baldwin Date: Sun, 12 Jun 2016 12:34:51 -0700 Subject: [PATCH] Create a pseudo section for the ELF AUXV core dump note on FreeBSD. The procstat AUXV core dump note in FreeBSD consists of 32-bit integer followed by an array of auxiliary vector entries. bfd/ChangeLog: * elf.c (elfcore_grok_freebsd_note): Handle NT_FREEBSD_PROCSTAT_AUXV notes. --- bfd/ChangeLog | 5 +++++ bfd/elf.c | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 4822e30124..2cf8b27e9d 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2016-06-24 John Baldwin + + * elf.c (elfcore_grok_freebsd_note): Handle NT_FREEBSD_PROCSTAT_AUXV + notes. + 2016-06-24 John Baldwin * elf.c (elfcore_grok_note): Remove handling of NT_X86_XSTATE for diff --git a/bfd/elf.c b/bfd/elf.c index cfcafaad90..cb4de50ac9 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -9663,6 +9663,20 @@ elfcore_grok_freebsd_note (bfd *abfd, Elf_Internal_Note *note) else return TRUE; + case NT_FREEBSD_PROCSTAT_AUXV: + { + asection *sect = bfd_make_section_anyway_with_flags (abfd, ".auxv", + SEC_HAS_CONTENTS); + + if (sect == NULL) + return FALSE; + sect->size = note->descsz - 4; + sect->filepos = note->descpos + 4; + sect->alignment_power = 1 + bfd_get_arch_size (abfd) / 32; + + return TRUE; + } + case NT_X86_XSTATE: if (note->namesz == 8) return elfcore_grok_xstatereg (abfd, note);