(struct elf_link_hash_table *, bfd *,
struct bfd_hash_entry *(*)
(struct bfd_hash_entry *, struct bfd_hash_table *, const char *),
- unsigned int, enum elf_target_id);
+ unsigned int);
extern bool _bfd_elf_slurp_version_tables
(bfd *, bool);
extern bool _bfd_elf_merge_sections
if (!_bfd_elf_link_hash_table_init (&ret->static_hash_table->root, abfd,
elf32_mn10300_link_hash_newfunc,
- sizeof (struct elf32_mn10300_link_hash_entry),
- MN10300_ELF_DATA))
+ sizeof (struct elf32_mn10300_link_hash_entry)))
{
free (ret->static_hash_table);
free (ret);
abfd->link.hash = NULL;
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
elf32_mn10300_link_hash_newfunc,
- sizeof (struct elf32_mn10300_link_hash_entry),
- MN10300_ELF_DATA))
+ sizeof (struct elf32_mn10300_link_hash_entry)))
{
abfd->is_linker_output = true;
abfd->link.hash = &ret->static_hash_table->root.root;
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
elf_arc_link_hash_newfunc,
- sizeof (struct elf_arc_link_hash_entry),
- ARC_ELF_DATA))
+ sizeof (struct elf_arc_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (& ret->root, abfd,
elf32_arm_link_hash_newfunc,
- sizeof (struct elf32_arm_link_hash_entry),
- ARM_ELF_DATA))
+ sizeof (struct elf32_arm_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (&htab->etab, abfd,
elf32_avr_link_hash_newfunc,
- sizeof (struct elf_link_hash_entry),
- AVR_ELF_DATA))
+ sizeof (struct elf_link_hash_entry)))
{
free (htab);
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
_bfd_elf_link_hash_newfunc,
- sizeof (struct elf_link_hash_entry),
- BFIN_ELF_DATA))
+ sizeof (struct elf_link_hash_entry)))
{
free (ret);
return NULL;
return NULL;
if (!_bfd_elf_link_hash_table_init (ret, abfd, bfin_link_hash_newfunc,
- sizeof (struct elf_link_hash_entry),
- BFIN_ELF_DATA))
+ sizeof (struct elf_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (ret, abfd,
elf32_cr16_link_hash_newfunc,
- sizeof (struct elf32_cr16_link_hash_entry),
- GENERIC_ELF_DATA))
+ sizeof (struct elf32_cr16_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
elf_cris_link_hash_newfunc,
- sizeof (struct elf_cris_link_hash_entry),
- CRIS_ELF_DATA))
+ sizeof (struct elf_cris_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
csky_elf_link_hash_newfunc,
- sizeof (struct csky_elf_link_hash_entry),
- CSKY_ELF_DATA))
+ sizeof (struct csky_elf_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
_bfd_elf_link_hash_newfunc,
- sizeof (struct elf_link_hash_entry),
- FRV_ELF_DATA))
+ sizeof (struct elf_link_hash_entry)))
{
free (ret);
return NULL;
return NULL;
if (!_bfd_elf_link_hash_table_init (&htab->etab, abfd, hppa_link_hash_newfunc,
- sizeof (struct elf32_hppa_link_hash_entry),
- HPPA32_ELF_DATA))
+ sizeof (struct elf32_hppa_link_hash_entry)))
{
free (htab);
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
_bfd_elf_link_hash_newfunc,
- sizeof (struct elf_link_hash_entry),
- LM32_ELF_DATA))
+ sizeof (struct elf_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (ret, abfd,
_bfd_elf_link_hash_newfunc,
- sizeof (struct elf_link_hash_entry),
- M32R_ELF_DATA))
+ sizeof (struct elf_link_hash_entry)))
{
free (ret);
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))
+ sizeof (struct elf_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
elf_m68k_link_hash_newfunc,
- sizeof (struct elf_m68k_link_hash_entry),
- M68K_ELF_DATA))
+ sizeof (struct elf_m68k_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (&htab->etab, abfd,
metag_link_hash_newfunc,
- sizeof (struct elf_metag_link_hash_entry),
- METAG_ELF_DATA))
+ sizeof (struct elf_metag_link_hash_entry)))
{
free (htab);
return NULL;
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
- sizeof (struct elf32_mb_link_hash_entry),
- MICROBLAZE_ELF_DATA))
+ sizeof (struct elf32_mb_link_hash_entry)))
{
free (ret);
return NULL;
/* Patch tag. */
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
nds32_elf_link_hash_newfunc,
- sizeof (struct elf_nds32_link_hash_entry),
- NDS32_ELF_DATA))
+ sizeof (struct elf_nds32_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
or1k_elf_link_hash_newfunc,
- sizeof (struct elf_or1k_link_hash_entry),
- OR1K_ELF_DATA))
+ sizeof (struct elf_or1k_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
ppc_elf_link_hash_newfunc,
- sizeof (struct ppc_elf_link_hash_entry),
- PPC32_ELF_DATA))
+ sizeof (struct ppc_elf_link_hash_entry)))
{
free (ret);
return NULL;
if (ret == NULL)
return NULL;
- if (!_bfd_elf_link_hash_table_init (ret, abfd,
- link_hash_newfunc,
- sizeof (struct
- elf_link_hash_entry),
- PRU_ELF_DATA))
+ if (!_bfd_elf_link_hash_table_init (ret, abfd, link_hash_newfunc,
+ sizeof (struct elf_link_hash_entry)))
{
free (ret);
return NULL;
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
- sizeof (struct elf_s390_link_hash_entry),
- S390_ELF_DATA))
+ sizeof (struct elf_s390_link_hash_entry)))
{
free (ret);
return NULL;
return NULL;
if (!_bfd_elf_link_hash_table_init (ret, abfd, score_elf_link_hash_newfunc,
- sizeof (struct score_elf_link_hash_entry),
- SCORE_ELF_DATA))
+ sizeof (struct score_elf_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
sh_elf_link_hash_newfunc,
- sizeof (struct elf_sh_link_hash_entry),
- SH_ELF_DATA))
+ sizeof (struct elf_sh_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (&htab->elf, abfd,
_bfd_elf_link_hash_newfunc,
- sizeof (struct elf_link_hash_entry),
- SPU_ELF_DATA))
+ sizeof (struct elf_link_hash_entry)))
{
free (htab);
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
_bfd_elf_link_hash_newfunc,
- sizeof (struct elf_link_hash_entry),
- TIC6X_ELF_DATA))
+ sizeof (struct elf_link_hash_entry)))
{
free (ret);
return NULL;
return NULL;
if (!_bfd_elf_link_hash_table_init (ret, abfd, link_hash_newfunc,
- sizeof (struct tilepro_elf_link_hash_entry),
- TILEPRO_ELF_DATA))
+ sizeof (struct tilepro_elf_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (ret, abfd,
elf_vax_link_hash_newfunc,
- sizeof (struct elf_vax_link_hash_entry),
- GENERIC_ELF_DATA))
+ sizeof (struct elf_vax_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
elf_xtensa_link_hash_newfunc,
- sizeof (struct elf_xtensa_link_hash_entry),
- XTENSA_ELF_DATA))
+ sizeof (struct elf_xtensa_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
elf64_alpha_link_hash_newfunc,
- sizeof (struct alpha_elf_link_hash_entry),
- ALPHA_ELF_DATA))
+ sizeof (struct alpha_elf_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (&htab->root, abfd,
hppa64_link_hash_newfunc,
- sizeof (struct elf64_hppa_link_hash_entry),
- HPPA64_ELF_DATA))
+ sizeof (struct elf64_hppa_link_hash_entry)))
{
free (htab);
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
elf64_ia64_new_elf_hash_entry,
- sizeof (struct elf64_ia64_link_hash_entry),
- IA64_ELF_DATA))
+ sizeof (struct elf64_ia64_link_hash_entry)))
{
free (ret);
return NULL;
return NULL;
if (!_bfd_elf_link_hash_table_init (&htab->elf, abfd, link_hash_newfunc,
- sizeof (struct ppc_link_hash_entry),
- PPC64_ELF_DATA))
+ sizeof (struct ppc_link_hash_entry)))
{
free (htab);
return NULL;
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
- sizeof (struct elf_s390_link_hash_entry),
- S390_ELF_DATA))
+ sizeof (struct elf_s390_link_hash_entry)))
{
free (ret);
return NULL;
struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
struct bfd_hash_table *,
const char *),
- unsigned int entsize,
- enum elf_target_id target_id)
+ unsigned int entsize)
{
bool ret;
- int can_refcount = get_elf_backend_data (abfd)->can_refcount;
+ const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+ int can_refcount = bed->can_refcount;
table->init_got_refcount.refcount = can_refcount - 1;
table->init_plt_refcount.refcount = can_refcount - 1;
ret = _bfd_link_hash_table_init (&table->root, abfd, newfunc, entsize);
table->root.type = bfd_link_elf_hash_table;
- table->hash_table_id = target_id;
- table->target_os = get_elf_backend_data (abfd)->target_os;
+ table->hash_table_id = bed->target_id;
+ table->target_os = bed->target_os;
return ret;
}
return NULL;
if (! _bfd_elf_link_hash_table_init (ret, abfd, _bfd_elf_link_hash_newfunc,
- sizeof (struct elf_link_hash_entry),
- get_elf_backend_data (abfd)->target_id))
+ sizeof (struct elf_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init
(&ret->root, abfd, elfNN_aarch64_link_hash_newfunc,
- sizeof (struct elf_aarch64_link_hash_entry), AARCH64_ELF_DATA))
+ sizeof (struct elf_aarch64_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
elfNN_ia64_new_elf_hash_entry,
- sizeof (struct elfNN_ia64_link_hash_entry),
- IA64_ELF_DATA))
+ sizeof (struct elfNN_ia64_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init
(&ret->root, abfd, elfNN_kvx_link_hash_newfunc,
- sizeof (struct elf_kvx_link_hash_entry), KVX_ELF_DATA))
+ sizeof (struct elf_kvx_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init
(&ret->elf, abfd, link_hash_newfunc,
- sizeof (struct loongarch_elf_link_hash_entry), LARCH_ELF_DATA))
+ sizeof (struct loongarch_elf_link_hash_entry)))
{
free (ret);
return NULL;
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
- sizeof (struct riscv_elf_link_hash_entry),
- RISCV_ELF_DATA))
+ sizeof (struct riscv_elf_link_hash_entry)))
{
free (ret);
return NULL;
if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
mips_elf_link_hash_newfunc,
- sizeof (struct mips_elf_link_hash_entry),
- MIPS_ELF_DATA))
+ sizeof (struct mips_elf_link_hash_entry)))
{
free (ret);
return NULL;
}
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
- sizeof (struct _bfd_sparc_elf_link_hash_entry),
- SPARC_ELF_DATA))
+ sizeof (struct _bfd_sparc_elf_link_hash_entry)))
{
free (ret);
return NULL;
}
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
- sizeof (struct tilegx_elf_link_hash_entry),
- TILEGX_ELF_DATA))
+ sizeof (struct tilegx_elf_link_hash_entry)))
{
free (ret);
return NULL;
_bfd_x86_elf_link_hash_table_create (bfd *abfd)
{
struct elf_x86_link_hash_table *ret;
- const struct elf_backend_data *bed;
size_t amt = sizeof (struct elf_x86_link_hash_table);
ret = (struct elf_x86_link_hash_table *) bfd_zmalloc (amt);
if (ret == NULL)
return NULL;
- bed = get_elf_backend_data (abfd);
if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
_bfd_x86_elf_link_hash_newfunc,
- sizeof (struct elf_x86_link_hash_entry),
- bed->target_id))
+ sizeof (struct elf_x86_link_hash_entry)))
{
free (ret);
return NULL;
}
+ const struct elf_backend_data *bed = get_elf_backend_data (abfd);
if (bed->target_id == X86_64_ELF_DATA)
{
ret->is_reloc_section = elf_x86_64_is_reloc_section;