+2008-03-20 Richard Sandiford <rsandifo@nildram.co.uk>
+
+ * elfxx-mips.c (MIPS_ELF_GNU_GOT1_MASK): New macro.
+ (_bfd_mips_elf_finish_dynamic_sections): Use it instead of 0x80000000.
+
2008-03-20 Alan Modra <amodra@bigpond.net.au>
* elf32-spu.c (spu_elf_create_sections): Remove output_bfd parameter.
#define MIPS_RESERVED_GOTNO(INFO) \
(mips_elf_hash_table (INFO)->is_vxworks ? 3 : 2)
+/* The value to write into got[1] for SVR4 targets, to identify it is
+ a GNU object. The dynamic linker can then use got[1] to store the
+ module pointer. */
+#define MIPS_ELF_GNU_GOT1_MASK(abfd) \
+ ((bfd_vma) 1 << (ABI_64_P (abfd) ? 63 : 31))
+
/* The offset of $gp from the beginning of the .got section. */
#define ELF_MIPS_GP_OFFSET(INFO) \
(mips_elf_hash_table (INFO)->is_vxworks ? 0x0 : 0x7ff0)
runtime. The second entry will be used by some runtime loaders.
This isn't the case of IRIX rld. */
MIPS_ELF_PUT_WORD (output_bfd, (bfd_vma) 0, sgot->contents);
- MIPS_ELF_PUT_WORD (output_bfd, (bfd_vma) 0x80000000,
+ MIPS_ELF_PUT_WORD (output_bfd, MIPS_ELF_GNU_GOT1_MASK (output_bfd),
sgot->contents + MIPS_ELF_GOT_SIZE (output_bfd));
}
MIPS_ELF_PUT_WORD (output_bfd, 0, sgot->contents
+ index++ * MIPS_ELF_GOT_SIZE (output_bfd));
- MIPS_ELF_PUT_WORD (output_bfd, 0x80000000, sgot->contents
+ MIPS_ELF_PUT_WORD (output_bfd, MIPS_ELF_GNU_GOT1_MASK (output_bfd),
+ sgot->contents
+ index++ * MIPS_ELF_GOT_SIZE (output_bfd));
if (! info->shared)
+2008-03-20 Richard Sandiford <rsandifo@nildram.co.uk>
+
+ * ld-mips-elf/elf-rel-got-n64-linux.d: Expect bit 63 rather than
+ bit 31 of the second GOT entry to be set.
+ * ld-mips-elf/elf-rel-got-n64.d: Likewise.
+ * ld-mips-elf/elf-rel-xgot-n64-linux.d: Likewise.
+ * ld-mips-elf/elf-rel-xgot-n64.d: Likewise.
+
2008-03-17 Richard Sandiford <rsandifo@nildram.co.uk>
* ld-mips-elf/eh-frame1-n32.d: Expect a warning about .eh_frame_hdr.