* elflink.c (_bfd_elf_gc_mark_hook): New function.
[deliverable/binutils-gdb.git] / bfd / elf32-iq2000.c
index f51ca07af22c77714b079a9c365cae530aba173a..731b3206c5142b8725d64fa7c6821d6836dcf80b 100644 (file)
@@ -642,53 +642,25 @@ iq2000_elf_relocate_section (bfd *                     output_bfd ATTRIBUTE_UNUSED,
 }
 \f
 
-/* Update the got entry reference counts for the section being
-   removed.  */
-
-static bfd_boolean
-iq2000_elf_gc_sweep_hook (bfd *                            abfd ATTRIBUTE_UNUSED,
-                         struct bfd_link_info *    info ATTRIBUTE_UNUSED,
-                         asection *                sec ATTRIBUTE_UNUSED,
-                         const Elf_Internal_Rela * relocs ATTRIBUTE_UNUSED)
-{
-  return TRUE;
-}
-
 /* Return the section that should be marked against GC for a given
    relocation. */
 
 static asection *
-iq2000_elf_gc_mark_hook (asection *                  sec,
-                        struct bfd_link_info *       info ATTRIBUTE_UNUSED,
-                        Elf_Internal_Rela *          rel,
-                        struct elf_link_hash_entry * h,
-                        Elf_Internal_Sym *           sym)
+iq2000_elf_gc_mark_hook (asection *sec,
+                        struct bfd_link_info *info,
+                        Elf_Internal_Rela *rel,
+                        struct elf_link_hash_entry *h,
+                        Elf_Internal_Sym *sym)
 {
-  if (h == NULL)
-    return bfd_section_from_elf_index (sec->owner, sym->st_shndx);
-
-  switch (ELF32_R_TYPE (rel->r_info))
-    {
-    case R_IQ2000_GNU_VTINHERIT:
-    case R_IQ2000_GNU_VTENTRY:
-      break;
-         
-    default:
-      switch (h->root.type)
-       {
-       case bfd_link_hash_defined:
-       case bfd_link_hash_defweak:
-         return h->root.u.def.section;
-             
-       case bfd_link_hash_common:
-         return h->root.u.c.p->section;
-             
-       default:
-         break;
-       }
-    }
-
-  return NULL;
+  if (h != NULL)
+    switch (ELF32_R_TYPE (rel->r_info))
+      {
+      case R_IQ2000_GNU_VTINHERIT:
+      case R_IQ2000_GNU_VTENTRY:
+       return NULL;
+      }
+
+  return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym);
 }
 
 \f
@@ -874,7 +846,6 @@ iq2000_elf_object_p (bfd *abfd)
 #define elf_info_to_howto                      iq2000_info_to_howto_rela
 #define elf_backend_relocate_section           iq2000_elf_relocate_section
 #define elf_backend_gc_mark_hook               iq2000_elf_gc_mark_hook
-#define elf_backend_gc_sweep_hook              iq2000_elf_gc_sweep_hook
 #define elf_backend_check_relocs               iq2000_elf_check_relocs
 #define elf_backend_object_p                   iq2000_elf_object_p
 #define elf_backend_rela_normal                        1
This page took 0.024905 seconds and 4 git commands to generate.