- * bfd.c (struct _bfd): Correct outsymbols comment.
- * bfd-in2.h: Regenerate.
- * linker.c (bfd_generic_link_read_symbols): Renamed from..
- (generic_link_read_symbols): ..this, and made global.
-
-2008-08-15 Alan Modra <amodra@bigpond.net.au>
-
- PR 6526
- * configure.in: Invoke AC_USE_SYSTEM_EXTENSIONS.
- * Makefile.in: Regenerate.
- * aclocal.m4: Regenerate.
- * config.in: Regenerate.
- * configure: Regenerate.
-
-2008-08-14 Jaka Močnik <jaka@xlab.si>
-
- * coffgen.c (coff_find_nearest_line): Correct cached line index.
-
-2008-08-12 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c (allocate_dynrelocs): Ignore dyn_relocs when
- !dynamic_sections_created. Don't make symbols with got
- references dynamic if !dynamic_sections_created.
- * elf64-ppc.c (allocate_dynrelocs): Likewise. Alloc dynamic
- relocs on undefined symbols.
- (ppc64_elf_relocate_section): Allow dynamic relocs on
- undefined symbols.
-
-2008-08-11 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (toc_adjusting_stub_needed): Any call via the plt
- needs r2 valid, not just those to external syms.
-
-2008-08-09 Pedro Alves <pedro@codesourcery.com>
-
- * archive.c (_bfd_archive_bsd_update_armap_timestamp): Cast stat
- st_mtime to long before comparison.
-
-2008-08-08 Anatoly Sokolov <aesok@post.ru>
-
- * archures.c (bfd_mach_avr25, bfd_mach_avr31, bfd_mach_avr35,
- bfd_mach_avr51): New.
- * bfd-in2.h: Regenerate.
- * cpu-avr.c (arch_info_struct): Add avr25, avr31, avr35, and avr51
- architectures. Change comments to match architecture comments in GCC.
- (compatible): Add test for new AVR architectures.
- * elf32-avr.c (bfd_elf_avr_final_write_processing): Recognize
- bfd_mach_avr25, bfd_mach_avr31, bfd_mach_avr35 and bfd_mach_avr51.
- (elf32_avr_object_p): Recognize E_AVR_MACH_AVR25, E_AVR_MACH_AVR31,
- E_AVR_MACH_AVR35 and E_AVR_MACH_AVR51.
-
-
-2008-08-08 Richard Sandiford <rdsandiford@googlemail.com>
- Daniel Jacobowitz <dan@codesourcery.com>
- Catherine Moore <clm@codesourcery.com>
- Mark Shinwell <shinwell@codesourcery.com>
- Maxim Kuvyrkov <maxim@codesourcery.com>
-
- * elf32-mips.c (mips_vxworks_copy_howto_rela): Replace with...
- (elf_mips_copy_howto): ...this howto. Clear the size fields.
- (mips_vxworks_jump_slot_howto_rela): Replace with...
- (elf_mips_jump_slot_howto): ...this howto.
- (bfd_elf32_bfd_reloc_type_lookup): Handle BFD_RELOC_MIPS_COPY
- and BFD_RELOC_MIPS_JUMP_SLOT.
- (bfd_elf32_bfd_reloc_name_lookup): Handle "R_MIPS_COPY" and
- "R_MIPS_JUMP_SLOT".
- (mips_elf32_rtype_to_howto): Handle R_MIPS_COPY and R_MIPS_JUMP_SLOT.
- (elf_backend_plt_readonly): Define.
- (elf_backend_plt_sym_val): Define for non-VxWorks targets.
- (mips_vxworks_bfd_reloc_type_lookup): Delete.
- (mips_vxworks_bfd_reloc_name_lookup): Likewise.
- (mips_vxworks_rtype_to_howto): Likewise.
- (elf_backend_want_dynbss): Don't define for VxWorks.
- (elf_backend_plt_readonly): Likewise.
- (bfd_elf32_bfd_reloc_type_lookup): Likewise.
- (bfd_elf32_bfd_reloc_name_lookup): Likewise.
- (elf_backend_mips_rtype_to_howto): Likewise.
- (elf_backend_adjust_dynamic_symbol): Likewise.
- (elf_backend_got_symbol_offset): Don't define.
- * elfn32-mips.c (elf_mips_copy_howto, elf_mips_jump_slot_howto): New.
- (bfd_elf32_bfd_reloc_type_lookup): Handle BFD_RELOC_MIPS_COPY
- and BFD_RELOC_MIPS_JUMP_SLOT.
- (bfd_elf32_bfd_reloc_name_lookup): Handle "R_MIPS_COPY" and
- "R_MIPS_JUMP_SLOT".
- (mips_elf32_n32_rtype_to_howto): Handle R_MIPS_COPY and
- R_MIPS_JUMP_SLOT.
- (elf_backend_rela_plts_and_copies_p, elf_backend_plt_readonly)
- (elf_backend_plt_sym_val): Define.
- * elf64-mips.c (elf_mips_copy_howto, elf_mips_jump_slot_howto): New.
- (bfd_elf64_bfd_reloc_type_lookup): Handle BFD_RELOC_MIPS_COPY
- and BFD_RELOC_MIPS_JUMP_SLOT.
- (bfd_elf64_bfd_reloc_name_lookup): Handle "R_MIPS_COPY" and
- "R_MIPS_JUMP_SLOT".
- (mips_elf64_rtype_to_howto): Handle R_MIPS_COPY and R_MIPS_JUMP_SLOT.
- (elf_backend_rela_plts_and_copies_p, elf_backend_plt_readonly)
- (elf_backend_plt_sym_val): Define.
- * elfxx-mips.h (_bfd_mips_vxworks_adjust_dynamic_symbol): Delete.
- (_bfd_mips_elf_use_plts_and_copy_relocs, _bfd_mips_elf_init_stubs)
- (_bfd_mips_elf_plt_sym_val, _bfd_mips_post_process_headers): Declare.
- * elfxx-mips.c (mips_elf_la25_stub): New structure.
- (LA25_LUI, LA25_J, LA25_ADDIU): New macros.
- (mips_elf_link_hash_entry): Add "la25_stubs", "has_static_relocs"
- and "has_nonpic_branches" fields. Remove "is_relocation_target" and
- "is_branch_target".
- (mips_elf_link_hash_table): Add blank lines. Add
- "use_plts_and_copy_relocs", "reserved_gotno", "strampoline",
- "la25_stubs" and "add_stub_section" fields.
- (mips_htab_traverse_info): New structure.
- (PIC_OBJECT_P, MIPS_ELF_LOAD_WORD): New macros.
- (MIPS_RESERVED_GOTNO): Delete.
- (mips_o32_exec_plt0_entry, mips_n32_exec_plt0_entry)
- (mips_n64_exec_plt0_entry, mips_exec_plt_entry): New tables.
- (mips_elf_link_hash_newfunc): Update after the changes to
- mips_elf_link_hash_entry.
- (mips_elf_check_mips16_stubs): Replace the DATA parameter with
- an INFO parameter. Don't look through warnings symbols here;
- do it in mips_elf_check_symbols instead.
- (mips_elf_create_stub_symbol): New function.
- (mips_elf_la25_stub_hash, mips_elf_la25_stub_eq): New functions.
- (_bfd_mips_elf_init_stubs, mips_elf_local_pic_function_p): Likewise.
- (mips_elf_add_la25_intro, mips_elf_add_la25_trampoline): Likewise.
- (mips_elf_add_la25_stub, mips_elf_check_symbols): New functions.
- (mips_elf_gotplt_index): Check for VxWorks.
- (mips_elf_output_dynamic_relocation): Take the relocation index
- as an extra parameter. Do not increment reloc_count here.
- (mips_elf_initialize_tls_slots): Update the calls to
- mips_elf_output_dynamic_relocation accordingly.
- (mips_elf_multi_got): Use htab->reserved_gotno instead of
- MIPS_RESERVED_GOTNO.
- (mips_elf_create_got_section): Don't allocate reserved GOT
- entries here. Unconditionally create .got.plt, but don't
- set its alignment here.
- (mips_elf_relocation_needs_la25_stub): New function.
- (mips_elf_calculate_relocation): Redirect branches and jumps to
- a non-PIC stub if one exists. Check !h->has_static_relocs instead
- of !htab->is_vxworks when deciding whether to create dynamic
- relocations for R_MIPS_32, R_MIPS_REL32 and R_MIPS_64.
- (_bfd_mips_elf_create_dynamic_sections): Unconditionally call
- _bfd_elf_create_dynamic_sections. Unconditionally set up
- htab->splt and htab->sdynbss. Set htab->srelplt to ".rel.plt"
- if !htab->is_vxworks. Add non-VxWorks values of
- htab->plt_header_size and htab->plt_entry_size.
- (_bfd_mips_elf_check_relocs): Set pointer_equality_needed for
- non-branch static relocations. Set has_nonpic_branches when an la25
- stub might be required. Set can_make_dynamic_p to TRUE if R_MIPS_32,
- R_MIPS_REL32 and R_MIPS_64 relocations can be made dynamic,
- rather than duplicating the condition. Do not make them dynamic
- for read-only sections in non-PIC executable objects.
- Do not protect this code with dynobj == NULL || htab->sgot == NULL;
- handle each group of cases separately. Add a default case that
- sets has_static_relocs for non-GOT relocations that cannot be
- made dynamic. Don't set is_relocation_target and is_branch_target.
- Reject non-PIC static relocations in shared objects.
- (_bfd_mips_vxworks_adjust_dynamic_symbol): Fold into...
- (_bfd_mips_elf_adjust_dynamic_symbol): ...here, using
- htab->use_plts_and_copy_relocs instead of htab->is_vxworks
- to select PLT and copy-reloc handling. Set the alignment of
- .plt and .got.plt when allocating the first entry. Generalize
- code to handle REL as well as RELA sections and 64-bit as well as
- 32-bit GOT entries. Complain if we find a static-only reloc
- against an externally-defined symbol and if we cannot create
- dynamic relocations for it. Allocate copy relocs using
- mips_elf_allocate_dynamic_relocations on non-VxWorks targets.
- Set possibly_dynamic_relocs to 0 when using PLTs or copy relocs.
- Skip reserved .got.plt entries.
- (_bfd_mips_elf_always_size_sections): Use mips_elf_check_symbols
- instead of mips_elf_check_mips16_stubs to process each symbol.
- Do the traversal for relocatable objects too.
- (mips_elf_lay_out_got): Use htab->reserved_gotno instead of
- MIPS_RESERVED_GOTNO.
- (_bfd_mips_elf_size_dynamic_sections): Exclude sdynbss if it
- is empty. Extend the DT_PLTREL, DT_JMPREL and DT_PLTRELSZ handling
- to non-VxWorks targets. Only add DT_REL{,A}, DT_REL{,A}SZ and
- DT_REL{,A}ENT if .rel.dyn is nonempty. Create a symbol for the
- PLT. Allocate a nop at the end of the PLT. Allocate DT_MIPS_PLTGOT.
- (mips_elf_create_la25_stub_info): New function.
- (_bfd_mips_elf_finish_dynamic_symbol): Write out PLT entries
- and copy relocs where necessary. Check pointer_equality_needed.
- (mips_finish_exec_plt): New function.
- (_bfd_mips_elf_finish_dynamic_sections): Always set DT_PLTGOT
- to the beginning of htab->sgot. Use htab->reserved_gotno instead
- of MIPS_RESERVED_GOTNO. Assert htab->use_plts_and_copy_relocs
- instead of htab->is_vxworks for DT_PLTREL, DT_PLTRELSZ and DT_JMPREL.
- Set DT_PLTREL to DT_REL instead of DT_RELA on non-VxWorks targets.
- Use mips_finish_exec_plt to create non-VxWorks PLT headers. Set
- DT_MIPS_PLTGOT.
- (_bfd_mips_elf_copy_indirect_symbol): Copy has_static_relocs
- from the indirect symbol to the direct symbol. Also copy
- has_nonpic_branches for indirect symbols.
- (_bfd_mips_elf_get_target_dtag): Handle DT_MIPS_PLTGOT and
- DT_MIPS_RWPLT.
- (_bfd_mips_elf_link_hash_table_create): Initialize the new
- mips_elf_link_hash_table fields.
- (_bfd_mips_vxworks_link_hash_table_create): Set
- use_plts_and_copy_relocs to TRUE. Use TRUE rather than 1
- when setting is_vxworks.
- (_bfd_mips_elf_use_plts_and_copy_relocs): New function.
- (_bfd_mips_elf_final_link): Call mips_elf_create_la25_stub for
- each la25_stub.
- (_bfd_mips_elf_merge_private_bfd_data): Treat dynamic objects
- as PIC. Generalize message about linking PIC and non-PIC.
- (_bfd_mips_elf_plt_sym_val, _bfd_mips_post_process_headers): New
- functions.
- * reloc.c: Update comment near BFD_RELOC_MIPS_JUMP_SLOT.
- * bfd-in2.h: Regenerated.
-
-2008-08-08 Alan Modra <amodra@bigpond.net.au>
-
- * elf.c (bfd_elf_get_elf_syms): Don't leak memory on error.
- * elflink.c (_bfd_elf_link_read_relocs): bfd_release on error.
- (elf_link_add_object_symbols): Don't leak memory on error.
- (bfd_elf_size_dynsym_hash_dynstr): Likewise.
- (elf_fixup_link_order): Free sections.
-
-2008-08-07 Richard Sandiford <rdsandiford@googlemail.com>
-
- * elf-bfd.h (elf_backend_data): Add a "rela_plts_and_copies_p" field.
- * elfxx-target.h (elf_backend_rela_plts_and_copies_p): New macro.
- (elfNN_bed): Use it.
- * elf.c (_bfd_elf_get_synthetic_symtab): Use rela_plts_and_copies_p
- instead of default_use_rela_p to choose between ".rel.plt" and
- ".rela.plt".
- * elflink.c (_bfd_elf_create_dynamic_sections): Use
- rela_plts_and_copies_p instead of default_use_rela_p to choose
- between ".rel.plt" and ".rela.plt", and between ".rel.bss" and
- ".rela.bss".
-
-2008-08-07 Richard Sandiford <rdsandiford@googlemail.com>
-
- * elf-bfd.h (MIPS_ELF_TDATA): New elf_object_id.
- * elf32-mips.c (bfd_elf32_mkobject): Define.
- * elf64-mips.c (bfd_elf64_mkobject): Likewise.
- * elfn32-mips.c (bfd_elf32_mkobject): Likewise.
- * elfxx-mips.h (_bfd_mips_elf_mkobject): Declare.
- * elfxx-mips.c (is_mips_elf): New macro.
- (_bfd_mips_elf_mkobject): New function.
- (_bfd_mips_elf_final_link): Use is_mips_elf.
- (_bfd_mips_elf_merge_private_bfd_data): Likewise.
-
-2008-08-07 Richard Sandiford <rdsandiford@googlemail.com>
-
- * elfxx-mips.c (mips_elf_record_relocs): Defer allocation of a
- global GOT entry when deferring allocation of dynamic relocations.
- (allocate_dynrelocs): When allocating deferred dynamic relocations,
- also do the deferred allocation of a GOT entry.
-
-2008-08-07 Richard Sandiford <rdsandiford@googlemail.com>
-
- * 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.
-
-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.