Indirect and warning symbols
authorAlan Modra <amodra@gmail.com>
Sat, 3 Dec 2016 10:27:27 +0000 (20:57 +1030)
committerAlan Modra <amodra@gmail.com>
Sat, 3 Dec 2016 10:27:27 +0000 (20:57 +1030)
It's possible but unlikely that an indirect symbol points at a warning
symbol.

* elf64-ppc.c (add_symbol_adjust): Correct order of tests for
warning and indirect symbols.

bfd/ChangeLog
bfd/elf64-ppc.c

index 84ac6c0e3a2897fd0e681a2d724564568f0e7173..7ec26b01b97da4582d822ed3abba0c781b8d7946 100644 (file)
@@ -1,3 +1,8 @@
+2016-12-03  Alan Modra  <amodra@gmail.com>
+
+       * elf64-ppc.c (add_symbol_adjust): Correct order of tests for
+       warning and indirect symbols.
+
 2016-12-03  Alan Modra  <amodra@gmail.com>
 
        * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Don't copy dynamic
index bfdfc09cc80364d0501eca0173cc8f7be6b8ff0f..d7d6adb9342279247d1588fdff874169797c00d2 100644 (file)
@@ -5063,12 +5063,12 @@ add_symbol_adjust (struct ppc_link_hash_entry *eh, struct bfd_link_info *info)
   struct ppc_link_hash_table *htab;
   struct ppc_link_hash_entry *fdh;
 
-  if (eh->elf.root.type == bfd_link_hash_indirect)
-    return TRUE;
-
   if (eh->elf.root.type == bfd_link_hash_warning)
     eh = (struct ppc_link_hash_entry *) eh->elf.root.u.i.link;
 
+  if (eh->elf.root.type == bfd_link_hash_indirect)
+    return TRUE;
+
   if (eh->elf.root.root.string[0] != '.')
     abort ();