Correct ELF note decoding for non-core files

Requested by:	kib
This commit is contained in:
Ed Maste 2013-07-19 01:04:17 +00:00
parent 1610f95c56
commit 750288f343

View File

@ -9128,8 +9128,10 @@ get_note_type (unsigned e_type)
}
static const char *
get_freebsd_elfcore_note_type (unsigned e_type)
get_freebsd_note_type (unsigned e_type)
{
static char buff[64];
if (elf_header.e_type == ET_CORE)
switch (e_type)
{
@ -9153,11 +9155,22 @@ get_freebsd_elfcore_note_type (unsigned e_type)
return _("NT_PROCSTAT_PSSTRINGS (ps_strings data)");
case NT_PROCSTAT_AUXV:
return _("NT_PROCSTAT_AUXV (auxv data)");
default:
return get_note_type(e_type);
}
else
switch (e_type)
{
case NT_FREEBSD_ABI_TAG:
return _("NT_FREEBSD_ABI_TAG");
case NT_FREEBSD_NOINIT_TAG:
return _("NT_FREEBSD_NOINIT_TAG");
default:
break;
}
return get_note_type(e_type);
snprintf (buff, sizeof(buff), _("Unknown note type: (0x%08x)"), e_type);
return buff;
}
static const char *
@ -9239,7 +9252,7 @@ process_note (Elf_Internal_Note *pnote)
else if (const_strneq (pnote->namedata, "FreeBSD"))
/* FreeBSD-specific core file notes. */
nt = get_freebsd_elfcore_note_type (pnote->type);
nt = get_freebsd_note_type (pnote->type);
else if (const_strneq (pnote->namedata, "NetBSD-CORE"))
/* NetBSD-specific core file notes. */