mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-29 08:24:05 +08:00
* elf32-mips.c (mips_elf_calculate_relocation): Undefined weak
symbols are considered to have the value zero. (_bfd_mips_elf_relocate_section): Don't try to perform a relocation for an undefined symbol. (_bfd_mips_elf_check_relocs): Allocate locate GOT space for local GOT16 relocations.
This commit is contained in:
@ -1,3 +1,12 @@
|
|||||||
|
1999-08-01 Mark Mitchell <mark@codesourcery.com>
|
||||||
|
|
||||||
|
* elf32-mips.c (mips_elf_calculate_relocation): Undefined weak
|
||||||
|
symbols are considered to have the value zero.
|
||||||
|
(_bfd_mips_elf_relocate_section): Don't try to perform a
|
||||||
|
relocation for an undefined symbol.
|
||||||
|
(_bfd_mips_elf_check_relocs): Allocate locate GOT space for local
|
||||||
|
GOT16 relocations.
|
||||||
|
|
||||||
1999-07-30 Jakub Jelinek <jj@ultra.linux.cz>
|
1999-07-30 Jakub Jelinek <jj@ultra.linux.cz>
|
||||||
|
|
||||||
* elf64-sparc.c (sparc64_elf_build_plt): Cosmetic change - ABI
|
* elf64-sparc.c (sparc64_elf_build_plt): Cosmetic change - ABI
|
||||||
|
@ -5870,6 +5870,12 @@ mips_elf_calculate_relocation (abfd,
|
|||||||
else
|
else
|
||||||
symbol = h->root.root.u.def.value;
|
symbol = h->root.root.u.def.value;
|
||||||
}
|
}
|
||||||
|
else if (h->root.root.type == bfd_link_hash_undefweak)
|
||||||
|
/* We allow relocations against undefined weak symbols, giving
|
||||||
|
it the value zero, so that you can undefined weak functions
|
||||||
|
and check to see if they exist by looking at their
|
||||||
|
addresses. */
|
||||||
|
symbol = 0;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
(*info->callbacks->undefined_symbol)
|
(*info->callbacks->undefined_symbol)
|
||||||
@ -6637,8 +6643,10 @@ _bfd_mips_elf_relocate_section (output_bfd, info, input_bfd, input_section,
|
|||||||
|
|
||||||
case bfd_reloc_undefined:
|
case bfd_reloc_undefined:
|
||||||
/* mips_elf_calculate_relocation already called the
|
/* mips_elf_calculate_relocation already called the
|
||||||
undefined_symbol callback. */
|
undefined_symbol callback. There's no real point in
|
||||||
break;
|
trying to perform the relocation at this point, so we
|
||||||
|
just skip ahead to the next relocation. */
|
||||||
|
continue;
|
||||||
|
|
||||||
case bfd_reloc_notsupported:
|
case bfd_reloc_notsupported:
|
||||||
abort ();
|
abort ();
|
||||||
@ -7331,14 +7339,15 @@ _bfd_mips_elf_check_relocs (abfd, info, sec, relocs)
|
|||||||
|
|
||||||
if (!h && (r_type == R_MIPS_CALL_LO16
|
if (!h && (r_type == R_MIPS_CALL_LO16
|
||||||
|| r_type == R_MIPS_GOT_LO16
|
|| r_type == R_MIPS_GOT_LO16
|
||||||
|| r_type == R_MIPS_GOT_DISP))
|
|| r_type == R_MIPS_GOT_DISP
|
||||||
|
|| r_type == R_MIPS_GOT16))
|
||||||
{
|
{
|
||||||
/* We may need a local GOT entry for this relocation. We
|
/* We may need a local GOT entry for this relocation. We
|
||||||
don't count R_MIPS_HI16 or R_MIPS_GOT16 relocations
|
don't count R_MIPS_GOT_PAGE because we can estimate the
|
||||||
because they are always followed by a R_MIPS_LO16
|
maximum number of pages needed by looking at the size of
|
||||||
relocation for the value. We don't R_MIPS_GOT_PAGE
|
the segment. We don't count R_MIPS_GOT_HI16, or
|
||||||
because we can estimate the maximum number of pages
|
R_MIPS_CALL_HI16 because these are always followed by an
|
||||||
needed by looking at the size of the segment.
|
R_MIPS_GOT_LO16 or R_MIPS_CALL_LO16.
|
||||||
|
|
||||||
This estimation is very conservative since we can merge
|
This estimation is very conservative since we can merge
|
||||||
duplicate entries in the GOT. In order to be less
|
duplicate entries in the GOT. In order to be less
|
||||||
|
Reference in New Issue
Block a user