* elflink.c (elf_link_read_relocs_from_section): Don't use
authorAlan Modra <amodra@gmail.com>
Tue, 16 Mar 2004 10:29:12 +0000 (10:29 +0000)
committerAlan Modra <amodra@gmail.com>
Tue, 16 Mar 2004 10:29:12 +0000 (10:29 +0000)
NUM_SHDR_ENTRIES in end of reloc calc.  Move NULL shdr check..
(_bfd_elf_link_read_relocs): ..to here.
* elf32-ppc.c (ppc_elf_relax_section): Formatting.

bfd/ChangeLog
bfd/elf32-ppc.c
bfd/elflink.c

index 95135726df0dc580b78998af04f844c2b584a879..ea5189c91952c923c0dd8c0466b0464a5a073f8b 100644 (file)
@@ -1,3 +1,10 @@
+2004-03-16  Alan Modra  <amodra@bigpond.net.au>
+
+       * elflink.c (elf_link_read_relocs_from_section): Don't use
+       NUM_SHDR_ENTRIES in end of reloc calc.  Move NULL shdr check..
+       (_bfd_elf_link_read_relocs): ..to here.
+       * elf32-ppc.c (ppc_elf_relax_section): Formatting.
+
 2004-03-16  Alan Modra  <amodra@bigpond.net.au>
 
        * configure.in (HOST_64BIT_TYPE, HOST_U_64BIT_TYPE): Don't override
index 8bd7115bf9019d0320aadd5d7236a68b357a7e15..813d1491742f124453fc8805f6dcfd2fb5aca7d9 100644 (file)
@@ -1816,10 +1816,7 @@ ppc_elf_relax_section (bfd *abfd,
       symaddr = tsec->output_section->vma + tsec->output_offset + toff;
 
       roff = irel->r_offset;
-
-      reladdr = (isec->output_section->vma
-                + isec->output_offset
-                + roff);
+      reladdr = isec->output_section->vma + isec->output_offset + roff;
 
       /* If the branch is in range, no need to do anything.  */
       if (symaddr - reladdr + max_branch_offset < 2 * max_branch_offset)
index 50513648db65987b5f6ffa07d222c02b7cdda9a3..7d63383be02083ad65098fcbdda118b8e9694c88 100644 (file)
@@ -1880,10 +1880,6 @@ elf_link_read_relocs_from_section (bfd *abfd,
   Elf_Internal_Shdr *symtab_hdr;
   size_t nsyms;
 
-  /* If there aren't any relocations, that's OK.  */
-  if (!shdr)
-    return TRUE;
-
   /* Position ourselves at the start of the section.  */
   if (bfd_seek (abfd, shdr->sh_offset, SEEK_SET) != 0)
     return FALSE;
@@ -1909,7 +1905,7 @@ elf_link_read_relocs_from_section (bfd *abfd,
     }
 
   erela = external_relocs;
-  erelaend = erela + NUM_SHDR_ENTRIES (shdr) * shdr->sh_entsize;
+  erelaend = erela + shdr->sh_size;
   irela = internal_relocs;
   while (erela < erelaend)
     {
@@ -1995,12 +1991,13 @@ _bfd_elf_link_read_relocs (bfd *abfd,
                                          external_relocs,
                                          internal_relocs))
     goto error_return;
-  if (!elf_link_read_relocs_from_section
-      (abfd, o,
-       elf_section_data (o)->rel_hdr2,
-       ((bfd_byte *) external_relocs) + rel_hdr->sh_size,
-       internal_relocs + (NUM_SHDR_ENTRIES (rel_hdr)
-                         * bed->s->int_rels_per_ext_rel)))
+  if (elf_section_data (o)->rel_hdr2
+      && (!elf_link_read_relocs_from_section
+         (abfd, o,
+          elf_section_data (o)->rel_hdr2,
+          ((bfd_byte *) external_relocs) + rel_hdr->sh_size,
+          internal_relocs + (NUM_SHDR_ENTRIES (rel_hdr)
+                             * bed->s->int_rels_per_ext_rel))))
     goto error_return;
 
   /* Cache the results for next time, if we can.  */