struct m68hc11_elf_link_hash_table* m68hc11_elf_hash_table_create (bfd *abfd) { struct m68hc11_elf_link_hash_table *ret; bfd_size_type amt = sizeof (struct m68hc11_elf_link_hash_table); ret = (struct m68hc11_elf_link_hash_table *) bfd_malloc (amt); if (ret == (struct m68hc11_elf_link_hash_table *) NULL) return NULL; memset (ret, 0, amt); if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, _bfd_elf_link_hash_newfunc, sizeof (struct elf_link_hash_entry), M68HC11_ELF_DATA)) { free (ret); return NULL; } /* Init the stub hash table too. */ amt = sizeof (struct bfd_hash_table); ret->stub_hash_table = (struct bfd_hash_table*) bfd_malloc (amt); if (ret->stub_hash_table == NULL) { free (ret); return NULL; } if (!bfd_hash_table_init (ret->stub_hash_table, stub_hash_newfunc, sizeof (struct elf32_m68hc11_stub_hash_entry))) return NULL; ret->stub_bfd = NULL; ret->stub_section = 0; ret->add_stub_section = NULL; ret->sym_cache.abfd = NULL; return ret; }
struct m68hc11_elf_link_hash_table* m68hc11_elf_hash_table_create (bfd *abfd) { struct m68hc11_elf_link_hash_table *ret; bfd_size_type amt = sizeof (struct m68hc11_elf_link_hash_table); ret = (struct m68hc11_elf_link_hash_table *) bfd_zmalloc (amt); if (ret == (struct m68hc11_elf_link_hash_table *) NULL) return NULL; if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, _bfd_elf_link_hash_newfunc, sizeof (struct elf_link_hash_entry), M68HC11_ELF_DATA)) { free (ret); return NULL; } /* Init the stub hash table too. */ amt = sizeof (struct bfd_hash_table); ret->stub_hash_table = (struct bfd_hash_table*) bfd_malloc (amt); if (ret->stub_hash_table == NULL) { _bfd_elf_link_hash_table_free (abfd); return NULL; } if (!bfd_hash_table_init (ret->stub_hash_table, stub_hash_newfunc, sizeof (struct elf32_m68hc11_stub_hash_entry))) { free (ret->stub_hash_table); _bfd_elf_link_hash_table_free (abfd); return NULL; } ret->root.root.hash_table_free = m68hc11_elf_bfd_link_hash_table_free; return ret; }