Add support to readelf for reading FreeBSD ELF core notes.
authorJohn Baldwin <jhb@FreeBSD.org>
Mon, 14 Dec 2015 06:26:19 +0000 (22:26 -0800)
committerJohn Baldwin <jhb@FreeBSD.org>
Tue, 19 Jan 2016 16:15:08 +0000 (08:15 -0800)
binutils/ChangeLog:

* readelf.c (get_freebsd_elfcore_note_type): New
(process_note): Add support for FreeBSD core notes.

include/ChangeLog:

* elf/common.h (NT_FREEBSD_THRMISC): Define.
(NT_FREEBSD_PROCSTAT_PROC): Define.
(NT_FREEBSD_PROCSTAT_FILES): Define.
(NT_FREEBSD_PROCSTAT_VMMAP): Define.
(NT_FREEBSD_PROCSTAT_GROUPS): Define.
(NT_FREEBSD_PROCSTAT_UMASK): Define.
(NT_FREEBSD_PROCSTAT_RLIMIT): Define.
(NT_FREEBSD_PROCSTAT_OSREL): Define.
(NT_FREEBSD_PROCSTAT_PSSTRINGS): Define.
(NT_FREEBSD_PROCSTAT_AUXV): Define.

binutils/ChangeLog
binutils/readelf.c
include/ChangeLog
include/elf/common.h

index 1db49d241fb35754de2d457b30207da0f7925dfc..16360453dc1b02cbaaa9070ec02b40cc40d3f6c1 100644 (file)
@@ -1,3 +1,8 @@
+2016-01-19  John Baldwin  <jhb@FreeBSD.org>
+
+       * readelf.c (get_freebsd_elfcore_note_type): New
+       (process_note): Add support for FreeBSD core notes.
+
 2016-01-18  Miranda Cupertino  <Cupertino.Miranda@synopsys.com>
            Zissulescu Claudiu  <Claudiu.Zissulescu@synopsys.com>
 
index 73913347de2eaf477dcf5b4faa03a04294756772..01e3923d8522bc6154bee795a534eaaff6de72ec 100644 (file)
@@ -15410,6 +15410,37 @@ process_netbsd_elf_note (Elf_Internal_Note * pnote)
   return 1;
 }
 
+static const char *
+get_freebsd_elfcore_note_type (unsigned e_type)
+{
+  static char buff[64];
+
+  switch (e_type)
+    {
+    case NT_FREEBSD_THRMISC:
+      return _("NT_THRMISC (thrmisc structure)");
+    case NT_FREEBSD_PROCSTAT_PROC:
+      return _("NT_PROCSTAT_PROC (proc data)");
+    case NT_FREEBSD_PROCSTAT_FILES:
+      return _("NT_PROCSTAT_FILES (files data)");
+    case NT_FREEBSD_PROCSTAT_VMMAP:
+      return _("NT_PROCSTAT_VMMAP (vmmap data)");
+    case NT_FREEBSD_PROCSTAT_GROUPS:
+      return _("NT_PROCSTAT_GROUPS (groups data)");
+    case NT_FREEBSD_PROCSTAT_UMASK:
+      return _("NT_PROCSTAT_UMASK (umask data)");
+    case NT_FREEBSD_PROCSTAT_RLIMIT:
+      return _("NT_PROCSTAT_RLIMIT (rlimit data)");
+    case NT_FREEBSD_PROCSTAT_OSREL:
+      return _("NT_PROCSTAT_OSREL (osreldate data)");
+    case NT_FREEBSD_PROCSTAT_PSSTRINGS:
+      return _("NT_PROCSTAT_PSSTRINGS (ps_strings data)");
+    case NT_FREEBSD_PROCSTAT_AUXV:
+      return _("NT_PROCSTAT_AUXV (auxv data)");
+    }
+  return get_note_type (e_type);
+}
+
 static const char *
 get_netbsd_elfcore_note_type (unsigned e_type)
 {
@@ -15659,6 +15690,10 @@ process_note (Elf_Internal_Note * pnote)
     /* GNU-specific object file notes.  */
     nt = get_gnu_elf_note_type (pnote->type);
 
+  else if (const_strneq (pnote->namedata, "FreeBSD"))
+    /* FreeBSD-specific core file notes.  */
+    nt = get_freebsd_elfcore_note_type (pnote->type);
+
   else if (const_strneq (pnote->namedata, "NetBSD-CORE"))
     /* NetBSD-specific core file notes.  */
     nt = get_netbsd_elfcore_note_type (pnote->type);
index 4195e474c7350bf43d5d21c9c1cc393571adece3..cbd40b2581cec33593bb935b7a694c504822623f 100644 (file)
@@ -1,3 +1,16 @@
+2016-01-19  John Baldwin  <jhb@FreeBSD.org>
+
+       * elf/common.h (NT_FREEBSD_THRMISC): Define.
+       (NT_FREEBSD_PROCSTAT_PROC): Define.
+       (NT_FREEBSD_PROCSTAT_FILES): Define.
+       (NT_FREEBSD_PROCSTAT_VMMAP): Define.
+       (NT_FREEBSD_PROCSTAT_GROUPS): Define.
+       (NT_FREEBSD_PROCSTAT_UMASK): Define.
+       (NT_FREEBSD_PROCSTAT_RLIMIT): Define.
+       (NT_FREEBSD_PROCSTAT_OSREL): Define.
+       (NT_FREEBSD_PROCSTAT_PSSTRINGS): Define.
+       (NT_FREEBSD_PROCSTAT_AUXV): Define.
+
 2016-01-18  Miranda Cupertino  <Cupertino.Miranda@synopsys.com>
            Zissulescu Claudiu  <Claudiu.Zissulescu@synopsys.com>
 
index ce506fcbb9228da12a51eaf68bf707d6698b18df..767ad3ef13c33ad41a1e25b7745dadd2f5e62175 100644 (file)
 /* Note segment for SystemTap probes.  */
 #define NT_STAPSDT     3
 
+/* Note segments for core files on FreeBSD systems.  Note name is
+   "FreeBSD".  */
+
+#define        NT_FREEBSD_THRMISC      7       /* Thread miscellaneous info. */
+#define        NT_FREEBSD_PROCSTAT_PROC        8       /* Procstat proc data. */
+#define        NT_FREEBSD_PROCSTAT_FILES       9       /* Procstat files data. */
+#define        NT_FREEBSD_PROCSTAT_VMMAP       10      /* Procstat vmmap data. */
+#define        NT_FREEBSD_PROCSTAT_GROUPS      11      /* Procstat groups data. */
+#define        NT_FREEBSD_PROCSTAT_UMASK       12      /* Procstat umask data. */
+#define        NT_FREEBSD_PROCSTAT_RLIMIT      13      /* Procstat rlimit data. */
+#define        NT_FREEBSD_PROCSTAT_OSREL       14      /* Procstat osreldate data. */
+#define        NT_FREEBSD_PROCSTAT_PSSTRINGS   15      /* Procstat ps_strings data. */
+#define        NT_FREEBSD_PROCSTAT_AUXV        16      /* Procstat auxv data. */
+
 /* Note segments for core files on NetBSD systems.  Note name
    must start with "NetBSD-CORE".  */