diff options
author | Alan Modra <amodra@gmail.com> | 2017-10-12 09:01:54 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2017-10-12 13:13:06 +1030 |
commit | 559192d89d743834951fc386530c6bc7f89b358d (patch) | |
tree | 2241baec8776cc3e5dd1b4e0948ed8161abac1f5 /bfd/elflink.c | |
parent | f5233a1611d7d459a762b5fa93d7594a6965971f (diff) | |
download | gdb-559192d89d743834951fc386530c6bc7f89b358d.zip gdb-559192d89d743834951fc386530c6bc7f89b358d.tar.gz gdb-559192d89d743834951fc386530c6bc7f89b358d.tar.bz2 |
_bfd_elf_link_hash_hide_symbol calls in generic ELF code
This function shouldn't be called directly, except from backend code.
bfd/
* elflink.c (_bfd_elf_adjust_dynamic_symbol): Call
elf_backend_hide_symbol, not _bfd_elf_link_hash_hide_symbol.
(bfd_elf_define_start_stop): Likewise.
ld/
* emultempl/elf32.em (before_allocation): Call
elf_backend_hide_symbol, not _bfd_elf_link_hash_hide_symbol.
Formatting.
Diffstat (limited to 'bfd/elflink.c')
-rw-r--r-- | bfd/elflink.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/bfd/elflink.c b/bfd/elflink.c index 1a99058..b1b5ca7 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -2808,7 +2808,7 @@ static bfd_boolean _bfd_elf_adjust_dynamic_symbol (struct elf_link_hash_entry *h, void *data) { struct elf_info_failed *eif = (struct elf_info_failed *) data; - bfd *dynobj; + struct elf_link_hash_table *htab; const struct elf_backend_data *bed; if (! is_elf_hash_table (eif->info->hash)) @@ -2822,10 +2822,13 @@ _bfd_elf_adjust_dynamic_symbol (struct elf_link_hash_entry *h, void *data) if (! _bfd_elf_fix_symbol_flags (h, eif)) return FALSE; + htab = elf_hash_table (eif->info); + bed = get_elf_backend_data (htab->dynobj); + if (h->root.type == bfd_link_hash_undefweak) { if (eif->info->dynamic_undefined_weak == 0) - _bfd_elf_link_hash_hide_symbol (eif->info, h, TRUE); + (*bed->elf_backend_hide_symbol) (eif->info, h, TRUE); else if (eif->info->dynamic_undefined_weak > 0 && h->ref_regular && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT @@ -2921,9 +2924,6 @@ _bfd_elf_adjust_dynamic_symbol (struct elf_link_hash_entry *h, void *data) (_("warning: type and size of dynamic symbol `%s' are not defined"), h->root.root.string); - dynobj = elf_hash_table (eif->info)->dynobj; - bed = get_elf_backend_data (dynobj); - if (! (*bed->elf_backend_adjust_dynamic_symbol) (eif->info, h)) { eif->failed = TRUE; @@ -14284,7 +14284,9 @@ bfd_elf_define_start_stop (struct bfd_link_info *info, if (symbol[0] == '.') { /* .startof. and .sizeof. symbols are local. */ - _bfd_elf_link_hash_hide_symbol (info, h, TRUE); + const struct elf_backend_data *bed; + bed = get_elf_backend_data (info->output_bfd); + (*bed->elf_backend_hide_symbol) (info, h, TRUE); } else if (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT) h->other = (h->other & ~ELF_ST_VISIBILITY (-1)) | STV_PROTECTED; |