This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH 4/5] Improve handling of R_MIPS_32 GOT slots
- From: Daniel Jacobowitz <drow at false dot org>
- To: binutils at sourceware dot org, rdsandiford at googlemail dot com
- Date: Wed, 6 Aug 2008 16:28:31 -0400
- Subject: Re: [PATCH 4/5] Improve handling of R_MIPS_32 GOT slots
- References: <87skuxzen0.fsf@firetop.home>
On Sat, Jun 28, 2008 at 05:51:47PM +0100, Richard Sandiford wrote:
> bfd/
> * elfxx-mips.c (mips_got_info): Add a "reloc_only_gotno" field.
> (mips_elf_got_section): Delete.
> (mips_elf_sort_hash_table): Use g->reloc_only_gotno to decide
> how many reloc-only entries there are.
> (mips_elf_count_got_symbols): Adjust g->reloc_only_gotno as
> well as g->global_gotno.
> (mips_elf_make_got_per_bfd): Initialize reloc_only_gotno.
> (mips_elf_multi_got): Likewise. Use gg->reloc_only_gotno
> rather than gg->assigned_gotno to store the number of
> reloc-only GOT entries.
> (mips_elf_create_got_section): Remove the MAYBE_EXCLUDE parameter.
> Initialize reloc_only_gotno.
> (mips_elf_calculate_relocation): Check htab->got_info instead of
> dynobj when deciding whether to call mips_elf_adjust_gp,
> (_bfd_mips_elf_create_dynamic_sections): Adjust the call
> to mips_elf_create_got_section.
> (mips_elf_record_relocs): Likewise. Remove redundant
> "dynobj == NULL" code. Do not use mips_elf_create_got_section
> or mips_elf_record_global_got_symbol for R_MIPS_32, R_MIPS_REL32
> and R_MIPS_64; limit global_got_area to GGA_RELOC_ONLY instead.
> (_bfd_mips_elf_finish_dynamic_symbol): Use htab->sgot instead
> of mips_elf_got_section.
> (_bfd_mips_vxworks_finish_dynamic_symbol): Likewise.
> (_bfd_mips_elf_finish_dynamic_sections): Likewise.
> Move the initial assignment of G to the block that uses it;
> it is used for an unrelated purpose later.
>
> ld/testsuite/
> * ld-mips-elf/tls-hidden4.got, ld-mips-elf/tls-hidden4.r: We have
> removed an unused GOT entry that was allocated for the R_MIPS_32
> relocation against "undef", so adjust addresses down by 4 bytes.
> * ld-mips-elf/got-dump-1.d, ld-mips-elf/got-dump-2.d: We have
> changed the order of the GOT entries so that reloc-only ones
> come last. "undef" is only referred to by dynamic relocations,
> so it now comes after "glob".
> * ld-mips-elf/mips16-pic-2.dd, ld-mips-elf/mips16-pic-2.gd,
> ld-mips-elf/mips16-pic-2.nd, ld-mips-elf/mips16-pic-2.rd: We have
> removed two unused local GOT entries that were originally created
> as global entries for the hidden symbols "used2" and "used3".
> "used4" and "used5" are only referred to by relocations, so they
> now come after "used6" and "used7".
OK.
--
Daniel Jacobowitz
CodeSourcery