Improve readelf notes output for Linux ELF files
Add four ELF note constants: - NT_FILE and NT_SIGINFO (core file notes output by recent Linux kernels) - NT_GNU_ABI_TAG (was incorrectly reported as NT_VERSION) - NT_GNU_BUILD_ID (used for locating standalone debug files) Approved by: re (kib)
This commit is contained in:
parent
32b17786bd
commit
377fc97958
@ -9109,6 +9109,10 @@ get_note_type (unsigned e_type)
|
||||
return _("NT_LWPSINFO (lwpsinfo_t structure)");
|
||||
case NT_WIN32PSTATUS:
|
||||
return _("NT_WIN32PSTATUS (win32_pstatus structure)");
|
||||
case NT_FILE:
|
||||
return _("NT_FILE");
|
||||
case NT_SIGINFO:
|
||||
return _("NT_SIGINFO");
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -9173,6 +9177,23 @@ get_freebsd_note_type (unsigned e_type)
|
||||
return buff;
|
||||
}
|
||||
|
||||
static const char *
|
||||
get_gnu_note_type (unsigned e_type)
|
||||
{
|
||||
static char buff[64];
|
||||
|
||||
switch (e_type)
|
||||
{
|
||||
case NT_GNU_ABI_TAG:
|
||||
return _("NT_GNU_ABI_TAG");
|
||||
case NT_GNU_BUILD_ID:
|
||||
return _("NT_GNU_BUILD_ID");
|
||||
}
|
||||
|
||||
snprintf (buff, sizeof(buff), _("Unknown GNU note type: (0x%08x)"), e_type);
|
||||
return buff;
|
||||
}
|
||||
|
||||
static const char *
|
||||
get_netbsd_elfcore_note_type (unsigned e_type)
|
||||
{
|
||||
@ -9254,6 +9275,10 @@ process_note (Elf_Internal_Note *pnote)
|
||||
/* FreeBSD-specific core file notes. */
|
||||
nt = get_freebsd_note_type (pnote->type);
|
||||
|
||||
else if (const_strneq (pnote->namedata, "GNU"))
|
||||
/* GNU-specific notes */
|
||||
nt = get_gnu_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);
|
||||
|
@ -388,8 +388,10 @@
|
||||
#define NT_PRPSINFO 3 /* Contains copy of prpsinfo struct */
|
||||
#define NT_TASKSTRUCT 4 /* Contains copy of task struct */
|
||||
#define NT_AUXV 6 /* Contains copy of Elfxx_auxv_t */
|
||||
#define NT_FILE 0x46494c45
|
||||
#define NT_PRXFPREG 0x46e62b7f /* Contains a user_xfpregs_struct; */
|
||||
/* note name must be "LINUX". */
|
||||
#define NT_SIGINFO 0x53494749
|
||||
|
||||
/* Note segments for core files on dir-style procfs systems. */
|
||||
|
||||
@ -435,6 +437,9 @@
|
||||
#define GNU_ABI_TAG_FREEBSD 3
|
||||
#define GNU_ABI_TAG_NETBSD 4
|
||||
|
||||
/* Values for GNU .note.gnu.build-id notes. Note name is "GNU"." */
|
||||
#define NT_GNU_BUILD_ID 3
|
||||
|
||||
/* Values for NetBSD .note.netbsd.ident notes. Note name is "NetBSD". */
|
||||
|
||||
#define NT_NETBSD_IDENT 1
|
||||
|
Loading…
Reference in New Issue
Block a user