aboutsummaryrefslogtreecommitdiff
path: root/bfd/elfxx-mips.c
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2008-08-07 20:01:38 +0000
committerRichard Sandiford <rdsandiford@googlemail.com>2008-08-07 20:01:38 +0000
commitaff469fa8d827ab43af54944ad74865e918c979e (patch)
treee87635f0d6166a468faf114fff535f3c7ea22827 /bfd/elfxx-mips.c
parent23cc69b6636ef7c99fd9b1e076d683e1a96283df (diff)
downloadfsf-binutils-gdb-aff469fa8d827ab43af54944ad74865e918c979e.zip
fsf-binutils-gdb-aff469fa8d827ab43af54944ad74865e918c979e.tar.gz
fsf-binutils-gdb-aff469fa8d827ab43af54944ad74865e918c979e.tar.bz2
bfd/
* elfxx-mips.c (mips_elf_record_relocs): Defer allocation of a global GOT entry when deferring allocation of dynamic relocations. (allocate_dynrelocs): When allocating deferred dynamic relocations, also do the deferred allocation of a GOT entry.
Diffstat (limited to 'bfd/elfxx-mips.c')
-rw-r--r--bfd/elfxx-mips.c21
1 files changed, 6 insertions, 15 deletions
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 36c94d5..4e1481b 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -7274,21 +7274,6 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
are relocations against the text segment. */
hmips->readonly_reloc = TRUE;
}
-
- /* Even though we don't directly need a GOT entry for
- this symbol, a symbol must have a dynamic symbol
- table index greater that DT_MIPS_GOTSYM if there are
- dynamic relocations against it. This does not apply
- to VxWorks, which does not have the usual coupling
- between global GOT entries and .dynsym entries. */
- if (h != NULL && !htab->is_vxworks)
- {
- struct mips_elf_link_hash_entry *hmips;
-
- hmips = (struct mips_elf_link_hash_entry *) h;
- if (hmips->global_got_area > GGA_RELOC_ONLY)
- hmips->global_got_area = GGA_RELOC_ONLY;
- }
}
if (SGI_COMPAT (abfd))
@@ -7585,6 +7570,12 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
if (do_copy)
{
+ /* Even though we don't directly need a GOT entry for this symbol,
+ a symbol must have a dynamic symbol table index greater that
+ DT_MIPS_GOTSYM if there are dynamic relocations against it. */
+ if (hmips->global_got_area > GGA_RELOC_ONLY)
+ hmips->global_got_area = GGA_RELOC_ONLY;
+
mips_elf_allocate_dynamic_relocations
(dynobj, info, hmips->possibly_dynamic_relocs);
if (hmips->readonly_reloc)