BFD: Write Linux core PRSTATUS note into MIPS core file
[deliverable/binutils-gdb.git] / bfd / elf64-mips.c
index d51124b3098874fc9340ea51f591fc9e8dfdd947..af0c01c5410f89e9f5c7b297f615e927665a3b4a 100644 (file)
@@ -4248,6 +4248,45 @@ elf64_mips_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 
   return TRUE;
 }
+
+/* Write Linux core PRSTATUS note into core file.  */
+
+static char *
+elf64_mips_write_core_note (bfd *abfd, char *buf, int *bufsiz, int note_type,
+                            ...)
+{
+  switch (note_type)
+    {
+    default:
+      return NULL;
+
+    case NT_PRPSINFO:
+      BFD_FAIL ();
+      return NULL;
+
+    case NT_PRSTATUS:
+      {
+       char data[480];
+       va_list ap;
+       long pid;
+       int cursig;
+       const void *greg;
+
+       va_start (ap, note_type);
+       memset (data, 0, 112);
+       pid = va_arg (ap, long);
+       bfd_put_32 (abfd, pid, data + 32);
+       cursig = va_arg (ap, int);
+       bfd_put_16 (abfd, cursig, data + 12);
+       greg = va_arg (ap, const void *);
+       memcpy (data + 112, greg, 360);
+       memset (data + 472, 0, 8);
+       va_end (ap);
+       return elfcore_write_note (abfd, buf, bufsiz,
+                                  "CORE", note_type, data, sizeof (data));
+      }
+    }
+}
 \f
 /* ECOFF swapping routines.  These are used when dealing with the
    .mdebug section, which is in the ECOFF debugging format.  */
@@ -4454,6 +4493,9 @@ const struct elf_size_info mips_elf64_size_info =
 #define ELF_COMMONPAGESIZE             0x1000
 #define elf64_bed                      elf64_tradbed
 
+#undef elf_backend_write_core_note
+#define elf_backend_write_core_note    elf64_mips_write_core_note
+
 /* Include the target file again for this target.  */
 #include "elf64-target.h"
 
@@ -4476,4 +4518,6 @@ const struct elf_size_info mips_elf64_size_info =
 #undef elf64_bed
 #define elf64_bed                              elf64_fbsd_tradbed
 
+#undef elf64_mips_write_core_note
+
 #include "elf64-target.h"
This page took 0.025626 seconds and 4 git commands to generate.