* elf32-mips.c (_bfd_mips_elf_check_relocs): Don't allocate local
GOT entries for GOT16 relocations; they're not required.
This commit is contained in:
parent
9a09773023
commit
9458945f8f
@ -1,3 +1,8 @@
|
|||||||
|
1999-08-26 Mark Mitchell <mark@codesourcery.com>
|
||||||
|
|
||||||
|
* elf32-mips.c (_bfd_mips_elf_check_relocs): Don't allocate local
|
||||||
|
GOT entries for GOT16 relocations; they're not required.
|
||||||
|
|
||||||
1999-08-24 Nick Clifton <nickc@cygnus.com>
|
1999-08-24 Nick Clifton <nickc@cygnus.com>
|
||||||
|
|
||||||
From a patch submitted by Roland McGrath <roland@baalperazim.frob.com>
|
From a patch submitted by Roland McGrath <roland@baalperazim.frob.com>
|
||||||
|
@ -7456,15 +7456,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_GOT_PAGE because we can estimate the
|
don't count R_MIPS_GOT_PAGE because we can estimate the
|
||||||
maximum number of pages needed by looking at the size of
|
maximum number of pages needed by looking at the size of
|
||||||
the segment. We don't count R_MIPS_GOT_HI16, or
|
the segment. Similar comments apply to R_MIPS_GOT16. We
|
||||||
R_MIPS_CALL_HI16 because these are always followed by an
|
don't count R_MIPS_GOT_HI16, or R_MIPS_CALL_HI16 because
|
||||||
R_MIPS_GOT_LO16 or R_MIPS_CALL_LO16.
|
these are always followed by an 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
|
||||||
@ -8003,8 +8003,14 @@ _bfd_mips_elf_size_dynamic_sections (output_bfd, info)
|
|||||||
loadable_size += MIPS_FUNCTION_STUB_SIZE;
|
loadable_size += MIPS_FUNCTION_STUB_SIZE;
|
||||||
|
|
||||||
/* Assume there are two loadable segments consisting of
|
/* Assume there are two loadable segments consisting of
|
||||||
contiguous sections. Is 5 enough? */
|
contiguous sections. Is 5 enough? */
|
||||||
local_gotno = (loadable_size >> 16) + 5;
|
local_gotno = (loadable_size >> 16) + 5;
|
||||||
|
if (IRIX_COMPAT (output_bfd) == ict_irix6)
|
||||||
|
/* It's possible we will need GOT_PAGE entries as well as
|
||||||
|
GOT16 entries. Often, these will be able to share GOT
|
||||||
|
entries, but not always. */
|
||||||
|
local_gotno *= 2;
|
||||||
|
|
||||||
g->local_gotno += local_gotno;
|
g->local_gotno += local_gotno;
|
||||||
s->_raw_size += local_gotno * MIPS_ELF_GOT_SIZE (dynobj);
|
s->_raw_size += local_gotno * MIPS_ELF_GOT_SIZE (dynobj);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user