Teach readelf how to interpet netbsd notes.
Notes at offset 0x00000128 with length 0x00000018: Owner Data size Description NetBSD 0x00000004 IDENT 699002300 (6.99.23) Notes at offset 0x00000154 with length 0x00000020: Owner Data size Description NetBSD 0x00000009 MARCH <earmv7hf>
This commit is contained in:
parent
4d518571b9
commit
92fd66d6e7
|
@ -11890,6 +11890,38 @@ get_gnu_elf_note_type (unsigned e_type)
|
||||||
return buff;
|
return buff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
process_netbsd_elf_note (Elf_Internal_Note * pnote)
|
||||||
|
{
|
||||||
|
unsigned int version;
|
||||||
|
|
||||||
|
switch (pnote->type)
|
||||||
|
{
|
||||||
|
case NT_NETBSD_IDENT:
|
||||||
|
version = byte_get((unsigned char *)pnote->descdata, sizeof(version));
|
||||||
|
if ((version / 10000) % 100)
|
||||||
|
printf (" NetBSD\t0x%08lx\tIDENT %u (%u.%u%s%c)\n", pnote->descsz,
|
||||||
|
version, version / 100000000, (version / 1000000) % 100,
|
||||||
|
(version / 10000) % 100 > 26 ? "Z" : "",
|
||||||
|
'A' + (version / 10000) % 26);
|
||||||
|
else
|
||||||
|
printf (" NetBSD\t0x%08lx\tIDENT %u (%u.%u.%u)\n", pnote->descsz,
|
||||||
|
version, version / 100000000, (version / 1000000) % 100,
|
||||||
|
(version / 100) % 100);
|
||||||
|
return 1;
|
||||||
|
case NT_NETBSD_MARCH:
|
||||||
|
printf (" NetBSD\t0x%08lx\tMARCH <%s>\n", pnote->descsz,
|
||||||
|
pnote->descdata);
|
||||||
|
return 1;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf (" NetBSD\t0x%08lx\tUnknown note type: (0x%08lx)\n", pnote->descsz,
|
||||||
|
pnote->type);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static const char *
|
static const char *
|
||||||
get_netbsd_elfcore_note_type (unsigned e_type)
|
get_netbsd_elfcore_note_type (unsigned e_type)
|
||||||
{
|
{
|
||||||
|
@ -11989,6 +12021,10 @@ process_note (Elf_Internal_Note * pnote)
|
||||||
/* GNU-specific object file notes. */
|
/* GNU-specific object file notes. */
|
||||||
nt = get_gnu_elf_note_type (pnote->type);
|
nt = get_gnu_elf_note_type (pnote->type);
|
||||||
|
|
||||||
|
else if (const_strneq (pnote->namedata, "NetBSD"))
|
||||||
|
/* NetBSD-specific core file notes. */
|
||||||
|
return process_netbsd_elf_note (pnote);
|
||||||
|
|
||||||
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. */
|
||||||
nt = get_netbsd_elfcore_note_type (pnote->type);
|
nt = get_netbsd_elfcore_note_type (pnote->type);
|
||||||
|
|
|
@ -594,6 +594,7 @@
|
||||||
/* Values for NetBSD .note.netbsd.ident notes. Note name is "NetBSD". */
|
/* Values for NetBSD .note.netbsd.ident notes. Note name is "NetBSD". */
|
||||||
|
|
||||||
#define NT_NETBSD_IDENT 1
|
#define NT_NETBSD_IDENT 1
|
||||||
|
#define NT_NETBSD_MARCH 5
|
||||||
|
|
||||||
/* Values for OpenBSD .note.openbsd.ident notes. Note name is "OpenBSD". */
|
/* Values for OpenBSD .note.openbsd.ident notes. Note name is "OpenBSD". */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue