summaryrefslogtreecommitdiff
path: root/bfd/elflink.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2017-10-12 09:01:54 +1030
committerAlan Modra <amodra@gmail.com>2017-10-12 13:13:06 +1030
commit559192d89d743834951fc386530c6bc7f89b358d (patch)
tree2241baec8776cc3e5dd1b4e0948ed8161abac1f5 /bfd/elflink.c
parentf5233a1611d7d459a762b5fa93d7594a6965971f (diff)
_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.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 1a990582cb..b1b5ca7376 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;