* readelf.c (print_gnu_note): New function.

(process_note): Use it.
This commit is contained in:
Tom Tromey 2011-04-25 14:53:27 +00:00
parent 918c9108e8
commit 664f90a331
2 changed files with 64 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2011-04-21 Tom Tromey <tromey@redhat.com>
* readelf.c (print_gnu_note): New function.
(process_note): Use it.
2011-04-21 Jie Zhang <jzhang918@gmail.com>
* MAINTAINERS: Update my email address.

View File

@ -12231,6 +12231,63 @@ get_gnu_elf_note_type (unsigned e_type)
return buff;
}
static int
print_gnu_note (Elf_Internal_Note *pnote)
{
switch (pnote->type)
{
case NT_GNU_BUILD_ID:
{
unsigned long i;
printf (_(" Build ID: "));
for (i = 0; i < pnote->descsz; ++i)
printf ("%02x", pnote->descdata[i] & 0xff);
printf (_("\n"));
}
break;
case NT_GNU_ABI_TAG:
{
unsigned long os, major, minor, subminor;
const char *osname;
os = byte_get ((unsigned char *) pnote->descdata, 4);
major = byte_get ((unsigned char *) pnote->descdata + 4, 4);
minor = byte_get ((unsigned char *) pnote->descdata + 8, 4);
subminor = byte_get ((unsigned char *) pnote->descdata + 12, 4);
switch (os)
{
case GNU_ABI_TAG_LINUX:
osname = "Linux";
break;
case GNU_ABI_TAG_HURD:
osname = "Hurd";
break;
case GNU_ABI_TAG_SOLARIS:
osname = "Solaris";
break;
case GNU_ABI_TAG_FREEBSD:
osname = "FreeBSD";
break;
case GNU_ABI_TAG_NETBSD:
osname = "NetBSD";
break;
default:
osname = "Unknown";
break;
}
printf (_(" OS: %s, ABI: %ld.%ld.%ld\n"), osname,
major, minor, subminor);
}
break;
}
return 1;
}
static const char *
get_netbsd_elfcore_note_type (unsigned e_type)
{
@ -12448,6 +12505,8 @@ process_note (Elf_Internal_Note * pnote)
if (const_strneq (pnote->namedata, "IPF/VMS"))
return print_ia64_vms_note (pnote);
else if (const_strneq (pnote->namedata, "GNU"))
return print_gnu_note (pnote);
else
return 1;
}