PR 9827
authorNick Clifton <nickc@redhat.com>
Thu, 12 Feb 2009 15:06:55 +0000 (15:06 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 12 Feb 2009 15:06:55 +0000 (15:06 +0000)
        * elflink.c (bfd_elf_final_link): When counting the relocations,
        if the header size has not been set yet then assume that it will
        match the output section's reloc type.

bfd/ChangeLog
bfd/elflink.c

index 9343b3466b1eba812ca56b4597eb50407d90e8c3..f0515a29977ea2944b14ca27a8346d1ae3cdb39e 100644 (file)
@@ -1,3 +1,10 @@
+2009-02-12  Nick Clifton  <nickc@redhat.com>
+
+       PR 9827
+       * elflink.c (bfd_elf_final_link): When counting the relocations,
+       if the header size has not been set yet then assume that it will
+       match the output section's reloc type.
+
 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
 
        * elf32-mips.c (mips_elf_final_gp): Don't add 0x4000 offset for
index 8685a2fe182e2ac85ecc046cd414bd85742975d4..d0e4534894acdc9742c2f6d3eef0c969b4770a71 100644 (file)
@@ -10228,8 +10228,13 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
              bfd_size_type entsize1;
 
              entsize1 = esdi->rel_hdr.sh_entsize;
-             BFD_ASSERT (entsize1 == bed->s->sizeof_rel
-                         || entsize1 == bed->s->sizeof_rela);
+             /* PR 9827: If the header size has not been set yet then
+                assume that it will match the output section's reloc type.  */
+             if (entsize1 == 0)
+               entsize1 = o->use_rela_p ? bed->s->sizeof_rela : bed->s->sizeof_rel;
+             else
+               BFD_ASSERT (entsize1 == bed->s->sizeof_rel
+                           || entsize1 == bed->s->sizeof_rela);
              same_size = !o->use_rela_p == (entsize1 == bed->s->sizeof_rel);
 
              if (!same_size)