iq2000_elf_relocate_section): Do nothing when perfoming a relocatable link.
authorNick Clifton <nickc@redhat.com>
Thu, 28 Oct 2004 09:53:44 +0000 (09:53 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 28 Oct 2004 09:53:44 +0000 (09:53 +0000)
(iq2000_elf_object_p): Do not set elf_bad_symtab.  This is only for MIPS ports
  under Irix.

bfd/ChangeLog
bfd/elf32-iq2000.c

index 1b08452..17d5306 100644 (file)
@@ -1,3 +1,10 @@
+2004-10-28  Nick Clifton  <nickc@redhat.com>
+
+       * elf32-iq2000.c (iq2000_elf_relocate_section): Do nothing when
+       perfoming a relocatable link.
+       (iq2000_elf_object_p): Do not set elf_bad_symtab.  This is only
+       for MIPS ports under Irix.
+
 2004-10-27  Richard Earnshaw  <rearnsha@arm.com>
 
        * elf32-arm.h (bfd_elf32_arm_process_before_allocation): Handle
index bb2df9f..7e8adc2 100644 (file)
@@ -512,7 +512,7 @@ iq2000_elf_check_relocs (abfd, info, sec, relocs)
   if (changed)
     /* Note that we've changed relocs, otherwise if !info->keep_memory
        we'll free the relocs and lose our changes.  */
-    (const Elf_Internal_Rela *) (elf_section_data (sec)->relocs) = relocs;
+    elf_section_data (sec)->relocs = (Elf_Internal_Rela *) relocs;
 
   return TRUE;
 }
@@ -568,6 +568,9 @@ iq2000_elf_relocate_section (output_bfd, info, input_bfd, input_section,
   Elf_Internal_Rela *          rel;
   Elf_Internal_Rela *          relend;
 
+  if (info->relocatable)
+    return TRUE;
+
   symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (input_bfd);
   relend     = relocs + input_section->reloc_count;
@@ -915,11 +918,6 @@ bfd_boolean
 iq2000_elf_object_p (abfd)
      bfd *abfd;
 {
-  /* Irix 5 and 6 is broken.  Object file symbol tables are not always
-     sorted correctly such that local symbols precede global symbols,
-     and the sh_info field in the symbol table is not always right.  */
-  elf_bad_symtab (abfd) = TRUE;
-
   bfd_default_set_arch_mach (abfd, bfd_arch_iq2000,
                             elf32_iq2000_machine (abfd));
   return TRUE;