]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - bfd/elflink.c
ELF final_write_processing
[thirdparty/binutils-gdb.git] / bfd / elflink.c
index 9175d3fa20eeffd5eead0bda5fbcb74b554cef95..2830ee31b9856bda283640205583390c15126538 100644 (file)
@@ -4739,18 +4739,6 @@ error_free_dyn:
              (struct bfd_link_hash_entry **) sym_hash)))
        goto error_free_vers;
 
-      if ((abfd->flags & DYNAMIC) == 0
-         && (bfd_get_flavour (info->output_bfd)
-             == bfd_target_elf_flavour))
-       {
-         if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)
-           elf_tdata (info->output_bfd)->has_gnu_symbols
-             |= elf_gnu_symbol_ifunc;
-         if ((flags & BSF_GNU_UNIQUE))
-           elf_tdata (info->output_bfd)->has_gnu_symbols
-             |= elf_gnu_symbol_unique;
-       }
-
       h = *sym_hash;
       /* We need to make sure that indirect symbol dynamic flags are
         updated.  */
@@ -9411,6 +9399,11 @@ elf_link_output_symstrtab (struct elf_final_link_info *flinfo,
        return ret;
     }
 
+  if (ELF_ST_TYPE (elfsym->st_info) == STT_GNU_IFUNC)
+    elf_tdata (flinfo->output_bfd)->has_gnu_osabi |= elf_gnu_osabi_ifunc;
+  if (ELF_ST_BIND (elfsym->st_info) == STB_GNU_UNIQUE)
+    elf_tdata (flinfo->output_bfd)->has_gnu_osabi |= elf_gnu_osabi_unique;
+
   if (name == NULL
       || *name == '\0'
       || (input_sec->flags & SEC_EXCLUDE))