bfd/
authorRichard Sandiford <rdsandiford@googlemail.com>
Sun, 11 Jun 2006 08:33:27 +0000 (08:33 +0000)
committerRichard Sandiford <rdsandiford@googlemail.com>
Sun, 11 Jun 2006 08:33:27 +0000 (08:33 +0000)
commit5108fc1bc95e59df3b7e56fa4144d8f438dfdbdc
treeb858bef6b05cca3be6f6e7258c0f1056835af232
parentdbed2504e9706bb9b5c4486b294bffb8b483b23b
bfd/
* elfxx-mips.c (mips_elf_link_hash_table): Add function_stub_size.
(STUB_ORI): New macro.
(STUB_LI16U): Fix formatting.
(MIPS_FUNCTION_STUB_SIZE): Delete.
(MIPS_FUNCTION_STUB_MAX_SIZE): Likewise.
(MIPS_FUNCTION_STUB_NORMAL_SIZE): New macro.
(MIPS_FUNCTION_STUB_BIG_SIZE): Likewise.
(_bfd_mips_elf_adjust_dynamic_symbol): Use htab->function_stub_size
instead of MIPS_FUNCTION_STUB_SIZE.
(count_section_dynsyms): New function, split out from
_bfd_mips_elf_final_link.
(_bfd_mips_elf_always_size_sections): Get a worst-case estimate
of the number of dynamic symbols needed and use it to set up
function_stub_size.  Use function_stub_size rather than
MIPS_FUNCTION_STUB_SIZE to determine the size of the stub section.
Use 16-byte stubs for 0x10000 dynamic symbols.
(_bfd_mips_elf_size_dynamic_sections): Use htab->function_stub_size
instead of MIPS_FUNCTION_STUB_SIZE.  Fix formatting.
(_bfd_mips_elf_finish_dynamic_symbol): Likewise.  Change the
size of the stub buffer from MIPS_FUNCTION_STUB_MAX_SIZE to
MIPS_FUNCTION_STUB_BIG_SIZE.  Tweak the check for unhandled dynindxes.
Use MIPS_FUNCTION_STUB_BIG_SIZE rather than a hard-coded 20.
Use STUB_ORI rather than STUB_LI16U for big stubs.
(_bfd_mips_elf_link_hash_table_create): Initialize function_stub_size.
(_bfd_mips_elf_final_link): Use count_section_dynsyms.

ld/testsuite/
* ld-mips-elf/stub-dynsym-1.s,
* ld-mips-elf/stub-dynsym-1.ld,
* ld-mips-elf/stub-dynsym-1-7fff.d,
* ld-mips-elf/stub-dynsym-1-8000.d,
* ld-mips-elf/stub-dynsym-1-fff0.d,
* ld-mips-elf/stub-dynsym-1-10000.d,
* ld-mips-elf/stub-dynsym-1-2fe80.d: New test.
* ld-mips-elf/mips-elf.exp: Run it.
bfd/ChangeLog
bfd/elfxx-mips.c
ld/testsuite/ChangeLog
ld/testsuite/ld-mips-elf/mips-elf.exp
ld/testsuite/ld-mips-elf/stub-dynsym-1-10000.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/stub-dynsym-1-2fe80.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/stub-dynsym-1-7fff.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/stub-dynsym-1-8000.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/stub-dynsym-1-fff0.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/stub-dynsym-1.ld [new file with mode: 0644]
ld/testsuite/ld-mips-elf/stub-dynsym-1.s [new file with mode: 0644]