From: Jakub Jelinek Date: Fri, 7 Jan 2005 09:52:00 +0000 (+0000) Subject: * bfd/elf.c (INCLUDE_SECTION_IN_SEGMENT): Don't put empty sections into X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=eb53000cc5b15d82bd7f703576d5c19bb819a1b4;p=pf3gnuchains%2Fpf3gnuchains3x.git * bfd/elf.c (INCLUDE_SECTION_IN_SEGMENT): Don't put empty sections into PT_DYNAMIC segment, unless .dynamic. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 77186e00a5..309f84b00d 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2005-01-07 Jakub Jelinek + + * bfd/elf.c (INCLUDE_SECTION_IN_SEGMENT): Don't put empty sections into + PT_DYNAMIC segment, unless .dynamic. + 2005-01-06 Paul Brook * config.bfd: Add entry for arm-*-vxworks and arm-*-windiss. diff --git a/bfd/elf.c b/bfd/elf.c index 3c1f3806f4..a3126b4640 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -4965,7 +4965,9 @@ copy_private_bfd_data (bfd *ibfd, bfd *obfd) 4. The section has not already been allocated to a previous segment. 5. PT_GNU_STACK segments do not include any sections. 6. PT_TLS segment includes only SHF_TLS sections. - 7. SHF_TLS sections are only in PT_TLS or PT_LOAD segments. */ + 7. SHF_TLS sections are only in PT_TLS or PT_LOAD segments. + 8. PT_DYNAMIC should not contain empty sections at the beginning + (with the possible exception of .dynamic). */ #define INCLUDE_SECTION_IN_SEGMENT(section, segment, bed) \ ((((segment->p_paddr \ ? IS_CONTAINED_BY_LMA (section, segment, segment->p_paddr) \ @@ -4979,6 +4981,13 @@ copy_private_bfd_data (bfd *ibfd, bfd *obfd) && (segment->p_type == PT_LOAD \ || segment->p_type == PT_TLS \ || (section->flags & SEC_THREAD_LOCAL) == 0) \ + && (segment->p_type != PT_DYNAMIC \ + || SECTION_SIZE (section, segment) > 0 \ + || (segment->p_paddr \ + ? segment->p_paddr != section->lma \ + : segment->p_vaddr != section->vma) \ + || (strcmp (bfd_get_section_name (ibfd, section), ".dynamic") \ + == 0)) \ && ! section->segment_mark) /* Returns TRUE iff seg1 starts after the end of seg2. */