From: Alan Modra Date: Fri, 23 Mar 2012 06:41:21 +0000 (+0000) Subject: PR binutils/13894 X-Git-Tag: sid-snapshot-20120401~97 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=62599110be4d6baae772ce8022801f06137495b9;p=platform%2Fupstream%2Fbinutils.git PR binutils/13894 * elf64-ppc.c (opd_entry_value): Read full symbol table when sym hashes unavailable. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index da9f409..854beee 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2012-03-23 Alan Modra + + PR binutils/13894 + * elf64-ppc.c (opd_entry_value): Read full symbol table when + sym hashes unavailable. + 2012-03-21 Eliot Dresselhaus * elf32-tic6x.c (elf32_tic6x_merge_private_bfd_data): Return TRUE diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index f4f5d0b..e7a01c2 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -5585,15 +5585,18 @@ opd_entry_value (asection *opd_sec, unsigned long symndx = ELF64_R_SYM (look->r_info); asection *sec; - if (symndx < symtab_hdr->sh_info) + if (symndx < symtab_hdr->sh_info + || elf_sym_hashes (opd_bfd) == NULL) { Elf_Internal_Sym *sym; sym = (Elf_Internal_Sym *) symtab_hdr->contents; if (sym == NULL) { - sym = bfd_elf_get_elf_syms (opd_bfd, symtab_hdr, - symtab_hdr->sh_info, + size_t symcnt = symtab_hdr->sh_info; + if (elf_sym_hashes (opd_bfd) == NULL) + symcnt = symtab_hdr->sh_size / symtab_hdr->sh_entsize; + sym = bfd_elf_get_elf_syms (opd_bfd, symtab_hdr, symcnt, 0, NULL, NULL, NULL); if (sym == NULL) break;