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
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=253461

View File

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