diff --git a/bfd/ChangeLog b/bfd/ChangeLog index bf400a93512..52ff6475222 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2017-10-10 H.J. Lu + + * elf32-i386.c (elf_i386_check_relocs): Set GOT refcount to 1 + instead of incrementing it. + * elf64-x86-64.c (elf_x86_64_check_relocs): Likewise. + 2017-10-10 Renlin Li PR ld/21402 diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c index f752de6063b..ade1e7d9cec 100644 --- a/bfd/elf32-i386.c +++ b/bfd/elf32-i386.c @@ -1603,7 +1603,7 @@ elf_i386_check_relocs (bfd *abfd, switch (r_type) { case R_386_TLS_LDM: - htab->tls_ld_or_ldm_got.refcount += 1; + htab->tls_ld_or_ldm_got.refcount = 1; goto create_got; case R_386_PLT32: @@ -1670,7 +1670,7 @@ elf_i386_check_relocs (bfd *abfd, if (h != NULL) { - h->got.refcount += 1; + h->got.refcount = 1; old_tls_type = elf_x86_hash_entry (h)->tls_type; } else @@ -1696,7 +1696,7 @@ elf_i386_check_relocs (bfd *abfd, elf_x86_local_got_tls_type (abfd) = (char *) (local_got_refcounts + 2 * symtab_hdr->sh_info); } - local_got_refcounts[r_symndx] += 1; + local_got_refcounts[r_symndx] = 1; old_tls_type = elf_x86_local_got_tls_type (abfd) [r_symndx]; } diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c index 0b0aa6cb4de..7d65dca298d 100644 --- a/bfd/elf64-x86-64.c +++ b/bfd/elf64-x86-64.c @@ -1950,7 +1950,7 @@ elf_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info, switch (r_type) { case R_X86_64_TLSLD: - htab->tls_ld_or_ldm_got.refcount += 1; + htab->tls_ld_or_ldm_got.refcount = 1; goto create_got; case R_X86_64_TPOFF32: @@ -1992,7 +1992,7 @@ elf_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info, if (h != NULL) { - h->got.refcount += 1; + h->got.refcount = 1; old_tls_type = eh->tls_type; } else @@ -2018,7 +2018,7 @@ elf_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info, elf_x86_local_got_tls_type (abfd) = (char *) (local_got_refcounts + 2 * symtab_hdr->sh_info); } - local_got_refcounts[r_symndx] += 1; + local_got_refcounts[r_symndx] = 1; old_tls_type = elf_x86_local_got_tls_type (abfd) [r_symndx]; }