From 6c9b78e69106c5a87337c10c5f6465332c1d9da7 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 25 Mar 2013 06:03:48 +0000 Subject: [PATCH] * elflink.c (_bfd_elf_merge_symbol): Use local var holding value of *sym_hash. --- bfd/ChangeLog | 5 +++++ bfd/elflink.c | 22 ++++++++++------------ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 04e2f2c7bb..f4e80c9285 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2013-03-25 Alan Modra + + * elflink.c (_bfd_elf_merge_symbol): Use local var holding value + of *sym_hash. + 2013-03-25 Alan Modra * elflink.c (_bfd_elf_merge_symbol): Don't discard TLS symbols here. diff --git a/bfd/elflink.c b/bfd/elflink.c index 1e341dabb5..b57bcd2b1b 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -1185,7 +1185,7 @@ _bfd_elf_merge_symbol (bfd *abfd, /* If the new symbol with non-default visibility comes from a relocatable file and the old definition comes from a dynamic object, we remove the old definition. */ - if ((*sym_hash)->root.type == bfd_link_hash_indirect) + if (hi->root.type == bfd_link_hash_indirect) { /* Handle the case where the old dynamic definition is default versioned. We need to copy the symbol info from @@ -1193,13 +1193,11 @@ _bfd_elf_merge_symbol (bfd *abfd, was referenced before. */ if (h->ref_regular) { - struct elf_link_hash_entry *vh = *sym_hash; - - vh->root.type = h->root.type; + hi->root.type = h->root.type; h->root.type = bfd_link_hash_indirect; - (*bed->elf_backend_copy_indirect_symbol) (info, vh, h); + (*bed->elf_backend_copy_indirect_symbol) (info, hi, h); - h->root.u.i.link = (struct bfd_link_hash_entry *) vh; + h->root.u.i.link = (struct bfd_link_hash_entry *) hi; if (ELF_ST_VISIBILITY (sym->st_other) != STV_PROTECTED) { /* If the new symbol is hidden or internal, completely undo @@ -1216,10 +1214,10 @@ _bfd_elf_merge_symbol (bfd *abfd, h->size = 0; h->type = 0; - h = vh; + h = hi; } else - h = *sym_hash; + h = hi; } /* If the old symbol was undefined before, then it will still be @@ -1496,8 +1494,8 @@ _bfd_elf_merge_symbol (bfd *abfd, *type_change_ok = TRUE; } - if ((*sym_hash)->root.type == bfd_link_hash_indirect) - flip = *sym_hash; + if (hi->root.type == bfd_link_hash_indirect) + flip = hi; else /* This union may have been set to be non-NULL when this symbol was seen in a dynamic object. We must force the union to be @@ -1542,8 +1540,8 @@ _bfd_elf_merge_symbol (bfd *abfd, *size_change_ok = TRUE; *type_change_ok = TRUE; - if ((*sym_hash)->root.type == bfd_link_hash_indirect) - flip = *sym_hash; + if (hi->root.type == bfd_link_hash_indirect) + flip = hi; else h->verinfo.vertree = NULL; }