[v2,1/6] Add support to readelf for reading FreeBSD ELF core notes.
Commit Message
binutils/ChangeLog:
* readelf.c (get_freebsd_elfcore_note_type): New
(process_note): Add support for FreeBSD core notes.
include/elf/ChangeLog:
* 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 | 5 +++++
binutils/readelf.c | 35 +++++++++++++++++++++++++++++++++++
include/elf/ChangeLog | 27 +++++++++++++++++++++++++++
include/elf/common.h | 14 ++++++++++++++
4 files changed, 81 insertions(+)
create mode 100644 include/elf/ChangeLog
Comments
On Wed, Jan 13, 2016 at 01:45:46PM -0800, John Baldwin wrote:
> binutils/ChangeLog:
>
> * readelf.c (get_freebsd_elfcore_note_type): New
> (process_note): Add support for FreeBSD core notes.
>
> include/elf/ChangeLog:
>
> * 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.
OK, but I deleted include/elf/ChangeLog deliberately, so the entry goes in
include/ChangeLog and looks like
* elf/common.h (NT_FREEBSD_THRMISC): Define.
...
On Thursday, January 14, 2016 03:58:23 PM Alan Modra wrote:
> On Wed, Jan 13, 2016 at 01:45:46PM -0800, John Baldwin wrote:
> > binutils/ChangeLog:
> >
> > * readelf.c (get_freebsd_elfcore_note_type): New
> > (process_note): Add support for FreeBSD core notes.
> >
> > include/elf/ChangeLog:
> >
> > * 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.
>
> OK, but I deleted include/elf/ChangeLog deliberately, so the entry goes in
> include/ChangeLog and looks like
>
> * elf/common.h (NT_FREEBSD_THRMISC): Define.
> ...
Ok, will fix thanks!
@@ -1,3 +1,8 @@
+2016-01-09 John Baldwin <jhb@FreeBSD.org>
+
+ * readelf.c (get_freebsd_elfcore_note_type): New
+ (process_note): Add support for FreeBSD core notes.
+
2016-01-01 Alan Modra <amodra@gmail.com>
Update year range in copyright notice of all files.
@@ -15388,6 +15388,37 @@ process_netbsd_elf_note (Elf_Internal_Note * pnote)
}
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)
{
static char buff[64];
@@ -15636,6 +15667,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);
new file mode 100644
@@ -0,0 +1,27 @@
+2016-01-09 John Baldwin <jhb@FreeBSD.org>
+
+ * 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.
+
+For older changes see ChangeLog-0415
+
+Copyright (C) 2016 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
@@ -595,6 +595,20 @@
/* 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". */