From: Alan Modra Date: Sat, 8 Aug 2009 01:43:28 +0000 (+0000) Subject: PR 10494 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e7e75368a39c3fb6848cfef55b8fccdd732fdf8a;p=binutils-gdb.git 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. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index e7d0e94e2d4..51b337c91ac 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2009-08-08 Alan Modra + + 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 * elf32-microblaze.c (microblaze_elf_check_relocs): Avoid strict diff --git a/bfd/elf.c b/bfd/elf.c index 85829ec1958..408cebd9f4c 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -971,25 +971,8 @@ _bfd_elf_make_section_from_shdr (bfd *abfd, phdr = elf_tdata (abfd)->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 - && (bfd_vma) hdr->sh_offset >= phdr->p_offset - && (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))) + && ELF_IS_SECTION_IN_SEGMENT (hdr, phdr)) { if ((flags & SEC_LOAD) == 0) newsect->lma = (phdr->p_paddr