diff options
author | Ulf Carlsson <ulfc@engr.sgi.com> | 2000-06-17 09:47:15 +0000 |
---|---|---|
committer | Ulf Carlsson <ulfc@engr.sgi.com> | 2000-06-17 09:47:15 +0000 |
commit | 9a8f3bb7343e9c6e7aebdafc19b34a6d1dad0784 (patch) | |
tree | 2c6245ed2bd34ab53d7bdca3d79d87d8acfa05c3 /bfd/elf32-mips.c | |
parent | 4a7f7ba82c16a22762b99f4d6b4510e396fc7791 (diff) | |
download | gdb-9a8f3bb7343e9c6e7aebdafc19b34a6d1dad0784.zip gdb-9a8f3bb7343e9c6e7aebdafc19b34a6d1dad0784.tar.gz gdb-9a8f3bb7343e9c6e7aebdafc19b34a6d1dad0784.tar.bz2 |
2000-06-17 Ulf Carlsson <ulfc@engr.sgi.com>
* elf32-mips.c (mips_elf_calculate_relocation): Explicitly write
GOT entries if we're doing a static link or -Bsymbolic link.
Diffstat (limited to 'bfd/elf32-mips.c')
-rw-r--r-- | bfd/elf32-mips.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c index 29e260e..c4b5ff4 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 |