* elf.c (assign_file_positions_for_load_sections): When checking
authorAlan Modra <amodra@gmail.com>
Wed, 8 Oct 2008 08:30:27 +0000 (08:30 +0000)
committerAlan Modra <amodra@gmail.com>
Wed, 8 Oct 2008 08:30:27 +0000 (08:30 +0000)
a segment for contents, don't assume that a non-TLS nobits section
must only be followed by nobits sections.

bfd/ChangeLog
bfd/elf.c

index 031c67d58d865db96df7405f68ab9b488d69a16a..d0b27f5509f8e87a2a0f0eda21cf12fc39603cad 100644 (file)
@@ -1,3 +1,9 @@
+2008-10-08  Alan Modra  <amodra@bigpond.net.au>
+
+       * elf.c (assign_file_positions_for_load_sections): When checking
+       a segment for contents, don't assume that a non-TLS nobits section
+       must only be followed by nobits sections.
+
 2008-10-04  Hans-Peter Nilsson  <hp@axis.com>
 
        * elf32-cris.c (TLSHOWTO32, TLSHOWTO16): New macros.
index e9d0af302a5ed6e100c65bfa1ac2c8c9c93f1932..ea44f7246619defe370c09aed684830850bf7079 100644 (file)
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -4288,21 +4288,14 @@ assign_file_positions_for_load_sections (bfd *abfd,
              elf_section_type (m->sections[i]) = SHT_NOBITS;
 
          /* Find out whether this segment contains any loadable
-            sections.  If the first section isn't loadable, the same
-            holds for any other sections.  */
-         i = 0;
-         while (elf_section_type (m->sections[i]) == SHT_NOBITS)
-           {
-             /* If a segment starts with .tbss, we need to look
-                at the next section to decide whether the segment
-                has any loadable sections.  */
-             if ((elf_section_flags (m->sections[i]) & SHF_TLS) == 0
-                 || ++i >= m->count)
-               {
-                 no_contents = TRUE;
-                 break;
-               }
-           }
+            sections.  */
+         no_contents = TRUE;
+         for (i = 0; i < m->count; i++)
+           if (elf_section_type (m->sections[i]) != SHT_NOBITS)
+             {
+               no_contents = FALSE;
+               break;
+             }
 
          off_adjust = vma_page_aligned_bias (m->sections[0]->vma, off, align);
          off += off_adjust;