aboutsummaryrefslogtreecommitdiff
path: root/bfd/elflink.h
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1999-09-04 16:26:08 +0000
committerIan Lance Taylor <ian@airs.com>1999-09-04 16:26:08 +0000
commit7843f00e2d20477ff4fe77054c7f2c5a90a20bca (patch)
treea3b1a31ff9e27a3f9e2745611d5bfd031647b44c /bfd/elflink.h
parent4fe53c9827dd950f6fac045494bb4821a40b2141 (diff)
downloadgdb-7843f00e2d20477ff4fe77054c7f2c5a90a20bca.zip
gdb-7843f00e2d20477ff4fe77054c7f2c5a90a20bca.tar.gz
gdb-7843f00e2d20477ff4fe77054c7f2c5a90a20bca.tar.bz2
* elf-bfd.h (ELF_LINK_NON_GOT_REF): Define.
* elflink.h (elf_adjust_dynamic_symbol): Copy REF_REGULAR_NONWEAK and NON_GOT_REF from weak defined symbol to real symbol. * elf32-i386.c (elf_i386_check_relocs): Set NON_GOT_REF. (elf_i386_adjust_dynamic_symbol): If NON_GOT_REF is not set, don't create a COPY reloc. * elf32-sparc.c (elf32_sparc_check_relocs): Set NON_GOT_REF. (elf32_sparc_adjust_dynamic_symbol): If NON_GOT_REF is not set, don't create a COPY reloc.
Diffstat (limited to 'bfd/elflink.h')
-rw-r--r--bfd/elflink.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/bfd/elflink.h b/bfd/elflink.h
index e60beae..e9ba45a 100644
--- a/bfd/elflink.h
+++ b/bfd/elflink.h
@@ -3349,10 +3349,11 @@ elf_adjust_dynamic_symbol (h, data)
{
/* There is an implicit reference by a regular object file
via the weak symbol. */
- weakdef->elf_link_hash_flags |= ELF_LINK_HASH_REF_REGULAR;
- if (h->weakdef->elf_link_hash_flags
- & ELF_LINK_HASH_REF_REGULAR_NONWEAK)
- weakdef->elf_link_hash_flags |= ELF_LINK_HASH_REF_REGULAR_NONWEAK;
+ weakdef->elf_link_hash_flags |=
+ (ELF_LINK_HASH_REF_REGULAR
+ | (h->elf_link_hash_flags
+ & (ELF_LINK_HASH_REF_REGULAR_NONWEAK
+ | ELF_LINK_NON_GOT_REF)));
if (! elf_adjust_dynamic_symbol (weakdef, (PTR) eif))
return false;
}