From: Richard Sandiford Date: Thu, 7 Aug 2008 20:01:38 +0000 (+0000) Subject: bfd/ X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=aff469fa8d827ab43af54944ad74865e918c979e;p=binutils-gdb.git 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. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 581e89b0bd0..9b6d8088ed7 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2008-08-07 Richard Sandiford + + * 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. + 2008-08-07 Richard Sandiford * elfxx-mips.c (mips_got_info): Add a "reloc_only_gotno" field. diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c index 36c94d52beb..4e1481b2b6b 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)