diff options
author | Alan Modra <amodra@gmail.com> | 2011-02-15 04:07:43 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2011-02-15 04:07:43 +0000 |
commit | 28be611cf8f68185d47271a242db07f87c7f17af (patch) | |
tree | 35991363e0cb8f2a4a3cee2ce74c88031159a812 /bfd/elf64-ppc.c | |
parent | ad9bb468ae3cb706c4fa5517387a50fa7f22d044 (diff) | |
download | gdb-28be611cf8f68185d47271a242db07f87c7f17af.zip gdb-28be611cf8f68185d47271a242db07f87c7f17af.tar.gz gdb-28be611cf8f68185d47271a242db07f87c7f17af.tar.bz2 |
* elf64-ppc.c (ppc64_elf_edit_toc): Reinstate second read of
toc relocs. Fuss over free(NULL).
Diffstat (limited to 'bfd/elf64-ppc.c')
-rw-r--r-- | bfd/elf64-ppc.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index 25d0d2e..856c68a 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -8424,6 +8424,12 @@ ppc64_elf_edit_toc (struct bfd_link_info *info) bfd_size_type sz; /* Remove unused toc relocs, and adjust those we keep. */ + if (toc_relocs == NULL) + toc_relocs = _bfd_elf_link_read_relocs (ibfd, toc, NULL, NULL, + info->keep_memory); + if (toc_relocs == NULL) + goto error_ret; + wrel = toc_relocs; for (rel = toc_relocs; rel < toc_relocs + toc->reloc_count; ++rel) if ((skip[rel->r_offset >> 3] @@ -8445,7 +8451,8 @@ ppc64_elf_edit_toc (struct bfd_link_info *info) rel_hdr->sh_size = toc->reloc_count * sz; } } - else if (elf_section_data (toc)->relocs != toc_relocs) + else if (toc_relocs != NULL + && elf_section_data (toc)->relocs != toc_relocs) free (toc_relocs); if (local_syms != NULL |