2005-06-20 H.J. Lu <hongjiu.lu@intel.com>
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 20 Jun 2005 13:06:27 +0000 (13:06 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 20 Jun 2005 13:06:27 +0000 (13:06 +0000)
PR 1022
* elf32-hppa.c (elf32_hppa_check_relocs): Handle indirect
symbol.

bfd/ChangeLog
bfd/elf32-hppa.c

index 0f4a949122f7940fb9b95f9b3d98c9b25025b340..2b6ddabcdb9b34780427518f53b2ffe35bc71c3f 100644 (file)
@@ -1,6 +1,12 @@
 2005-06-20  H.J. Lu  <hongjiu.lu@intel.com>
 
-       PR 1025:
+       PR 1022
+       * elf32-hppa.c (elf32_hppa_check_relocs): Handle indirect
+       symbol.
+
+2005-06-20  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR 1025
        * elf32-i386.c (elf_i386_check_relocs): Handle indirect symbol.
        * elf64-x86-64.c (elf64_x86_64_check_relocs): Likewise.
 
index 12f1b04adc712697d9cbd0fe30c34378744f588c..cdae72a7f44b40aac8895d0af5805bf64b11b563 100644 (file)
@@ -1085,8 +1085,13 @@ elf32_hppa_check_relocs (bfd *abfd,
       if (r_symndx < symtab_hdr->sh_info)
        h = NULL;
       else
-       h = ((struct elf32_hppa_link_hash_entry *)
+       {
+         h = ((struct elf32_hppa_link_hash_entry *)
             sym_hashes[r_symndx - symtab_hdr->sh_info]);
+         while (h->elf.root.type == bfd_link_hash_indirect
+                || h->elf.root.type == bfd_link_hash_warning)
+           h = (struct elf32_hppa_link_hash_entry *) h->elf.root.u.i.link;
+       }
 
       r_type = ELF32_R_TYPE (rel->r_info);