From: amodra Date: Tue, 19 Jan 2010 22:51:28 +0000 (+0000) Subject: * readelf.c (process_file_header): Handle e_phnum extension. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=def93d85aec3684091edf41c10870ced06c43410;p=pf3gnuchains%2Fpf3gnuchains4x.git * readelf.c (process_file_header): Handle e_phnum extension. --- diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 03ae2eda66..923cb24acb 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2010-01-19 Daisuke Hatayama + Alan Modra + + * readelf.c (process_file_header): Handle e_phnum extension. + 2010-01-14 Tristan Gingold * dwarf.c (get_AT_name): Handle DW_AT_use_GNAT_descriptive_type diff --git a/binutils/readelf.c b/binutils/readelf.c index 122bd7357d..8c9edce232 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -3340,8 +3340,13 @@ process_file_header (void) (long) elf_header.e_ehsize); printf (_(" Size of program headers: %ld (bytes)\n"), (long) elf_header.e_phentsize); - printf (_(" Number of program headers: %ld\n"), + printf (_(" Number of program headers: %ld"), (long) elf_header.e_phnum); + if (section_headers != NULL + && elf_header.e_phnum == PN_XNUM + && section_headers[0].sh_info != 0) + printf (_(" (%ld)"), (long) section_headers[0].sh_info); + putc ('\n', stdout); printf (_(" Size of section headers: %ld (bytes)\n"), (long) elf_header.e_shentsize); printf (_(" Number of section headers: %ld"), @@ -3362,6 +3367,9 @@ process_file_header (void) if (section_headers != NULL) { + if (elf_header.e_phnum == PN_XNUM + && section_headers[0].sh_info != 0) + elf_header.e_phnum = section_headers[0].sh_info; if (elf_header.e_shnum == SHN_UNDEF) elf_header.e_shnum = section_headers[0].sh_size; if (elf_header.e_shstrndx == (SHN_XINDEX & 0xffff))