* elflink.c (_bfd_elf_merge_symbol): Use local var holding value
authorAlan Modra <amodra@gmail.com>
Mon, 25 Mar 2013 06:03:48 +0000 (06:03 +0000)
committerAlan Modra <amodra@gmail.com>
Mon, 25 Mar 2013 06:03:48 +0000 (06:03 +0000)
of *sym_hash.

bfd/ChangeLog
bfd/elflink.c

index 04e2f2c7bb2dae39f7249d4370744b44f6b94fe4..f4e80c92853b6481ae3d58dcc640a0cb114ff795 100644 (file)
@@ -1,3 +1,8 @@
+2013-03-25  Alan Modra  <amodra@gmail.com>
+
+       * elflink.c (_bfd_elf_merge_symbol): Use local var holding value
+       of *sym_hash.
+
 2013-03-25  Alan Modra  <amodra@gmail.com>
 
        * elflink.c (_bfd_elf_merge_symbol): Don't discard TLS symbols here.
index 1e341dabb55fe322e31ec7216ef267f5c770e279..b57bcd2b1b2d51d27686baf6796034d8d6324948 100644 (file)
@@ -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;
     }