-2008-08-07 Richard Sandiford <rdsandiford@googlemail.com>
-
- * elfxx-mips.c (count_section_dynsyms): Move before the new first use.
- (mips_elf_sort_hash_table): Take the output bfd as a parameter.
- Remove the MAX_LOCAL parameter. Exit early if there are no
- dynamic symbols, if there is no dynobj, or if there is no
- GOT section. Use count_section_dynsyms instead of MAX_LOCAL.
- Assert == rather than <= when checking hsd.max_unref_got_dynindx.
- Also assert that g->global_gotno is right.
- (mips_elf_count_forced_local_got_symbols): Rename to...
- (mips_elf_count_got_symbols): ...and count global GOT entries too.
- Set the global_got_area of a forced-local GGA_RELOC_ONLY symbol
- to GGA_NONE.
- (mips_elf_multi_got): Don't sort the symbol table.
- (mips_elf_lay_out_got): Likewise. Use mips_elf_count_got_symbols
- to count the number of global GOT entries.
- (_bfd_mips_elf_final_link): Unconditionally call
- mips_elf_sort_hash_table.
-
-2008-08-07 Richard Sandiford <rdsandiford@googlemail.com>
-
- * elfxx-mips.c (GGA_NORMAL, GGA_RELOC_ONLY, GGA_NONE): New macros.
- (mips_elf_link_hash_entry): Add a "global_got_area" field.
- (mips_elf_link_hash_newfunc): Initialize it.
- (mips_elf_sort_hash_table_f): Use h->global_got_area instead of
- h->root.got.offset. Do not handle forced_local symbols specially.
- (mips_elf_record_global_got_symbol): Set h->global_got_area
- instead of h->root.got.offset.
- (mips_elf_recreate_got): Assert that h->global_got_area == GGA_NONE
- for indirect and warning symbols.
- (mips_elf_count_forced_local_got_symbols): Change the argument
- from a "elf_link_hash_entry" to "mips_elf_link_hash_entry".
- Use and set h->global_got_area instead of h->root.got.offset.
- Set it to GGA_NONE for all forced-local symbols.
- (mips_elf_set_global_got_offset): Set h->global_got_area
- instead of h->root.got.offset. Use g->global_got_area instead
- of a combination of dynindx, forced_local and tls_type.
- (mips_elf_multi_got): Remove disabled code. Pass GGA_* values to
- mips_elf_set_global_got_offset.
- (mips_elf_lay_out_got): Use mips_elf_link_hash_traverse instead
- of elf_link_hash_traverse.
- (_bfd_mips_elf_copy_indirect_symbol): Copy the indirect symbol's
- global_got_area to the direct symbol if the latter's value is higher.
- Set the indirect symbol's area to GGA_NONE.
-
-2008-08-07 Richard Sandiford <rdsandiford@googlemail.com>
-
- * elf32-mips.c (elf_backend_hide_symbol): Delete.
- * elfn32-mips.c (elf_backend_hide_symbol): Likewise.
- * elf64-mips.c (elf_backend_hide_symbol): Likewise.
- * elfxx-mips.h (elf_backend_hide_symbol): Likewise.
- * elfxx-mips.c (mips_elf_link_hash_entry): Remove "forced_local"
- and add "needs_lazy_stub".
- (mips_elf_link_hash_newfunc): Update accordingly.
- (mips_elf_link_hash_table): Remove "computed_got_sizes" and
- add "lazy_stub_count".
- (_bfd_mips_elf_link_hash_table_create): Update accordingly.
- (mips_elf_output_extsym): Use hd->needs_lazy_stub to detect
- cases where a lazy stub is being used.
- (mips_elf_sort_hash_table_f): Use h->root.forced_local instead
- of h->forced_local.
- (mips_elf_record_global_got_symbol): Use _bfd_elf_link_hash_hide_symbol
- instead of _bfd_mips_elf_hide_symbol. Do not increment local_gotno
- here.
- (mips_elf_allocate_dynamic_relocations): Move before new first use.
- (mips_elf_check_recreate_got, mips_elf_recreate_got): New functions.
- (mips_elf_resolve_final_got_entries): Move earlier in file. Make at
- most two passes over the hash table. Use mips_elf_check_recreate_got
- to see if there are any indirect or warning entries and
- mips_elf_recreate_got to create a new GOT without them.
- Return a boolean success value.
- (mips_elf_count_forced_local_got_entries): New function.
- (mips_elf_make_got_per_bfd): Check h->root.forced_local instead of
- h->forced_local.
- (mips_elf_set_global_got_offset): Likewise.
- (mips_elf_set_no_stub): Replace with...
- (mips_elf_forbid_lazy_stubs): ...this new function.
- (mips_elf_resolve_final_got_entry): Delete.
- (mips_elf_multi_got): Fix formatting. Use mips_elf_forbid_lazy_stubs
- instead of mips_elf_set_no_stub. Move the code that sets
- global offsets and allocates dynamic relocations from the main
- _bfd_mips_elf_size_dynamic_sections loop to here.
- (_bfd_mips_elf_adjust_dynamic_symbol): Do not allocate room in
- .MIPS.stubs here; just set hmips->needs_lazy_stub and increment
- htab->lazy_stub_count.
- (_bfd_mips_elf_always_size_sections): Move the stub-estimation
- code to mips_elf_estimate_stub_size and the GOT-sizing code to
- mips_elf_lay_out_got. Do not call these functions here.
- (mips_elf_estimate_stub_size): New function, split
- out from _bfd_mips_elf_always_size_sections. Call
- mips_elf_resolve_final_got_entries earlier. Count the number
- of forced-local entries. Do not add stub sizes to loadable_size;
- after this patch, the stub sizes are already included in the main
- estimate. Allocate dynamic relocations here rather than in the
- main _bfd_mips_elf_size_dynamic_sections loop.
- (mips_elf_estimate_stub_size): New function, split out from
- _bfd_mips_elf_always_size_sections.
- (mips_elf_allocate_lazy_stub): New function.
- (mips_elf_lay_out_lazy_stubs): Likewise.
- (_bfd_mips_elf_size_dynamic_sections): Call mips_elf_estimate_stub_size,
- mips_elf_lay_out_got and mips_elf_lay_out_lazy_stubs. Do not handle
- the allocation of sreldyn specially.
- (_bfd_mips_elf_hide_symbol): Delete.
-
-2008-08-07 Richard Sandiford <rdsandiford@googlemail.com>
-
- * elfxx-mips.c (allocate_dynrelocs): Ignore indirect and warning
- symbols.
-
-2008-08-06 Richard Sandiford <rdsandiford@googlemail.com>
-
- * elfxx-mips.c (mips_elf_link_hash_entry): Move bfd_boolean
- fields to the end of the structure and make them single-bit
- bitfields.
- (mips_elf_link_hash_newfunc): Make the initialization statements
- follow the new field order.
-
-2008-08-06 Richard Sandiford <rdsandiford@googlemail.com>
-
- * elfxx-mips.c (_mips_elf_section_data): Remove the "u.got_info" field.
- (mips_elf_link_hash_table): Add "sgot" and "got_info" fields.
- (_bfd_mips_elf_link_hash_table_create): Initialize them.
- (mips_elf_got_section): Always apply the !maybe_excluded behavior.
- (mips_elf_got_info): Delete.
- (mips_elf_initialize_tls_slots): Remove the DYNOBJ local variable.
- Adjust the call to mips_elf_got_section.
- (mips_elf_local_got_index): Don't call mips_elf_got_info.
- Update the call to mips_elf_create_local_got_entry.
- Use htab->got_info.
- (mips_elf_global_got_index): Don't call mips_elf_got_info;
- use htab->got_info and htab->sgot instead.
- (mips_elf_got_page): Don't call mips_elf_got_info. Update the
- call to mips_elf_create_local_got_entry.
- (mips_elf_got16_entry): Likewise.
- (mips_elf_got_offset_from_index): Replace with DYNOBJ parameter
- with an INFO parameter. Don't call mips_elf_got_info; use htab->sgot
- and htab->got_info instead.
- (mips_elf_create_local_got_entry): Remove the GG and SGOT parameters.
- Use htab->sgot and htab->got_info.
- (mips_elf_sort_hash_table): Remove the DYNOBJ local variable.
- Don't call mips_elf_got_info; use htab->got_info instead.
- (mips_elf_record_global_got_symbol): Turn G from a paramter to
- a local variable and read it from htab->got_info.
- (mips_elf_record_local_got_symbol): Replace the G parameter with
- an INFO parameter. Make G a local variable and read it from
- htab->got_info instead.
- (mips_elf_record_got_page_entry): Likewise.
- (mips_elf_multi_got): Remove the G parameter and make it a local
- variable instead. Read it from htab->got_info.
- (mips_elf_create_got_section): Cache the GOT section in htab->sgot.
- Store the GOT information in htab->got_info.
- (mips_elf_calculate_relocation): Don't call mips_elf_got_section
- and mips_elf_got_info; use htab->sgot and htab->got_info instead.
- Adjust the calls to mips_elf_got_offset_from_index and
- mips_elf_adjust_gp.
- (_bfd_mips_elf_check_relocs): Remove the G and SGOT local variables.
- Adjust the calls to mips_elf_record_local_got_symbol,
- mips_elf_record_global_got_symbol and mips_elf_record_got_page_entry.
- Use htab->sgot.
- (_bfd_mips_elf_always_size_sections): Remove the DYNOBJ local variable.
- Don't call mips_elf_got_info; use htab->sgot and htab->got_info instead.
- Update the call to mips_elf_multi_got.
- (_bfd_mips_elf_size_dynamic_sections): Don't call mips_elf_got_info;
- use htab->got_info instead.
- (_bfd_mips_elf_finish_dynamic_symbol): Update the call to
- mips_elf_got_section. Get the got_info from the hash table
- rather than the GOT section.
- (_bfd_mips_vxworks_finish_dynamic_symbol): Likewise.
- (_bfd_mips_elf_finish_dynamic_sections): Likewise.
- (_bfd_mips_elf_hide_symbol): Don't call mips_elf_got_section;
- get the got_info from the hash table instead. Remove the GOT
- local variable.
- (_bfd_mips_elf_final_link): Likewise. Also remove the DYNOBJ
- local variable.
-
-2008-08-06 Richard Sandiford <rdsandiford@googlemail.com>
-
- * elfxx-mips.c (mips_elf_link_hash_table): Add an "sstubs" field.
- (_bfd_mips_elf_create_dynamic_sections): Use it to cache the stubs
- section. Don't check whether the section already exists.
- (_bfd_mips_elf_adjust_dynamic_symbol): Use htab->sstubs.
- (_bfd_mips_elf_finish_dynamic_symbol): Likewise.
- (_bfd_mips_elf_finish_dynamic_sections): Likewise.
- (_bfd_mips_elf_size_dynamic_sections): Likewise. Don't add the
- dummy stub to an empty section.
- (_bfd_mips_elf_link_hash_table_create): Initialize the "sstubs" field.
-
-2008-08-06 Richard Sandiford <rdsandiford@googlemail.com>
-
- * reloc.c (BFD_RELOC_MIPS16_GOT16, BFD_RELOC_MIPS16_CALL16): Declare.
- * libbfd.h, bfd-in2.h: Regenerate.
- * elf32-mips.c (elf_mips16_howto_table_rel): Fill in reserved
- R_MIPS16_GOT16 and R_MIPS16_CALL16 entries.
- (mips16_reloc_map): Add mappings.
- * elf64-mips.c (mips16_elf64_howto_table_rel): Fill in reserved
- R_MIPS16_GOT16 and R_MIPS16_CALL16 entries.
- (mips16_elf64_howto_table_rela): Likewise.
- (mips16_reloc_map): Add mappings.
- * elfn32-mips.c (elf_mips16_howto_table_rel): Fill in reserved
- R_MIPS16_GOT16 and R_MIPS16_CALL16 entries.
- (elf_mips16_howto_table_rela): Likewise.
- (mips16_reloc_map): Add mappings.
- * elfxx-mips.c (mips_elf_create_shadow_symbol): New function.
- (section_allows_mips16_refs_p): Likewise.
- (mips16_stub_symndx): Likewise.
- (mips_elf_check_mips16_stubs): Treat the data argument as a
- bfd_link_info. Mark every dynamic symbol as needing MIPS16 stubs
- and create a "shadow" symbol for the original MIPS16 definition.
- (mips16_reloc_p, got16_reloc_p, call16_reloc_p, hi16_reloc_p)
- (lo16_reloc_p, mips16_call_reloc_p): New functions.
- (_bfd_mips16_elf_reloc_unshuffle): Use mips16_reloc_p to generalize
- relocation checks.
- (_bfd_mips16_elf_reloc_shuffle): Likewise.
- (_bfd_mips_elf_lo16_reloc): Handle R_MIPS16_GOT16.
- (mips_elf_got16_entry): Add comment.
- (mips_elf_calculate_relocation): Use hi16_reloc_p,
- lo16_reloc_p, mips16_call_reloc_p, call16_reloc_p and got16_reloc_p
- to generalize relocation checks. Use section_allows_mips16_refs_p
- instead of mips16_stub_section_p. Handle R_MIPS16_CALL16 and
- R_MIPS16_GOT16, allowing the former to refer directly to a
- MIPS16 function if its stub is not needed.
- (mips16_stub_section_p): Delete.
- (_bfd_mips_elf_symbol_processing): Convert odd-valued function
- symbols into even MIPS16 symbols.
- (mips_elf_add_lo16_rel_addend): Use mips16_reloc_p to generalize
- a relocation check.
- (_bfd_mips_elf_check_relocs): Calculate "bed" and "rel_end"
- earlier in the function. Use mips16_stub_symndx to identify
- the target function. Avoid out-of-bounds accesses when the
- stub has no relocations; report an error instead. Use
- section_allows_mips16_refs_p instead of mips16_stub_section_p.
- Use mips16_call_reloc_p and got16_reloc_p to generalize relocation
- checks. Handle R_MIPS16_CALL16 and R_MIPS16_GOT16. Don't create
- dynamic relocations for absolute references to __gnu_local_gp.
- (_bfd_mips_elf_always_size_sections): Pass a bfd_link_info as
- the argument to mips_elf_check_mips16_stubs. Generalize comment.
- (_bfd_mips_elf_relocate_section): Use hi16_reloc_p and got16_reloc_p
- to generalize relocation checks.
- (_bfd_mips_elf_finish_dynamic_symbol): If a dynamic MIPS16 function
- symbol has a non-MIPS16 stub, redirect the symbol to the stub.
- Fix an overly long line. Don't give dynamic symbols type STO_MIPS16.
- (_bfd_mips_elf_gc_sweep_hook): Handle R_MIPS16_CALL16 and
- R_MIPS16_GOT16.
-
-2008-08-06 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c (ppc_elf_relax_section): Clear R_PPC_PLTREL24 addend.
- (ppc_elf_relocate_section <R_PPC_RELAX32_PLT>): Don't bother here.
-
-2008-08-05 Alan Modra <amodra@bigpond.net.au>
- Jaka Močnik <jaka@xlab.si>
-
- * coffcode.h (coff_slurp_line_table): bfd_alloc lineno_cache first
- so that we don't inadvertently free it. Use bfd_alloc for sort
- arrays, and memcpy sorted line table.
-
-2008-08-04 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-spu.c (spu_elf_auto_overlay): Use the maximum possible
- if --fixed-space request is too large.
-
-2008-08-04 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am (SRC-POTFILES.in, BLD-POTFILES.in): Set LC_ALL=C.
- * Makefile.in: Regenerate.
- * po/SRC-POTFILES.in: Regenerate.
-
-2008-08-02 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-spu.c (mark_overlay_section): Move code calculating
- max_overlay_size to correct block.
- (spu_elf_auto_overlay): Don't use %x in einfo error message.
-
-2008-08-01 Alan Modra <amodra@bigpond.net.au>
- Jan Kratochvil <jan.kratochvil@redhat.com>
-
- * elfcore.h (elf_core_file_p): Ensure we have a backend match
- with the correct arch size before rejecting the generic fallback.
- * elfcode.h (elf_object_p): Likewise. Ensure arch size matches
- before accepting a target.
-
-2008-08-01 Alan Modra <amodra@bigpond.net.au>
-
- PR 6774
- * elf.c (rewrite_elf_program_header): Don't wrap p_paddr to
- include file or program headers.
-
-2008-07-30 Alan Modra <amodra@bigpond.net.au>
-
- * coff-ppc.c, coffgen.c, ecoff.c, ecofflink.c, elf.c, elf32-frv.c,
- elf32-iq2000.c, elf32-m32c.c, elf32-mep.c, elf32-mt.c,
- elf32-sh-symbian.c, elf64-hppa.c, mach-o.c, peXXigen.c, pef.c,
- ppcboot.c, vms-misc.c, xsym.c: Silence gcc warnings.
-
-2008-07-28 Daniel Jacobowitz <dan@codesourcery.com>
-
- * elfxx-mips.c (mips_elf_calculate_relocation): Avoid generating
- relocations for undefined weak symbols with non-default visibility.
- (_bfd_mips_elf_check_relocs): Use possibly_dynamic_relocs for
- global symbols in shared libraries.
- (allocate_dynrelocs): New function.
- (_bfd_mips_elf_adjust_dynamic_symbol): Do not handle
- possibly_dynamic_relocs here.
- (_bfd_mips_elf_size_dynamic_sections): Call allocate_dynrelocs.
-
-2008-07-28 Alexandre Oliva <aoliva@redhat.com>
-
- * elf32-i386.c (struct elf_i386_link_hash_table): Added field
- tls_module_base.
- (elf_i386_link_hash_table_create): Initialize it.
- (elf_i386_always_size_sections): Set it.
- (set_tls_module_base): New.
- (elf_i386_relocate_sections): Call it.
- * elf64-x86-64.c (struct elf64_x86_64_link_hash_table): Added
- field tls_module_base.
- (elf64_x86_64_link_hash_table_create): Initialize it.
- (elf64_x86_64_always_size_sections): Set it.
- (set_tls_module_base): New.
- (elf64_x86_64_relocate_sections): Call it.
- Reported by Cary Coutant <ccoutant@google.com>
-
-2008-07-28 Ineiev <ineiev@yahoo.co.uk>
-
- * elf32-arm.c (arm_map_one_stub): Declare variables at beginning
- of block.
- * elf32-avr.c (get_local_syms): Likewise.
-
-2008-07-28 Alan Modra <amodra@bigpond.net.au>
-
- PR 6769
- * bfd-in.h (BFD_VMA_FMT): Define.
- (printf_vma, sprintf_vma): Use the above.
- (_bfd_int64_low, _bfd_int64_high): Delete.
- * bfd-in2.h: Regenerate.
-
-2008-07-27 Alan Modra <amodra@bigpond.net.au>
-
- * elf.c (_bfd_elf_make_section_from_shdr): Ignore return from
- elf_parse_notes. Use bfd_malloc_and_get_section.
- (elf_parse_notes): Validate note namesz and descsz.
-
-2008-07-26 Michael Eager <eager@eagercon.com>
-
- * elf32-ppc.c (ppc_elf_merge_obj_attributes): Check compatibility
- between single-float, double-float, and soft-float.
-
-2008-07-24 Daniel Jacobowitz <dan@codesourcery.com>