X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Felflink.c;h=9dfd3e957f358b55e33c73e9eec451268ec40beb;hb=ac98f9e2275ffcca560eaa0bddd282a1ff94fc28;hp=05664b4e89bb4f546a120a26e0479ddea2dfd265;hpb=03fce1c78c01a9b0e30e91be60e7af717a10bb2c;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/elflink.c b/bfd/elflink.c index 05664b4e89..9dfd3e957f 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -4680,10 +4680,17 @@ error_free_dyn: (struct bfd_link_hash_entry **) sym_hash))) goto error_free_vers; - if ((flags & BSF_GNU_UNIQUE) - && (abfd->flags & DYNAMIC) == 0 - && bfd_get_flavour (info->output_bfd) == bfd_target_elf_flavour) - elf_tdata (info->output_bfd)->has_gnu_symbols |= elf_gnu_symbol_unique; + 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