Create a pseudo section for the ELF AUXV core dump note on FreeBSD.
authorJohn Baldwin <jhb@FreeBSD.org>
Sun, 12 Jun 2016 19:34:51 +0000 (12:34 -0700)
committerJohn Baldwin <jhb@FreeBSD.org>
Fri, 24 Jun 2016 17:33:51 +0000 (10:33 -0700)
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
bfd/elf.c

index 4822e30..2cf8b27 100644 (file)
@@ -1,5 +1,10 @@
 2016-06-24  John Baldwin  <jhb@FreeBSD.org>
 
+       * elf.c (elfcore_grok_freebsd_note): Handle NT_FREEBSD_PROCSTAT_AUXV
+       notes.
+
+2016-06-24  John Baldwin  <jhb@FreeBSD.org>
+
        * elf.c (elfcore_grok_note): Remove handling of NT_X86_XSTATE for
        FreeBSD.  Remove case for NT_FREEBSD_THRMISC.
        (elfcore_grok_freebsd_psinfo): New function.
index cfcafaa..cb4de50 100644 (file)
--- 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);