PR 10494
* elf.c (_bfd_elf_make_section_from_shdr): When setting up section LMAs, use ELF_IS_SECTION_IN_SEGMENT to match sections with headers.
This commit is contained in:
parent
93da6da6f9
commit
e7e75368a3
@ -1,3 +1,9 @@
|
|||||||
|
2009-08-08 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
PR 10494
|
||||||
|
* elf.c (_bfd_elf_make_section_from_shdr): When setting up section
|
||||||
|
LMAs, use ELF_IS_SECTION_IN_SEGMENT to match sections with headers.
|
||||||
|
|
||||||
2009-08-07 Tom Tromey <tromey@redhat.com>
|
2009-08-07 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
* elf32-microblaze.c (microblaze_elf_check_relocs): Avoid strict
|
* elf32-microblaze.c (microblaze_elf_check_relocs): Avoid strict
|
||||||
|
19
bfd/elf.c
19
bfd/elf.c
@ -971,25 +971,8 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
|
|||||||
phdr = elf_tdata (abfd)->phdr;
|
phdr = elf_tdata (abfd)->phdr;
|
||||||
for (i = 0; i < elf_elfheader (abfd)->e_phnum; i++, phdr++)
|
for (i = 0; i < elf_elfheader (abfd)->e_phnum; i++, phdr++)
|
||||||
{
|
{
|
||||||
/* This section is part of this segment if its file
|
|
||||||
offset plus size lies within the segment's memory
|
|
||||||
span and, if the section is loaded, the extent of the
|
|
||||||
loaded data lies within the extent of the segment.
|
|
||||||
|
|
||||||
Note - we used to check the p_paddr field as well, and
|
|
||||||
refuse to set the LMA if it was 0. This is wrong
|
|
||||||
though, as a perfectly valid initialised segment can
|
|
||||||
have a p_paddr of zero. Some architectures, eg ARM,
|
|
||||||
place special significance on the address 0 and
|
|
||||||
executables need to be able to have a segment which
|
|
||||||
covers this address. */
|
|
||||||
if (phdr->p_type == PT_LOAD
|
if (phdr->p_type == PT_LOAD
|
||||||
&& (bfd_vma) hdr->sh_offset >= phdr->p_offset
|
&& ELF_IS_SECTION_IN_SEGMENT (hdr, phdr))
|
||||||
&& (hdr->sh_offset + hdr->sh_size
|
|
||||||
<= phdr->p_offset + phdr->p_memsz)
|
|
||||||
&& ((flags & SEC_LOAD) == 0
|
|
||||||
|| (hdr->sh_offset + hdr->sh_size
|
|
||||||
<= phdr->p_offset + phdr->p_filesz)))
|
|
||||||
{
|
{
|
||||||
if ((flags & SEC_LOAD) == 0)
|
if ((flags & SEC_LOAD) == 0)
|
||||||
newsect->lma = (phdr->p_paddr
|
newsect->lma = (phdr->p_paddr
|
||||||
|
Loading…
Reference in New Issue
Block a user