diff options
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/ChangeLog | 5 | ||||
-rw-r--r-- | binutils/readelf.c | 38 |
2 files changed, 43 insertions, 0 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 5cf05cc..f5627fc 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2015-10-27 Stephen Fisher <sfisher@panix.com> + + * binutils.c (process_netbsd_elf_note): New function. + (process_note): Call the new function for NetBSD core notes. + 2015-10-22 Hans-Peter Nilsson <hp@bitrange.com> * objcopy.c (setup_section): Don't omit bfd_copy_private_bfd_data diff --git a/binutils/readelf.c b/binutils/readelf.c index 22cec2c..70a84e5 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -15365,6 +15365,40 @@ print_v850_note (Elf_Internal_Note * pnote) return 0; } +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\t\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\t\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 * get_netbsd_elfcore_note_type (unsigned e_type) { @@ -15618,6 +15652,10 @@ process_note (Elf_Internal_Note * pnote) /* NetBSD-specific core file notes. */ nt = get_netbsd_elfcore_note_type (pnote->type); + else if (const_strneq (pnote->namedata, "NetBSD")) + /* NetBSD-specific core file notes. */ + return process_netbsd_elf_note (pnote); + else if (strneq (pnote->namedata, "SPU/", 4)) { /* SPU-specific core file notes. */ |