+2014-02-04 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * coff-rs6000.c (xcoff_write_archive_contents_big): Free OFFSETS in
+ return paths. Three times.
+ * elf64-ppc.c (ppc64_elf_link_hash_table_create): Free HTAB in all
+ return paths.
+ (ppc64_elf_tls_optimize): Free TOC_REF in return path.
+ (ppc64_elf_edit_toc): Free USED in return path.
+
2014-02-03 Sandra Loosemore <sandra@codesourcery.com>
* reloc.c (BFD_RELOC_NIOS2_GOT_LO, BFD_RELOC_NIOS2_GOT_HA): New.
PRINT20 (ahdrp->nextoff, iterator.next.offset);
if (!do_pad (abfd, iterator.current.leading_padding))
- return FALSE;
+ {
+ free (offsets);
+ return FALSE;
+ }
BFD_ASSERT (iterator.current.offset == bfd_tell (abfd));
namlen = iterator.current.padded_namlen;
|| bfd_seek (iterator.current.member, 0, SEEK_SET) != 0
|| !do_copy (abfd, iterator.current.member)
|| !do_pad (abfd, iterator.current.trailing_padding))
- return FALSE;
+ {
+ free (offsets);
+ return FALSE;
+ }
offsets[i] = iterator.current.offset;
prevoff = iterator.current.offset;
member_table_size += member_table_size & 1;
member_table = bfd_zmalloc (member_table_size);
if (member_table == NULL)
- return FALSE;
+ {
+ free (offsets);
+ return FALSE;
+ }
hdr = (struct xcoff_ar_hdr_big *) member_table;
/* Init the stub hash table too. */
if (!bfd_hash_table_init (&htab->stub_hash_table, stub_hash_newfunc,
sizeof (struct ppc_stub_hash_entry)))
- return NULL;
+ {
+ _bfd_elf_link_hash_table_free ((struct bfd_link_hash_table *) htab);
+ return NULL;
+ }
/* And the branch hash table. */
if (!bfd_hash_table_init (&htab->branch_hash_table, branch_hash_newfunc,
sizeof (struct ppc_branch_hash_entry)))
- return NULL;
+ {
+ bfd_hash_table_free (&htab->stub_hash_table);
+ _bfd_elf_link_hash_table_free ((struct bfd_link_hash_table *) htab);
+ return NULL;
+ }
htab->tocsave_htab = htab_try_create (1024,
tocsave_htab_hash,
tocsave_htab_eq,
NULL);
if (htab->tocsave_htab == NULL)
- return NULL;
+ {
+ bfd_hash_table_free (&htab->branch_hash_table);
+ bfd_hash_table_free (&htab->stub_hash_table);
+ _bfd_elf_link_hash_table_free ((struct bfd_link_hash_table *) htab);
+ return NULL;
+ }
/* Initializing two fields of the union is just cosmetic. We really
only care about glist, but when compiled on a 32-bit host the
relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL,
info->keep_memory);
if (relstart == NULL)
- return FALSE;
+ {
+ free (toc_ref);
+ return FALSE;
+ }
relend = relstart + sec->reloc_count;
for (rel = relstart; rel < relend; rel++)
relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL,
info->keep_memory);
if (relstart == NULL)
- goto error_ret;
+ {
+ free (used);
+ goto error_ret;
+ }
/* Mark toc entries referenced as used. */
do