PR binutils/12467
* readelf.c (process_program_headers): Issue a warning if there are no program headers but the file header has a non-zero program header offset. (process_section_headers): Issue a warning if there are no section headers but the file header has a non-zero section header offset. (process_section_groups): Reword the no section message so that it can be distinguished from the one issued by process_section_headers. * elf.c (assign_file_positions_for_load_sections): Set the program header offset and entry size to zero if there are no program headers.
This commit is contained in:
parent
84ced98a31
commit
82f2dbf73d
4 changed files with 41 additions and 5 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2011-02-08 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
PR binutils/12467
|
||||||
|
* elf.c (assign_file_positions_for_load_sections): Set the program
|
||||||
|
header offset and entry size to zero if there are no program
|
||||||
|
headers.
|
||||||
|
|
||||||
2011-02-08 Alan Modra <amodra@gmail.com>
|
2011-02-08 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* elf64-ppc.c (ppc64_elf_edit_toc): Don't segfault on NULL
|
* elf64-ppc.c (ppc64_elf_edit_toc): Don't segfault on NULL
|
||||||
|
|
14
bfd/elf.c
14
bfd/elf.c
|
@ -4334,8 +4334,18 @@ assign_file_positions_for_load_sections (bfd *abfd,
|
||||||
header_pad = m->header_size;
|
header_pad = m->header_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
elf_elfheader (abfd)->e_phoff = bed->s->sizeof_ehdr;
|
if (alloc)
|
||||||
elf_elfheader (abfd)->e_phentsize = bed->s->sizeof_phdr;
|
{
|
||||||
|
elf_elfheader (abfd)->e_phoff = bed->s->sizeof_ehdr;
|
||||||
|
elf_elfheader (abfd)->e_phentsize = bed->s->sizeof_phdr;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* PR binutils/12467. */
|
||||||
|
elf_elfheader (abfd)->e_phoff = 0;
|
||||||
|
elf_elfheader (abfd)->e_phentsize = 0;
|
||||||
|
}
|
||||||
|
|
||||||
elf_elfheader (abfd)->e_phnum = alloc;
|
elf_elfheader (abfd)->e_phnum = alloc;
|
||||||
|
|
||||||
if (elf_tdata (abfd)->program_header_size == (bfd_size_type) -1)
|
if (elf_tdata (abfd)->program_header_size == (bfd_size_type) -1)
|
||||||
|
|
|
@ -1,3 +1,14 @@
|
||||||
|
2011-02-08 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
PR binutils/12467
|
||||||
|
* readelf.c (process_program_headers): Issue a warning if there
|
||||||
|
are no program headers but the file header has a non-zero program
|
||||||
|
header offset.
|
||||||
|
(process_section_headers): Issue a warning if there are no section
|
||||||
|
headers but the file header has a non-zero section header offset.
|
||||||
|
(process_section_groups): Reword the no section message so that it
|
||||||
|
can be distinguished from the one issued by process_section_headers.
|
||||||
|
|
||||||
2011-01-26 Jan Kratochvil <jan.kratochvil@redhat.com>
|
2011-01-26 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
Doug Evans <dje@google.com>
|
Doug Evans <dje@google.com>
|
||||||
|
|
||||||
|
|
|
@ -3638,7 +3638,11 @@ process_program_headers (FILE * file)
|
||||||
|
|
||||||
if (elf_header.e_phnum == 0)
|
if (elf_header.e_phnum == 0)
|
||||||
{
|
{
|
||||||
if (do_segments)
|
/* PR binutils/12467. */
|
||||||
|
if (elf_header.e_phoff != 0)
|
||||||
|
warn (_("possibly corrupt ELF header - it has a non-zero program"
|
||||||
|
" header offset, but no program headers"));
|
||||||
|
else if (do_segments)
|
||||||
printf (_("\nThere are no program headers in this file.\n"));
|
printf (_("\nThere are no program headers in this file.\n"));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -4377,7 +4381,11 @@ process_section_headers (FILE * file)
|
||||||
|
|
||||||
if (elf_header.e_shnum == 0)
|
if (elf_header.e_shnum == 0)
|
||||||
{
|
{
|
||||||
if (do_sections)
|
/* PR binutils/12467. */
|
||||||
|
if (elf_header.e_shoff != 0)
|
||||||
|
warn (_("possibly corrupt ELF file header - it has a non-zero"
|
||||||
|
" section header offset, but no section headers\n"));
|
||||||
|
else if (do_sections)
|
||||||
printf (_("\nThere are no sections in this file.\n"));
|
printf (_("\nThere are no sections in this file.\n"));
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -4860,7 +4868,7 @@ process_section_groups (FILE * file)
|
||||||
if (elf_header.e_shnum == 0)
|
if (elf_header.e_shnum == 0)
|
||||||
{
|
{
|
||||||
if (do_section_groups)
|
if (do_section_groups)
|
||||||
printf (_("\nThere are no sections in this file.\n"));
|
printf (_("\nThere are no sections to group in this file.\n"));
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue