* elflink.h (elf_bfd_final_link): Tweak last change.
authorMark Mitchell <mark@codesourcery.com>
Tue, 10 Aug 1999 06:22:57 +0000 (06:22 +0000)
committerMark Mitchell <mark@codesourcery.com>
Tue, 10 Aug 1999 06:22:57 +0000 (06:22 +0000)
bfd/ChangeLog
bfd/elflink.h

index a01598c..f3eb41e 100644 (file)
@@ -1,3 +1,7 @@
+Tue Aug 10 00:21:08 1999  Mark P. Mitchell  <mark@codesourcery.com>
+
+       * elflink.h (elf_bfd_final_link): Tweak last change.
+
 1999-08-09  Mark Mitchell  <mark@codesourcery.com>
 
        * elflink.h (elf_link_size_reloc_section): Use the counts in the
index 7bd95d4..c325c3e 100644 (file)
@@ -4016,12 +4016,27 @@ elf_bfd_final_link (abfd, info)
                = elf_section_data (o);
              struct bfd_elf_section_data *esdo 
                = elf_section_data (output_section);
+             unsigned int *rel_count;
+             unsigned int *rel_count2;
 
-             esdo->rel_count += (esdi->rel_hdr.sh_size 
-                                 / esdi->rel_hdr.sh_entsize);
+             /* We must be careful to add the relocation froms the
+                input section to the right output count.  */
+             if (esdi->rel_hdr.sh_entsize == esdo->rel_hdr.sh_entsize)
+               {
+                 rel_count = &esdo->rel_count;
+                 rel_count2 = &esdo->rel_count2;
+               }
+             else
+               {
+                 rel_count = &esdo->rel_count2;
+                 rel_count2 = &esdo->rel_count;
+               }
+             
+             *rel_count += (esdi->rel_hdr.sh_size 
+                            / esdi->rel_hdr.sh_entsize);
              if (esdi->rel_hdr2)
-               esdo->rel_count2 += (esdi->rel_hdr2->sh_size 
-                                    / esdi->rel_hdr2->sh_entsize);
+               *rel_count2 += (esdi->rel_hdr2->sh_size 
+                               / esdi->rel_hdr2->sh_entsize);
            }
        }