struct ppc_link_hash_table *htab;
htab = (struct ppc_link_hash_table *) obfd->link.hash;
+ free (htab->relr);
if (htab->tocsave_htab)
htab_delete (htab->tocsave_htab);
bfd_hash_table_free (&htab->branch_hash_table);
/* Enter this entry into the linker stub hash table. */
stub_entry = ppc_stub_hash_lookup (&htab->stub_hash_table, stub_name,
- true, false);
+ true, true);
if (stub_entry == NULL)
{
/* xgettext:c-format */
break;
}
sec = bfd_section_from_elf_index (opd_bfd, sym->st_shndx);
+ if (sec != NULL)
+ {
+ BFD_ASSERT ((sec->flags & SEC_MERGE) == 0);
+ val = sym->st_value;
+ }
+ if (symndx >= symtab_hdr->sh_info)
+ free (sym);
if (sec == NULL)
break;
- BFD_ASSERT ((sec->flags & SEC_MERGE) == 0);
- val = sym->st_value;
}
val += look->r_addend;
len1 = strlen (stub_str[stub_entry->type.main - 1]);
len2 = strlen (stub_entry->root.string);
- name = bfd_malloc (len1 + len2 + 2);
+ name = bfd_alloc (info->output_bfd, len1 + len2 + 2);
if (name == NULL)
return false;
memcpy (name, stub_entry->root.string, 9);
htab->sec_info_arr_size = _bfd_section_id;
amt = sizeof (*htab->sec_info) * (htab->sec_info_arr_size);
- htab->sec_info = bfd_zmalloc (amt);
+ htab->sec_info = bfd_zalloc (info->output_bfd, amt);
if (htab->sec_info == NULL)
return -1;
}
stub_entry = ppc_add_stub (stub_name, section, info);
+ free (stub_name);
if (stub_entry == NULL)
{
- free (stub_name);
error_ret_free_internal:
if (elf_section_data (section)->relocs == NULL)
free (internal_relocs);
if (htab->params->emit_stub_syms)
{
size_t len = strlen (h->root.root.string);
- char *name = bfd_malloc (sizeof "12345678.global_entry." + len);
+ char *name = bfd_alloc (info->output_bfd,
+ sizeof "12345678.global_entry." + len);
if (name == NULL)
return false;
loc += 8;
}
}
+ free (htab->relr);
+ htab->relr = NULL;
for (group = htab->group; group != NULL; group = group->next)
if ((stub_sec = group->stub_sec) != NULL)