From: ulfc Date: Sat, 17 Jun 2000 09:47:14 +0000 (+0000) Subject: 2000-06-17 Ulf Carlsson X-Git-Tag: pre-cygwin-heap~995 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=1bc5b4130e89414ab933e4a805b6073c8a1e6860;p=pf3gnuchains%2Fpf3gnuchains4x.git 2000-06-17 Ulf Carlsson * elf32-mips.c (mips_elf_calculate_relocation): Explicitly write GOT entries if we're doing a static link or -Bsymbolic link. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 83087a4de2..e50360cdb2 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2000-06-17 Ulf Carlsson + + * elf32-mips.c (mips_elf_calculate_relocation): Explicitly write + GOT entries if we're doing a static link or -Bsymbolic link. + 2000-06-15 Ulf Carlsson * elflink.h (elf_link_adjust_relocs): Check for and call backend diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c index 29e260e213..c4b5ff46a8 100644 --- a/bfd/elf32-mips.c +++ b/bfd/elf32-mips.c @@ -6026,6 +6026,19 @@ mips_elf_calculate_relocation (abfd, g = mips_elf_global_got_index (elf_hash_table (info)->dynobj, (struct elf_link_hash_entry*) h); + if (! elf_hash_table(info)->dynamic_sections_created + || (info->shared + && (info->symbolic || h->root.dynindx == -1) + && (h->root.elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR))) + { + /* This is a static link or a -Bsymbolic link. The + symbol is defined locally, or was forced to be local. + We must initialize this entry in the GOT. */ + asection *sgot = mips_elf_got_section(elf_hash_table + (info)->dynobj); + MIPS_ELF_PUT_WORD (elf_hash_table (info)->dynobj, + symbol + addend, sgot->contents + g); + } } else if (r_type == R_MIPS_GOT16) /* There's no need to create a local GOT entry here; the