* bfd/elf32-sh.c (sh_elf_gc_mark_hook): For sh64, skip indirect
authorStephen Clarke <stephen.clarke@earthling.net>
Fri, 16 Aug 2002 18:40:54 +0000 (18:40 +0000)
committerStephen Clarke <stephen.clarke@earthling.net>
Fri, 16 Aug 2002 18:40:54 +0000 (18:40 +0000)
symbols when looking for section referred to by a relocation.
* bfd/elf64-sh.c (sh_elf64_gc_mark_hook): Likewise.

bfd/ChangeLog
bfd/elf32-sh.c
bfd/elf64-sh64.c

index 903d4c8..ed2278d 100644 (file)
@@ -1,3 +1,9 @@
+2002-08-16  Stephen Clarke <stephen.clarke@superh.com>
+
+       * bfd/elf32-sh.c (sh_elf_gc_mark_hook): For sh64, skip indirect
+       symbols when looking for section referred to by a relocation.
+       * bfd/elf64-sh.c (sh_elf64_gc_mark_hook): Likewise.
+       
 2002-08-15  Alan Modra  <amodra@bigpond.net.au>
 
        * elf32-i370.c: Move reloc enum to include/elf/i370.h.
index 522b816..147483d 100644 (file)
@@ -4872,6 +4872,11 @@ sh_elf_gc_mark_hook (sec, info, rel, h, sym)
          break;
 
        default:
+#ifdef INCLUDE_SHMEDIA
+         while (h->root.type == bfd_link_hash_indirect
+                && h->root.u.i.link)
+           h = (struct elf_link_hash_entry *) h->root.u.i.link;
+#endif
          switch (h->root.type)
            {
            case bfd_link_hash_defined:
index ba5df98..b57cc08 100644 (file)
@@ -2423,6 +2423,9 @@ sh_elf64_gc_mark_hook (sec, info, rel, h, sym)
          break;
 
        default:
+         while (h->root.type == bfd_link_hash_indirect
+                && h->root.u.i.link)
+           h = (struct elf_link_hash_entry *) h->root.u.i.link;
          switch (h->root.type)
            {
            case bfd_link_hash_defined: