2010-02-18 Doug Kwan <dougkwan@google.com>
[deliverable/binutils-gdb.git] / gold / ChangeLog
index 0c6e1a02af3a91b194cab1cbe93ac5c1cc192c47..8796c6d3cd57c6359ee43c88df4db7cc36cb9298 100644 (file)
@@ -1,3 +1,614 @@
+2010-02-18  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_relobj::find_linked_text_section): New method.
+       (Arm_relobj::make_exidx_input_section): Pass section index of linked
+       text section as a parameter becuase some broken tools may not set
+       the link in section header.
+       (Target_arm::has_got_section): New method.
+       (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
+       without any mapping symbol as data only.  Remove warning.
+       (Arm_relobj::do_read_synbols): If an EXIDX input section has no
+       link in its section header, try to discover the link by inspecting the
+       REL31 relocation at the beginning of the section.
+       (Target_arm::Scan::check_non_pic): Report name of offending relocation
+       in error message.
+       (Target_arm::Scan::global): Treat any reference to the symbol
+       _GLOBAL_OFFSET_TABLE_ as a GOT access.
+
+2010-02-12  Sriraman Tallam  <tmsriram@google.com>
+
+       * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
+       (Scan::global_reloc_may_be_function_pointer): New function.
+       * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
+       (Scan::global_reloc_may_be_function_pointer): New function.
+       * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
+       (Scan::global_reloc_may_be_function_pointer): New function.
+       * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
+       (Scan::global_reloc_may_be_function_pointer): New function.
+       * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
+       (Scan::global_reloc_may_be_function_pointer): New function.
+       (Scan::possible_function_pointer_reloc): New function.
+       (Target_x86_64::can_check_for_function_pointers): New function.
+       * gc.h (gc_process_relocs): Scan relocation types to determine if
+       function pointers were taken for targets that support it.
+       * icf.cc (Icf::find_identical_sections): Include functions for
+       folding in safe ICF whose pointer is not taken.
+       * icf.h (Secn_fptr_taken_set): New typedef.
+       (fptr_section_id_): New member.
+       (section_has_function_pointers): New function.
+       (set_section_has_function_pointers): New function.
+       (check_section_for_function_pointers): New function.
+       * options.h: Fix comment for safe ICF option.
+       * target.h (can_check_for_function_pointers): New function.
+       * testsuite/Makefile.am: Add icf_safe_so_test test case.
+       Modify icf_safe_test for X86-64.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/icf_safe_so_test.cc: New file.
+       * testsuite/icf_safe_so_test.sh: New file.
+       * testsuite/icf_safe_test.cc (kept_func_3): New function.
+       (main): Change to take pointer to function kept_func_3.
+       * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
+       folding is done correctly for X86-64.
+
+2010-02-12  David S. Miller  <davem@davemloft.net>
+
+       * output.h (Output_reloc<SHT_REL>::Output_reloc): Add
+       is_symbolless parameter.
+       (Output_reloc<SHT_REL>::is_symbolless): New.
+       (Output_reloc<SHT_REL>::is_symbolless_): New.
+       (Output_reloc<SHT_REL>::type_): Decrease to 29 bits.
+       (Output_reloc<SHT_RELA>::Output_reloc): Add is_symbolless parameter.
+       (Output_reloc<SHT_RELA>::is_symbolless): New.
+       (Output_data_reloc::add_global): Handle is_symbolless.
+       (Output_data_reloc::add_global_relative): Likewise.
+       (Output_data_reloc::add_local): Likewise.
+       (Output_data_reloc::add_local_relative): Likewise.
+       (Output_data_reloc::add_symbolless_global_addend): New.
+       (Output_data_reloc::add_symbolless_local_addend): New.
+       * output.cc (Output_reloc<SHT_REL>::Output_reloc): Handle
+       is_symbolless.
+       (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
+       instead of ->is_relative_
+       (Output_reloc::write): Likewise.
+       (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
+       (Output_reloc::write_rel): Simplify.
+
+       * sparc.cc (Target_sparc::Scan::local): Use
+       ->add_symbolless_local_addend as needed.
+       (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
+       needed.  Also, emit appropriate unaligned vs. aligned dynamic reloc
+       based upon relocation offset.
+
+2010-02-11  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
+       (Target_arm::Scan::global): Ditto.  Also remove a comment before the
+       beginning of function.
+       (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
+       and MOVT_ABS relocations.  Those are non issued in scanning.  Fix
+       parameter is_32bit in calls to should_apply_static_reloc.
+       * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
+       (check_DATA): Add arm_abs_global.stdout.
+       (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
+       arm_abs_global.stdout): New rules.
+       (MOSTLLYCLEANFILES): Add arm_abs_global
+       * Makefile.in: Regenerate.
+       * testsuite/arm_abs_global.s: New file.
+       * testsuite/arm_abs_global.sh: Ditto.
+       * testsuite/arm_abs_lib.s: Ditto.
+
+2010-02-11  Ian Lance Taylor  <iant@google.com>
+
+       * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
+       Read_relocs task.
+       (queue_middle_tasks): Likewise, and also for Scan_relocs.  Run
+       Allocate_commons_task first.
+       * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
+       task, rather than symtab_lock_.
+       (Gc_process_relocs::~Gc_process_relocs): New function.
+       (Gc_process_relocs::is_runnable): Check this_blocker_.
+       (Gc_process_relocs::locks): Use next_blocker_ rather than
+       blocker_.
+       (Scan_relocs::~Scan_relocs): New function.
+       (Scan_relocs::is_runnable): Check this_blocker_ rather than
+       symtab_lock_.
+       (Scan_relocs::locks): Drop symtab_lock_ and blocker_.  Add
+       next_blocker_.
+       * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
+       fields.  Add this_blocker_ and next_blocker_ fields.  Adjust
+       constructor accordingly.
+       (class Gc_process_relocs): Likewise.
+       (class Scan_relocs): Likewise.
+       * common.h (class Allocate_commons_task): Remove symtab_lock_
+       field, and corresponding constructor parameter.
+       * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
+       symtab_lock_.
+       (Allocate_commons_task::locks): Likewise.
+
+2010-02-11  Ian Lance Taylor  <iant@google.com>
+
+       * gold-threads.h (class Once): Define.
+       (class Initialize_lock): Rewrite as child of Once.
+       * gold-threads.cc (class Once_initialize): Define.
+       (once_pointer_control): New static variable.
+       (once_pointer, once_arg): New static variables.
+       (c_run_once): New static function.
+       (Once::Once, Once::run_once, Once::internal_run): New functions.
+       (class Initialize_lock_once): Remove.
+       (initialize_lock_control): Remove.
+       (initialize_lock_pointer): Remove.
+       (initialize_lock_once): Remove.
+       (Initialize_lock::Initialize_lock): Move to gold-threads.h.
+       (Initialize_lock::initialize): Rewrite.
+       (Initialize_lock::do_run_once): New function.
+       * archive.cc (Archive::interpret_header): Only clear name if it is
+       not already empty.
+       * fileread.cc: Include "gold-threads.h"
+       (file_counts_lock): New static variable.
+       (file_counts_initialize_lock): Likewise.
+       (File_read::release): Only increment counts when using --stats.
+       Use a lock around the increment.
+       * parameters.cc (class Set_parameters_target_once): Define.
+       (set_parameters_target_once): New static variable.
+       (Parameters::Parameters): Move here from parameters.h.
+       (Parameters::set_target): Rewrite.
+       (Parameters::set_target_once): New function.
+       (Parameters::clear_target): Move here and rewrite.
+       * parameters.h (class Parameters): Update declarations.  Add
+       set_parameters_target_once_ field.
+       (Parameters::Parameters): Move to parameters.cc.
+       (Parameters::clear_target): Likewise.
+       * readsyms.cc (Read_symbols::do_group): Create a Start_group
+       task.
+       (Start_group::~Start_group): New function.
+       (Start_group::is_runnable): New function.
+       (Start_group::locks, Start_group::run): New functions.
+       (Finish_group::run): Change saw_undefined to size_t.
+       * readsyms.h (class Start_group): Define.
+       (class Finish_group): Change saw_undefined_ field to size_t.
+       (Finish_group::Finish_group): Remove saw_undefined and
+       this_blocker parameters.  Change all callers.
+       (Finish_group::set_saw_undefined): New function.
+       (Finish_group::set_blocker): New function.
+       * symtab.h (class Symbol_table): Change saw_undefined to return
+       size_t.  Change saw_undefined_ field to size_t.
+       * target-select.cc (Set_target_once::do_run_once): New function.
+       (Target_selector::Target_selector): Initialize set_target_once_
+       field.  Don't initialize lock_ and initialize_lock_ fields.
+       (Target_selector::instantiate_target): Rewrite.
+       (Target_selector::set_target): New function.
+       * target-select.h (class Set_target_once): Define.
+       (class Target_selector): Update declarations.  Make
+       Set_target_once a friend.  Remove lock_ and initialize_lock_
+       fields.  Add set_target_once_ field.
+
+2010-02-10  Ian Lance Taylor  <iant@google.com>
+
+       * dirsearch.cc (Dirsearch::initialize): Add all blockers before
+       queueing any tasks.
+       * gold.cc (queue_middle_gc_tasks): Likewise.  Fix final blocker.
+       (queue_middle_tasks): Add all blockers before queueing any tasks.
+       (queue_final_tasks): Likewise.
+       * token.h (Task_token::add_blockers): New function.
+       * object.h (Input_objects::number_of_relobjs): New function.
+
+2010-02-10  Ian Lance Taylor  <iant@google.com>
+
+       * i386.cc (Relocate::relocate_tls): A local symbol is final if not
+       shared, not if not position independent.
+       * x86_64.cc (Relocate::relocate_tls): Likewise.
+       * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
+       (tls_pie_pic_test): New target.
+       * testsuite/Makefile.in: Rebuild.
+
+       * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
+       (tls_test_main_pie.o, tls_test_pie.o): New targets.
+       (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
+       * testsuite/Makefile.in: Rebuild.
+
+2010-02-09  David S. Miller  <davem@davemloft.net>
+
+       * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
+       R_SPARC_RELATIVE using ->add_local_relative().
+       (Target_sparc::Scan::global): Likewise for ->add_global_relative().
+
+       * output.h (Output_data_dynamic::add_section_size): New method
+       that takes two Output_data objects.
+       (Output_data_dynamic::Dynamic_entry): Create storage for secondary
+       entry param.  Handle it in initializers.
+       * output.cc (Output_data_dynamic::Dynamic_entry::write): For
+       DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
+       * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
+       arg.
+       * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
+       and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
+       * arm.cc (Target_arm::do_finalize_sections): Update to pass false
+       for dynrel_includes_plt.
+       * i386.cc (Target_i386::do_finalize_sections): Likewise.
+       * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
+       * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
+       before .rela.plt
+       (Target_sparc::do_finalize_sections): Update to pass true for
+       dynrel_includes_plt.
+       * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
+       output before .rela.plt
+       (Target_powerpc::do_finalize_sections): Update to pass true for
+       dynrel_includes_plt when 32-bit.
+
+2010-02-08  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_relobj::simple_input_section_output_address): New
+       method.
+       (Arm_relobj::section_needs_cortex_a8_stub_scanning,
+       Arm_relobj::scan_section_for_cortex_a8_stubs,
+       Arm_relobj::do_relocation_section): Instead of calling
+       Output_section::output_address, use faster
+       Arm_relobj::simple_input_section_output_address.
+
+2010-02-08  David S. Miller  <davem@davemloft.net>
+
+       * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
+       unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
+       relocation helper function.
+
+       * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
+       just like R_SPARC_GOT{10,13,22}.
+       (Target_sparc::Scan::local): Likewise.
+       (Target_sparc::Relocate:relocate): Likewise.
+
+2010-02-06  Ian Lance Taylor  <iant@google.com>
+
+       * configure.ac: Rewrite targetobjs duplicate removal code to use
+       only shell constructs.
+       * configure: Rebuild.
+
+2010-02-05  Doug Kwan  <dougkwan@google.com>
+
+       PR 11247
+       * arm.cc (Arm_relobj::section_is_scannable): New method.
+       (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
+       (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
+
+2010-02-04  Doug Kwan  <dougkwan@google.com>
+
+       PR 11247
+       * arm-reloc-property.cc (cstdio): Include.
+       * configure.ac (targetobjs): Remove duplicates.
+       * configure: Regenerate.
+       * resolve.cc (Symbol_table::resolve): Explicit instantiate both
+       big and little endian version for a given address size.
+
+2010-02-03  Doug Kwan  <dougkwan@google.com>
+
+       * arm-reloc-property.cc
+       (Arm_reloc_property_table::reloc_name_in_error_message): New method
+       definition.
+       * arm-reloc-property.h
+       (Arm_reloc_property_table::get_implemented_static_reloc_property):
+       New method definition.
+       (Arm_reloc_property_table::reloc_name_in_error_message): New method
+       declaration.
+       * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
+       overflow to N.
+       (GOT_PREL): Change implemented to Y.
+       * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
+       (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
+       (Arm_relocate_functions::movw_abs_nc): Remove method.
+       (Arm_relocate_functions::movt_abs): Ditto.
+       (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
+       (Arm_relocate_functions::thm_movt_abs): Ditto.
+       (Arm_relocate_functions::movw_rel_nc): Ditto.
+       (Arm_relocate_functions::movw_rel): Ditto.
+       (Arm_relocate_functions::movt_rel): Ditto.
+       (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
+       (Arm_relocate_functions:thm_movw_rel): Ditto.
+       (Arm_relocate_functions:thm_movt_rel): Ditto.
+       (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
+       (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
+       New method definitions.
+       (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
+       (Arm_relocation_functions::arm_grp_ldr): Ditto.
+       (Arm_relocation_functions::arm_grp_ldrs): Ditto.
+       (Arm_relocation_functions::arm_grp_ldc): Ditto.
+       (Target_arm::Relocate::relocate): Check for non-static or
+       unimplemented relocation code and exit early.  Change calls to
+       Target_arm::reloc_uses_thumb_bit and
+       Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
+       instead.  Refactor code to handle similar relocations to increase
+       code sharing.  Remove check for unsupported relocation code in switch
+       statement.
+       (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
+       relocation property table to find out size.  Change error message to
+       print out the name of a relocation code instead of the numeric value.
+       (Target_arm::scan_reloc_for_stub): Use relocation property table
+       instead of calling Target_arm::reloc_uses_thumb_bit().
+
+2010-02-02  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Target_arm::relocate_section): Do view adjustment for all
+       types of relaxed input section.
+
+2010-02-02  Doug Kwan  <dougkwan@google.com>
+
+       * Makefile.am (HFILES): Add arm-reloc-property.h.
+       (DEFFILES): New.
+       (TARGETSOURCES): Add arm-reloc-property.cc
+       (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
+       (libgold_a_SOURCES): $(DEFFILES)
+       * Makefile.in: Regenerate.
+       * arm-reloc-property.cc: New file.
+       * arm-reloc-property.h: New file.
+       * arm-reloc.def: New file.
+       * arm.cc: Update comments.
+       (arm-reloc-property.h): New included header.
+       (arm_reloc_property_table): New global variable.
+       (Target_arm::do_select_as_default_target): New method definition.
+       * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
+       arm-reloc-property to targ_extra_obj.
+       * parameters.cc (set_parameters_target): Call
+       Target::select_as_default_target().
+       * target.h (Target::select_as_default_target): New method definition.
+       (Target::do_select_as_default_target): Same.
+
+2010-02-01  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize
+       first_output_text_section_.
+       (Arm_exidx_fixup::first_output_text_section): New method definition.
+       (Arm_exidx_fixup::first_output_text_section_): New data member.
+       (Arm_exidx_fixup::process_exidx_section): Record the first text
+       output section seen.
+       (Arm_output_section::fix_exidx_coverage): Set correct linked section
+       and entsize in output section header.
+
+2010-01-29  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
+
+       * gold/arm.cc: Added support for the ARM relocations: R_ARM_THM_PC8,
+       R_ARM_THM_PC12, R_ARM_THM_ALU_PREL_11_0.
+       (Arm_relocate_functions::thm_alu11): New Method.
+       (Arm_relocate_functions::thm_pc8): New Method.
+       (Arm_relocate_functions::thm_pc12): New Method.
+       (Target_arm::Scan::local): Handle the relocations.
+       (Target_arm::Scan::global): Likewise.
+       (Target_arm::Relocate::relocate): Likewise.
+       (Target_arm:Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
+
+2010-01-29  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Target_arm::Scan::global): General PLTs for the same set
+       of relocation types as ld.
+
+2010-01-29  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility
+       to public.
+       (Arm_relocate_functions::thumb_branch_common): Ditto.
+       (Arm_relocate_functions::thm_call, Arm_relocate_functions::thm_jump24,
+       Arm_relocate_functions::thm_xpc22, Arm_relocate_functions::plt32,
+       Arm_relocate_functions::xpc25, Arm_relocate_functions::call,
+       Arm_relocate_functions::jump24): Remove.
+       (Target_arm::Relocate::relocate): Adjust code to call
+       Arm_relocation_functions::arm_branch_common and
+       Arm_relocation_functions::thumb_branch_common instead of their removed
+       wrappers.  Merge switch-cases together to reduce source code size.  
+
+2010-01-29  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
+       output_local_symbol_count_needs_update_.
+       (Arm_relobj::output_local_symbol_count_needs_update,
+        Arm_relobj::set_output_local_symbol_count_needs_update,
+        Arm_relobj::update_output_local_symbol_count): New methods.
+       (Arm_relobj::output_local_symbol_count_needs_update_): New data
+       member.
+       (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
+       of pointed function as in a R_ARM_PREL31 relocation.
+       (Arm_output_section<big_endian>::fix_exidx_coverage): Mark objects
+       for output local symbol count updating.
+       (Target_arm::do_relax): Update output local symbol counts in objects
+       if necessary.
+       * object.h (Sized_relobj::set_output_local_symbol_count): New method.
+
+2010-01-29  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
+
+       * arm.cc: Added support for the ARM relocations:
+       R_ARM_MOVW_BREL_NC, R_ARM_MOVT_BREL, R_ARM_MOVW_BREL,
+       R_ARM_THM_MOVW_BREL_NC, R_ARM_THM_MOVT_BREL, R_ARM_THM_MOVW_BREL.
+       (Arm_relocate_functions::movw_rel_nc): Renamed (was
+       movw_prel_nc).
+       (Arm_relocate_functions::movw_rel): New method.
+       (Arm_relocate_functions::movt_rel): Renamed (was movt_prel).
+       (Arm_relocate_functions::thm_movw_rel_nc): Renamed (was
+       thm_movw_prel_nc).
+       (Arm_relocate_functions::thm_movw_rel): New method.
+       (Arm_relocate_functions::thm_movt_rel): Renamed (was
+       thm_movt_prel).
+       (Target_arm::Scan::local): Handle MOVW_BREL/MOVT_BREL
+       relocations.
+       (Target_arm::Scan::global): Likewise.
+       (Target_arm::Relocate::relocate): Likewise.
+       (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
+       Likewise.
+
+2010-01-27  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
+
+       * arm.cc: Added support for ARM group relocations.
+       (Target_arm::reloc_needs_sym_origin): New method.
+       (Arm_relocate_functions::calc_grp_kn): New method.
+       (Arm_relocate_functions::calc_grp_residual): New method.
+       (Arm_relocate_functions::calc_grp_gn): New method.
+       (Arm_relocate_functions::arm_grp_alu): New Method.
+       (Arm_relocate_functions::arm_grp_ldr): New Method.
+       (Arm_relocate_functions::arm_grp_ldrs): New Method.
+       (Arm_relocate_functions::arm_grp_ldc): New Method.
+       (Target_arm::Scan::local): Handle the ARM group relocations.
+       (Target_arm::Scan::global): Likewise.
+       (Target_arm::Relocate::relocate): Likewise.
+       (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
+       Likewise.
+
+2010-01-26  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (set): Include.
+       (class Arm_exidx_fixup): Change type of last_input_section_ to const
+       pointer type.
+       (Arm_output_section::Text_section_list): New type.
+       (Arm_output_section::append_text_sections_to_list): New method.
+       (Arm_output_section::fix_exidx_coverage): Ditto.
+       (Arm_relobj::Arm_relobj): Initialize exidx_section_map_.
+       (Arm_relobj::convert_input_section_to_relaxed_section): Use
+       Relobj::set_section_offset() instead of
+       Sized_relobj::invalidate_section_offset().
+       (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra
+       parameter for section headers. Ignore relocation sections for
+       unallocated sections and EXIDX sections.
+       (Target_arm::fix_exidx_coverage): New method.
+       (Target_arm::output_section_address_less_than): New type.
+       (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the
+       linked text section instead of the EXIDX section.
+       (Arm_output_section::create_stub_group): Add an assertion to check
+       that this is not an EXIDX output section.
+       (Arm_output_section::append_text_sections_to_list): New method.
+       (Arm_output_section::fix_exidx_coverage): Ditto.
+       (Arm_relobj::scan_sections_for_stubs): Adjust call to
+       Arm_relobj::section_needs_reloc_stub_scanning.
+       (Target_arm::do_relax): Fix EXIDX output section coverage in the
+       first pass.
+       (Target_arm::fix_exidx_coverage): New method.
+       * object.h (Relobj::set_output_section): New method.
+       (Sized_relobj::invalidate_section_offset): Remove method.
+       (Sized_relobj::do_invalidate_section_offset): Remove method.
+       (Sized_relobj::do_set_section_offset): Handle offset value -1.
+
+2010-01-25  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_exidx_merged_section::do_output_offset):
+       Fix warning due to signed and unsigned comparison on a 32-bit host.
+
+2010-01-22  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Target_arm::do_relax): Record an output section for section
+       offset adjustment it contains any stub table that has changed.
+       * layout.cc (Layout::clean_up_after_relaxation): Adjust section
+       offsets in an output section if necessary.
+       * output.cc (Output_section::Output_section): Initialize
+       section_offsets_need_adjustments_.
+       (Output_section::add_input_section_for_script): Renamed to
+       Output_section::add_simple_input_section.
+       (Output_section::save_states): Add a comment.
+       (Output_section::discard_states): New method defintion.
+       (Output_section::adjust_section_offsets): Same.
+       * output.h (Output_section::add_input_section_for_script): Renamed to
+       Output_section::add_simple_input_section.
+       (Output_section::discard_states): New method declaration.
+       (Output_section::adjust_section_offsets): Same.
+       (Output_section::section_offsets_need_adjustment,
+       Output_section::set_section_offsets_need_adjustment): New method
+       definitions.
+       (Output_section::section_offsets_need_adjustment_): New data member.
+       * script-sections.cc
+       (Output_section_element_input::set_section_address): Adjust code for
+       renaming of Output_section::add_input_section_for_script.
+       (Orphan_output_section::set_section_address): Same.
+
+2010-01-22  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
+
+       * gold/arm.cc (Target_arm): Updated fix_v4bx method and usage of
+       Fix_v4bx enum values .
+       * gold/options.h (General_options): New option definitions.
+       (General_options::fix_v4bx): New method.
+       (General_options::Fix_v4bx): New enum.
+       * gold/options.cc (General_options::parse_fix_v4bx): New method.
+       (General_options::parse_fix_v4bx_interworking): New method.
+
+2010-01-22  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_exidx_fixup): New class.
+
+2010-01-21  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_exidx_cantunwind, Arm_exidx_merged_section): New
+       classes.
+       (Arm_exidx_section_offset_map): New type.
+
+2010-01-21  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_exidx_input_section): New class.
+       (Arm_relobj::exidx_input_section_by_link,
+       Arm_relobj::exidx_input_section_by_shndx,
+       Arm_relobj::make_exidx_input_section): New methods.
+       (read_arm_attributes_section): Remove.
+       (Arm_relobj::do_read_symbols): Look for ARM.exidx sections and record
+       information about them.
+       (Arm_dynobj::do_read_symbols): Move code in read_arm_attributes_section
+       to here.
+
+2010-01-20  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Target_arm::Arm_input_section_map): Change key type from
+       Input_section_specifier to Section_id.
+       (Target_arm::new_arm_input_section: Adjust code for change of key
+       type.
+       (Target_arm::find_arm_input_section): Ditto.
+       * gc.h (object.h): Include for Section_id nand Section_id_hash.
+       (Section_id): Remove.
+       (Garbage_collection::Section_id_hash): Remove.
+       * icf.h (object.h): Include for Section_id nand Section_id_hash.
+       (Section_id): Remove.
+       (Icf::Section_id_hash): Remove.
+       * object.h (Section_id, Const_section_id, Section_id_hash,
+       Const_section_id_hash): New type definitions.
+       * output.cc (Output_section::add_relaxed_input_section): Change to
+       use Const_section_id instead of Input_section_specifier as key type.
+       (Output_section::add_merge_input_section): Ditto.
+       (Output_section::build_relaxation_map): Change to use Section_id
+       instead of Input_section_specifier as key type.
+       (Output_section::convert_input_sections_in_list_to_relaxed_sections):
+       Ditto.
+       (Output_section::convert_input_sections_to_relaxed_sections): Change
+       to use Const_section_id instead of Input_section_specifier as key type.
+       (Output_section::find_merge_section): Ditto.
+       (Output_section::find_relaxed_input_section): Ditto.
+       * output.h (Input_section_specifier): Remove class.
+       (Output_section::Output_section_data_by_input_section_map): Change
+       key type to Const_section_id.
+       (Output_section::Output_relaxed_input_section_by_input_section_map):
+       Ditto.
+       (Output_section::Relaxation_map): Change key type to Section_id.
+
+2010-01-20  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
+
+       * gold/arm.cc: Added support for R_ARM_V4BX relocation
+       (class Arm_v4bx_stub): New class.
+       (DEF_STUBS): Updated definition to support v4_veneer_bx.
+       (Stub_factory::make_arm_v4bx_stub): New method.
+       (Stub_factory::elf32_arm_stub_v4_veneer_bx): New veneer template.
+       (Stub_table::empty): Handle v4bx stubs.
+       (Stub_table::add_arm_v4bx_stub): New method.
+       (Stub_table::find_arm_v4bx_stub): New method.
+       (Arm_relocate_functions::v4bx): New method.
+       (Target_arm::fix_v4bx): New method.
+       (Target_arm::Target_arm): Handle R_ARM_V4BX.
+       (Stub_table::relocate_stubs): Likewise.
+       (Stub_table::do_write): Likewise.
+       (Stub_table::update_data_size_and_addralign): Likewise.
+       (Stub_table::finalize_stubs):  Likewise.
+       (Target_arm::Scan::local): Likewise.
+       (Target_arm::Scan::global): Likewise.
+       (Target_arm::do_finalize_sections): Likewise.
+       (Target_arm::Relocate::relocate): Likewise.
+       (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
+       Likewise.
+       (Target_arm::scan_reloc_for_stub): Likewise.
+       (Target_arm::scan_reloc_section_for_stubs): Likewise.
+
+2010-01-19  Ian Lance Taylor  <iant@google.com>
+
+       * output.cc (Output_section_headers::do_sized_write): Write large
+       segment count to sh_info field.
+       (Output_file_header::do_sized_write): For large segment count,
+       write PN_XNUM to e_phnum field.
+
 2010-01-15  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
 
        * arm.cc (Arm_relocate_functions::thm_jump6): New function.
This page took 0.028923 seconds and 4 git commands to generate.