From b944b044fb3664008f20a3f5434325437ed99a93 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Mon, 9 Aug 1999 22:45:39 +0000 Subject: [PATCH] * elf32-mips.c (elf_mips_howto_table): Fix src_mask for R_MIPS_GOT16 and R_MIPS_CALL16. (mips_elf_got16_entry): Use mips_elf_high to calculate the value to use wheen looking for a preexisting GOT entry. --- bfd/ChangeLog | 7 +++++++ bfd/elf32-mips.c | 10 +++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 349d9831e08..9be218b8577 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +1999-08-09 Mark Mitchell + + * elf32-mips.c (elf_mips_howto_table): Fix src_mask for + R_MIPS_GOT16 and R_MIPS_CALL16. + (mips_elf_got16_entry): Use mips_elf_high to calculate the value + to use wheen looking for a preexisting GOT entry. + 1999-08-09 Jakub Jelinek * elf64-sparc.c (sparc64_elf_relocate_section): Back out part of diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c index f0b8bec2cb1..27e1c5ee87c 100644 --- a/bfd/elf32-mips.c +++ b/bfd/elf32-mips.c @@ -602,7 +602,7 @@ static reloc_howto_type elf_mips_howto_table[] = _bfd_mips_elf_got16_reloc, /* special_function */ "R_MIPS_GOT16", /* name */ false, /* partial_inplace */ - 0, /* src_mask */ + 0xffff, /* src_mask */ 0xffff, /* dst_mask */ false), /* pcrel_offset */ @@ -632,7 +632,7 @@ static reloc_howto_type elf_mips_howto_table[] = bfd_elf_generic_reloc, /* special_function */ "R_MIPS_CALL16", /* name */ false, /* partial_inplace */ - 0, /* src_mask */ + 0xffff, /* src_mask */ 0xffff, /* dst_mask */ false), /* pcrel_offset */ @@ -5537,7 +5537,11 @@ mips_elf_got16_entry (abfd, info, value) bfd_vma index; bfd_vma address; - value &= 0xffff0000; + /* Although the ABI says that it is "the high-order 16 bits" that we + want, it is really the %high value. The complete value is + calculated with a `addiu' of a LO16 relocation, just as with a + HI16/LO16 pair. */ + value = mips_elf_high (value); g = mips_elf_got_info (elf_hash_table (info)->dynobj, &sgot); /* Look to see if we already have an appropriate entry. */ -- 2.30.2