+2009-12-28 Ian Lance Taylor <iant@google.com>
+
+ * symtab.h (class Symbol_table): Add enum Defined.
+ * resolve.cc (Symbol_table::should_override): Add defined
+ parameter. Change all callers. Test whether object is NULL
+ before calling a method on it.
+ (Symbol_table::report_resolve_problem): Add defined parameter.
+ Change all callers.
+ (Symbol_table::should_override_with_special): Likewise.
+ * symtab.cc (Symbol_table::define_in_output_data): Add defined
+ parameter. Change all callers.
+ (Symbol_table::do_define_in_output_data): Likewise.
+ (Symbol_table::define_in_output_segment): Likewise.
+ (Symbol_table::do_define_in_output_segment): Likewise.
+ (Symbol_table::define_as_constant): Likewise.
+ (Symbol_table::do_define_as_constant): Likewise.
+ * script.h (class Symbol_assignment): Add is_defsym parameter to
+ constructor; change all callers.
+ * script.cc (Script_options::add_symbol_assignment): Add is_defsym
+ parameter. Change all callers. Add is_defsym_ field.
+ (class Parser_closure): Add parsing_defsym parameter to
+ constructor; change all callers. Add parsing_defsym accessor
+ function. Add parsing_defsym_ field.
+
+2009-12-28 Ian Lance Taylor <iant@google.com>
+
+ * gold.cc (queue_middle_tasks): Fix formatting.
+ * object.cc (Relobj::is_section_name_included): Likewise.
+
+2009-12-23 Ian Lance Taylor <iant@google.com>
+
+ * i386.cc (Target_i386::do_calls_non_split): Recognize
+ -fsplit-stack prologue for a function with a static chain.
+ * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
+ -fsplit-stack prologue when using %r11.
+
+2009-12-21 Sriraman Tallam <tmsriram@google.com>
+
+ * options.cc (General_options::parse_version): Make -v continue and do
+ the link like GNU ld does.
+
+2009-12-17 Rafael Avila de Espindola <espindola@google.com>
+
+ * Makefile.am (CCFILES): Add timer.cc.
+ (HFILES): Add timer.h.
+ * configure.ac: Check for sysconf and times.
+ * main.cc: include timer.h.
+ (main): Use Timer instead of get_run_time.
+ * timer.cc: New.
+ * timer.h: New.
+ * workqueue.cc: include timer.h.
+ (Workqueue::find_and_run_task):
+ Report user, sys and wall time.
+ * Makefile.in: Regenerate.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+
+2009-12-16 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
+ sections.
+ * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
+ relaxed input sections.
+ * output.cc (Output_section::find_relaxed_input_section): Change
+ return type to Output_relaxed_input_section pointer. Adjust code
+ for new type of relaxed_input_section_map_.
+ * output.h (Output_section::find_relaxed_input_section): Change
+ return type to Output_relaxed_input_section pointer.
+ (Output_section::Output_relaxed_input_section_by_input_section_map):
+ New type.
+ (Output_section::relaxed_input_section_map_): Change type to
+ Output_section::Output_relaxed_input_section_by_input_section_map.
+ * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
+ input section.
+
+2009-12-15 Ian Lance Taylor <iant@google.com>
+
+ * layout.cc (Layout::create_shstrtab): Only write out after input
+ sections if we are compressing debug sections.
+
+2009-12-15 Ian Lance Taylor <iant@google.com>
+
+ * archive.cc (Archive::add_symbols): Only look up a symbol without
+ a version if there is, in fact, a version.
+
+2009-12-14 Ian Lance Taylor <iant@google.com>
+
+ Revert -Wshadow changes, all changes from:
+ 2009-12-11 Doug Kwan <dougkwan@google.com>
+ 2009-12-11 Nick Clifton <nickc@redhat.com>
+ * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
+
+2009-12-11 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (Target_arm::do_finalize_sections): Fix build breakage
+ due to -Wshadow.
+ * attributes.cc (Object_attribute::size): Ditto.
+ (Attributes_section_data::size): Ditto.
+ (Attributes_section_data::Attributes_section_data): Ditto.
+ (Output_attributes_section_data::do_write): Ditto.
+ * attributes.h (Object_attribute::set_type): Ditto.
+ * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
+
+2009-12-11 Nick Clifton <nickc@redhat.com>
+
+ * archive.cc: Fix shadowed variable warnings.
+ * arm.cc: Likewise.
+ * compressed_output.cc: Likewise.
+ * compressed_output.h: Likewise.
+ * configure: Likewise.
+ * dwarf_reader.cc: Likewise.
+ * dynobj.cc: Likewise.
+ * dynobj.h: Likewise.
+ * ehframe.cc: Likewise.
+ * ehframe.h: Likewise.
+ * errors.cc: Likewise.
+ * expression.cc: Likewise.
+ * fileread.cc: Likewise.
+ * fileread.h: Likewise.
+ * freebsd.h: Likewise.
+ * i386.cc: Likewise.
+ * icf.cc: Likewise.
+ * incremental.h: Likewise.
+ * layout.cc: Likewise.
+ * layout.h: Likewise.
+ * mapfile.cc: Likewise.
+ * merge.cc: Likewise.
+ * merge.h: Likewise.
+ * object.cc: Likewise.
+ * object.h: Likewise.
+ * options.h: Likewise.
+ * output.cc: Likewise.
+ * output.h: Likewise.
+ * parameters.cc: Likewise.
+ * plugin.cc: Likewise.
+ * powerpc.cc: Likewise.
+ * reduced_debug_output.cc: Likewise.
+ * reduced_debug_output.h: Likewise.
+ * reloc.cc: Likewise.
+ * reloc.h: Likewise.
+ * resolve.cc: Likewise.
+ * script-sections.cc: Likewise.
+ * script.cc: Likewise.
+ * script.h: Likewise.
+ * sparc.cc: Likewise.
+ * symtab.cc: Likewise.
+ * symtab.h: Likewise.
+ * target-select.cc: Likewise.
+ * target-select.h: Likewise.
+ * token.h: Likewise.
+ * workqueue.cc: Likewise.
+ * workqueue.h: Likewise.
+ * x86_64.cc: Likewise.
+
+2009-12-10 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (attributes.h): New include.
+ (Arm_relobj::Arm_relobj): Initialize attributes_section_data_.
+ (Arm_relobj::~Arm_relobj): Delete object pointed by
+ attributes_section_data_.
+ (Arm_relobj::attributes_section_data): New method definition.
+ (Arm_relobj::attributes_section_data_): New data member declaration.
+ (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_.
+ (Arm_dynobj::~Arm_dynobj): Delete object pointed by
+ attributes_section_data_.
+ (Arm_dynobj::attributes_section_data): New method definition.
+ (Arm_dynobj::attributes_section_data_): New data member declaration.
+ (Target_arm::Target_arm): Initialize attributes_section_data_. Change
+ initialization value of may_use_blx_ to false.
+ (Target_arm::using_thumb2, Target_arm::using_thumb_only,
+ Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use
+ object attributes to compute results instead of hard-coding.
+ (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order,
+ Target_arm::get_secondary_compatible_arch,
+ Target_arm::set_secondary_compatible_arch
+ Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
+ Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes):
+ New method declarations.
+ (Target_arm::get_aeabi_object_attribute): New method definition.
+ (Target_arm::attributes_section_data_): New data member declaration.
+ (read_arm_attributes_section): New template definition.
+ (Arm_relobj::do_read_symbols): Read attributes section if it exists.
+ (Arm_dynobj::do_read_symbols): Ditto.
+ (Target_arm::do_finalize_sections): Merge attributes sections from
+ input. Check for BLX use after attributes section merging.
+ Fix __exidx_start and __exidx_end visibility. Create an
+ .ARM.attributes section if necessary.
+ (Target_arm::get_secondary_compatible_arch,
+ Target_arm::set_secondary_compatible_arch,
+ Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name,
+ Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes,
+ Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order):
+ New method definitions.
+
+2009-12-09 Ian Lance Taylor <iant@google.com>
+
+ * plugin.cc (Plugin::load): Don't cast from void* to a function
+ pointer.
+
+2009-12-09 Ian Lance Taylor <iant@google.com>
+
+ * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version
+ information fields.
+
+2009-12-09 H.J. Lu <hongjiu.lu@intel.com>
+
+ * testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES):
+ Replace two_file_shared_1.so with two_file_shared_2.so.
+ * testsuite/Makefile.in: Regenerated.
+
+2009-12-08 Doug Kwan <dougkwan@google.com>
+
+ * Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc.
+ (HFILES): Add attributes.h and int_encoding.h.
+ * Makefile.in: Regenerate.
+ * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move
+ function definitions to int_encoding.cc
+ * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move
+ prototypes to int_encoding.h
+ * reduced_debug_output.cc (int_encoding.h): New include.
+ (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move
+ function definitions to int_encoding.cc
+ (insert_into_vector, read_from_pointer): Move template definitions to
+ int_encoding.h
+ * attributes.cc: New file.
+ * attributes.h: New file.
+ * int_encoding.cc: New file.
+ * int_encoding.h: New file.
+
+2009-12-07 Rafael Avila de Espindola <espindola@google.com>
+
+ PR gold/11055
+ * incremental-dump.cc (dump_incremental_inputs): New.
+ (main): Use dump_incremental_inputs.
+
+2009-12-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gold/10893
+ * i386.cc (Target_i386::Scan::globa): Use is_func instead of
+ checking elfcpp::STT_FUNC.
+ (Target_i386::Relocate::relocate): Likewise.
+ * x86_64.cc (Target_x86_64::Scan::global): Likewise.
+
+ * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC
+ symbols from shared libraries into normal FUNC symbols.
+
+ * symtab.h (Symbol): Add is_func and use it.
+
+2009-12-05 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (Target_arm::arm_info): Initialize new fields
+ attributes_section and attributes_vendor.
+ * i386.cc (Target_i386::i386_info): Same.
+ * object.cc (Sized_relobj::do_layout): Skip attribute section.
+ * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new
+ fields attributes_section and attributes_vendor.
+ * sparc.cc (Target_sparc::sparc_info): Same.
+ * target.h (Target::attributes_section, Target::attributes_vendor,
+ Target::is_attributes_section, Target::attribute_arg_type,
+ Target::attributes_order): New method definitions.
+ (Target::Target_info::attributes_section,
+ Target::Target_info::attributes_vendor): New fields.
+ (Target::do_attribute_arg_type, Target::do_attributes_order): New
+ virtual method definitions.
+ * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields
+ attributes_section and attributes_vendor.
+ * testsuite/testfile.cc (Target_test::test_target_info): Same.
+
+2009-12-05 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc: Update comments about interworking and stub generation.
+ (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations
+ considered as non-PIC.
+ (Arm_relocate_functions::base_abs): Fix formatting.
+ (Arm_relocate_functions::got_prel): Fix comment. Change interface
+ of function to use GOT entry address instead of offset.
+ (Target_arm::Scan::global): Issue an error if a symbol would need a
+ PLT does not get one because it is untyped. Remove code to create
+ dynamic symbols for relative branches.
+ (Target_arm::Relocate::relocate: Use 0 instead of false since function
+ takes unsigned integer instead of boolean.
+
+2009-12-05 H.J. Lu <hongjiu.lu@intel.com>
+
+ * testsuite/Makefile.am (constructor_test_LDADD): New. Empty.
+ (two_file_test_LDADD): Likewise.
+ (common_test_1_LDADD): Likewise.
+ (exception_test_LDADD) Likewise.
+ (weak_test_LDADD): Likewise.
+ (many_sections_test_LDADD): Likewise.
+ (initpri1_LDADD): Likewise.
+ (script_test_1_LDADD): Likewise.
+ (script_test_2_LDADD): Likewise.
+ (justsyms_LDADD): Likewise.
+ (binary_test_LDADD): Likewise.
+ (large_LDADD): Likewise.
+ * testsuite/Makefile.in: Regenerated.
+
+2009-12-04 H.J. Lu <hongjiu.lu@intel.com>
+
+ * resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL.
+ (Symbol_table::override_with_special): Likewise.
+ (Symbol_table::add_from_object): Likewise.
+
+2009-12-04 Rafael Avila de Espindola <espindola@google.com>
+
+ * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
+ Don't set the data_offset twice.
+
+2009-12-04 Rafael Avila de Espindola <espindola@google.com>
+
+ * testsuite/Makefile.in: Regenerate.
+
+2009-12-03 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc: Remove comment about missing .ARM.exidx section symbols.
+ (Target_arm::do_finalize_sections): Add parameter for symbol table
+ pointer. Add __exidx_start and __exidx_end symbols as appropriate.
+ * i386.cc (Target_i386::do_finalize_sections): Add an additional
+ parameter for symbol table pointer.
+ * layout.cc (Layout::finalize): Call Target::finalize_sections with
+ an additional parameter for a pointer to symbol table.
+ * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional
+ parameter for a symbol table pointer.
+ * sparc.cc (Target_sparc::do_finalize_sections): Ditto.
+ * target.h (Target::finalize_sections, Target::do_finalize_sections):
+ Ditto.
+ * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional
+ parameter for a symbol table pointer.
+
+2009-12-03 Rafael Avila de Espindola <espindola@google.com>
+
+ * incremental.cc (Incremental_inputs_header)
+ (Incremental_inputs_header_write, Incremental_inputs_entry)
+ (Incremental_inputs_entry_write): Move ...
+ * incremental.h (Incremental_inputs_header)
+ (Incremental_inputs_header_write, Incremental_inputs_entry)
+ (Incremental_inputs_entry_write): here.
+
+2009-12-02 Rafael Avila de Espindola <espindola@google.com>
+
+ * incremental.cc (make_sized_incremental_binary): Set the target.
+ Error if it is incompatible.
+ * output.h (Output_file): Add filename method.
+
+2009-12-02 Rafael Avila de Espindola <espindola@google.com>
+
+ * incremental.cc (Incremental_inputs_entry): Remove unused argument
+ from the get_* methods.
+
+2009-12-02 Rafael Avila de Espindola <espindola@google.com>
+
+ * incremental-dump.cc (main): Check that the offeset of a script is 0.
+ * incremental.cc (Incremental_inputs::sized_create_inputs_section_data):
+ Write 0 for the data_offset of scripts.
+
+2009-12-02 Rafael Avila de Espindola <espindola@google.com>
+
+ * testsuite/Makefile.am: Add the incremental_test.sh test.
+ * testsuite/incremental_test.sh: New.
+ * testsuite/incremental_test_1.c: New.
+ * testsuite/incremental_test_2.c: New.
+
+2009-12-01 Rafael Avila de Espindola <espindola@google.com>
+
+ * incremental-dump.cc (main): Fix typos.
+
+2009-11-27 Rafael Avila de Espindola <espindola@google.com>
+
+ PR gold/11025
+ * incremental-dump.cc (main): Use llu to print 64 bit values.
+
+2009-11-26 Per Øyvind Karlsen <peroyvind@mandriva.org>
+ H.J. Lu <hongjiu.lu@intel.com>
+
+ * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB)
+ $(LIBDL).
+ (incremental_dump_LDADD): Likewise.
+ * Makefile.in: Regenerated.
+
+2009-11-25 Doug Kwan <dougkwan@google.com>
+
+ Revert:
+
+ 2009-11-25 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (Target_arm::Target_arm): Move method definition
+ outside of class definition. Add code to handle
+ --target1-rel, --target1-abs and --target2= options.
+ (Target_arm::get_reloc_reloc_type): Change method to be
+ non-static and const.
+ (Target_arm::target1_is_rel_, Target_arm::target2_reloc_):
+ New data member declaration.
+ (Target_arm::Scan::local, Target_arm::Scan::global,
+ Target_arm::Relocate::relocate,
+ Target_arm::Relocatable_size_for_reloc::get_size_for_reloc):
+ Adjust call to Target_arm::get_real_reloc_type.
+ (Target_arm::get_real_reloc_type): Use command line options
+ to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
+ * options.h (--target1-rel, --target1-abs, --target2): New
+ ARM-only options.
+
+2009-11-25 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (Target_arm::Target_arm): Move method definition outside of
+ class definition. Add code to handle --target1-rel, --target1-abs
+ and --target2= options.
+ (Target_arm::get_reloc_reloc_type): Change method to be non-static
+ and const.
+ (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data
+ member declaration.
+ (Target_arm::Scan::local, Target_arm::Scan::global,
+ Target_arm::Relocate::relocate,
+ Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust
+ call to Target_arm::get_real_reloc_type.
+ (Target_arm::get_real_reloc_type): Use command line options to
+ determine real types of R_ARM_TARGET1 and R_ARM_TARGET2.
+ * options.h (--target1-rel, --target1-abs, --target2): New ARM-only
+ options.
+
+2009-11-25 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (Target_arm::may_use_thumb2_nop): New method definition.
+ (Arm_relocate_functions::thumb_branch_common): New metod declaration.
+ (Arm_relocate_functions::abs12, Arm_relocate_functions::abs16): Fix
+ formatting.
+ (Arm_relocate_functions::thm_call): Replace body with a call to
+ Arm_relocate_functions::thumb_branch_common.
+ (Arm_relocate_functions::thm_jump24,
+ Arm_relocate_functions::thm_xpc22): New method definitions.
+ (Arm_relocate_functions::thumb_branch_common): New method definition.
+ (Reloc_stub::stbu_type_for_reloc): Fix incorrect uses of bit-wise-or
+ operator.
+ (Target_arm::Relocate::relocate): Adjust call to thm_call.
+ Add code to handle R_ARM_THM_XPC22 and R_ARM_THM_JUMP24.
+
+2009-11-24 Rafael Avila de Espindola <espindola@google.com>
+
+ * Makefile.am: Build incremental-dump
+ * Makefile.in: Regenerate.
+ * incremental-dump.cc: New.
+ * incremental.cc (Incremental_inputs_header_data,
+ Incremental_inputs_entry_data): Move to incremental.h
+ * incremental.h: (Incremental_inputs_header_data,
+ Incremental_inputs_entry_data): Move from incremental.cc
+
+2009-11-24 Rafael Avila de Espindola <espindola@google.com>
+
+ * incremental.cc (Incremental_inputs_header,
+ Incremental_inputs_header_write, Incremental_inputs_entry,
+ Incremental_inputs_entry_write): Add a typedef with the data type.
+
+2009-11-24 Rafael Avila de Espindola <espindola@google.com>
+
+ * incremental.cc (Incremental_inputs_header,
+ Incremental_inputs_header_write, Incremental_inputs_entry,
+ Incremental_inputs_entry_write): Update comment about which
+ type has the filed descriptions.
+
+2009-11-15 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (Target_arm::may_use_arm_nop): New method definition.
+ (Arm_relocate_functions::arm_branch_common): Change method defintion
+ in class definition to a method declaration and update list of formal
+ parameters.
+ (Arm_relocate_functions::plt32, Arm_relocate_functions::call,
+ Arm_relocation_functions::jump24): Adjust call to
+ Arm_relocate_functions::arm_branch_common. Update list of formal
+ parameters.
+ (Arm_relocate_functions::xpc25): New method definition.
+ (Arm_relocate_functions::arm_branch_common): Move method defintion
+ out from class definition. Use stubs for mode-switching and extending
+ branch ranges.
+ (Target_arm::Relocate::relocate): Handle weakly-undefined symbols
+ specially. Change code to enable use of stubs in ARM branches.
+
+2009-11-10 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter
+ in method declaration.
+ (Target_arm::relocate_stub): New method declaration.
+ (Target_arm::default_target): Change to return a pointer instead of
+ a const reference.
+ (Reloc_stub::stub_type_for_reloc): Adjust for the change in
+ Target_arm::default_target.
+ (Arm_Relobj::do_relocate_sections): Remove options paramater in
+ method definition.
+ (Target_arm::relocate_section): Adjust view.
+ (Target_arm::relocate_stub): New method definition.
+
+2009-11-10 Doug Kwan <dougkwan@google.com>
+
+ * i386.cc (Target_i386::do_calls_non_split): Add a cast to avoid
+ a format warning.
+ * incremental.cc (open_incremental_binary): Initialized local
+ variables to avoid warnings.
+ * object.cc (make_elf_object): Ditto.
+ * x86_64.cc (Target_x86_64::do_calls_non_split): Add a cast to avoid
+ a format warning.
+
+009-11-09 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gold/10930
+ * testsuite/plugin_test.c: Include "config.h".
+
+2009-11-09 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (Target_arm::fake_relnum_for_stubs): New constant.
+ (arm_symbol_value): Remove.
+ (Arm_relocate_functions::arm_branch_common,
+ Arm_relocate_functions::abs8, Arm_relocate_functions::thm_abs5,
+ Arm_relocate_functions::abs12, Arm_relocate_functions::abs16,
+ Arm_relocate_functions::abs32, Arm_relocate_functions::rel32,
+ Arm_relocate_functions::thm_call, Arm_relocate_functions::plt32,
+ Arm_relocate_functions::call, Arm_relocate_functions::jump24,
+ Arm_relocate_functions::prel31, Arm_relocate_functions::mov_abs_nc,
+ Arm_relocate_functions::movt_abs, Arm_relocate_functions::movw_abs_nc,
+ Arm_relocate_functions::thm_mobw_abs_nc,
+ Arm_relocate_functions::thm_mov_abs,
+ Arm_relocate_functions::movw_prel_nc,
+ Arm_relocate_functions::thm_movt_abs,
+ Arm_relocate_functions::movt_prel,
+ Arm_relocate_functions::thm_movw_prel_nc,
+ Arm_relocate_functions::thm_movt_prel): Adjust callers of the above.
+ (Target_arm::Relocate::relocate): Only decompose address into two
+ parts if relocation type uses the thumb-bit and pass the actual
+ bit instead of a flag indicating that the thumb-bit is used. Adjust
+ calls to methods in Arm_relocate_functions for this change.
+
+2009-11-08 Ian Lance Taylor <iant@google.com>
+
+ PR 10925
+ * reloc.cc: Instantiate
+ Sized_relobj::initialize_input_to_output_maps and
+ Sized_relobj:free_input_to_output_maps.
+
+2009-11-06 Ian Lance Taylor <iant@google.com>
+
+ PR 10876
+ * defstd.cc (in_segment): Set only_if_ref true for "end".
+
+2009-11-06 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (class Reloc_stub): Correct a comment.
+ (Target_arm::Target_arm): Initialize arm_input_section_map_.
+ (Target_arm::scan_section_for_stubs): New method declaration.
+ (Target_arm::do_make_elf_object, Target_arm::do_make_output_section):
+ Change methods from private to protected.
+ (Target_arm::do_may_relax): New method definition.
+ (Target_arm::do_relax, Target_arm::group_sections,
+ Target_arm::scan_reloc_for_stub,
+ Target_arm::scan_reloc_section_for_stubs): New method declarations.
+ (Target_arm::arm_input_section_map_): New data member declaration.
+ (Target_arm::scan_reloc_for_stub,
+ Target_arm::scan_reloc_section_for_stubs,
+ Target_arm::scan_section_for_stubs, Target_arm::group_sections,
+ Target_arm::do_relax): New method definitions.
+
+2009-11-06 Mikolaj Zalewski <mikolaj@google.com>
+
+ * configure.ac: Check for (struct stat)::st_mtim
+ * fileread.cc (File_read::get_mtime): Use st_mtim if available.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+
+2009-11-05 Ian Lance Taylor <iant@google.com>
+
+ PR 10910
+ * output.cc (Output_segment::add_output_section): Add missing
+ return statement.
+
+2009-11-04 Ian Lance Taylor <iant@google.com>
+
+ PR 10880
+ * object.h (class Object): Add is_needed and set_is_needed
+ methods. Add is_needed_ field. Make bool fields into bitfields.
+ * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is
+ defined in a dynamic object and referenced by a regular object,
+ set is_needed for the dynamic object.
+ * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED
+ if the file is marked with as_needed and it is not needed.
+
+2009-11-04 Ian Lance Taylor <iant@google.com>
+
+ PR 10887
+ * arm.cc (Target_arm::do_finalize_sections): Don't add dynamic
+ tags if data is discarded by linker script.
+ * i386.cc (Target_i386::do_finalize_sections): Likewise.
+ * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
+ * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
+ * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
+
+2009-11-04 Ian Lance Taylor <iant@google.com>
+
+ * layout.cc (Layout::get_output_section): Add is_interp and
+ is_dynamic_linker_section parameters. Change all callers.
+ (Layout::choose_output_section): Likewise.
+ (Layout::make_output_section): Likewise.
+ (Layout::add_output_section_data): Add is_dynamic_linker_section
+ parameter. Change all callers.
+ * layout.h (class Layout): Update declarations.
+ * output.h (class Output_section): Add is_interp, set_is_interp,
+ is_dynamic_linker_section, set_is_dynamic_linker_section methods.
+ Add is_interp_, is_dynamic_linker_section_ fields. Change
+ generate_code_fills_at_write_ to a bitfield.
+ * output.cc (Output_section::Output_sections): Initialize new
+ fields.
+ (Output_segment::add_output_section): Add do_sort parameter.
+ Change all callers.
+
+2009-11-03 Ian Lance Taylor <iant@google.com>
+
+ PR 10860
+ * options.h (class General_options): Add --warn-common.
+ * resolve.cc (Symbol_table::resolve): Handle --warn-common when
+ merging two common symbols.
+ (Symbol_table::should_override): Handle --warn-common when merging
+ a common symbol with a defined symbol. Use report_resolve_problem
+ for multiple definitions.
+ (Symbol_table::report_resolve_problem): New function.
+ * symtab.h (class Symbol_table): Declare report_resolve_problem.
+
+2009-11-03 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and
+ stub_factory_.
+ (Target_arm::stub_factory): New method definition.
+ (Target_arm::new_arm_input_section,
+ Target_arm::find_arm_input_section, Target_arm::new_stub_table,
+ Target_arm::reloc_uses_thumb_bit): New method declarations.
+ (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map):
+ New type definitions.
+ (Target_arm::stub_tables_, Target_arm::stub_factory_): New data
+ member declarations.
+ (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section,
+ Target_arm::find_arm_input_section, Target_arm::new_stub_table):
+ New method definitions.
+
+2009-11-03 Ian Lance Taylor <iant@google.com>
+
+ * options.h (class General_options): Add --warn_constructors.
+
+2009-11-03 Ian Lance Taylor <iant@google.com>
+
+ PR 10893
+ * defstd.cc (in_section): Add entries for __rel_iplt_start,
+ __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
+
+2009-11-03 Ian Lance Taylor <iant@google.com>
+
+ PR 10895
+ * po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and
+ --msgid-bugs-address.
+ (install-pdf): New target.
+ (install-data_yes): Look up one directory to find mkinstalldirs.
+
+2009-11-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ * po/Make-in (.po.gmo): Don't generate .gmo files in source
+ tree.
+
+2009-10-30 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
+
+2009-10-30 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (Stub_addend_reader): New struct template definition
+ and partial specializations.
+ (Stub_addend_reader::operator()): New method definition for a
+ partially specialized template.
+
+2009-10-30 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (Arm_relobj::processor_specific_flags): New method
+ definition.
+ (Arm_relobj::do_read_symbols): New method declaration.
+ (Arm_relobj::processor_specific_flags_): New data member declaration.
+ (Arm_dynobj): New class definition.
+ (Target_arm::do_finalize_sections): Add input_objects parameter.
+ (Target_arm::do_adjust_elf_header): New method declaration.
+ (Target_arm::are_eabi_versions_compatible,
+ (Target_arm::merge_processor_specific_flags): New method declaration.
+ (Target_arm::do_make_elf_object): New overloaded method definitions
+ and declaration.
+ (Arm_relobj::do_read_symbols): New method definition.
+ (Arm_dynobj::do_read_symbols): Ditto.
+ (Target_arm::do_finalize_sections): Add input_objects parameters.
+ Merge processor-specific flags from all input objects.
+ (Target_arm::are_eabi_versions_compatible,
+ Target_arm::merge_processor_specific_flags,
+ Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object):
+ New method definitions.
+ * i386.cc (Target_i386::do_finalize_sections): Add unnamed
+ Input_objects pointer type parameter.
+ * layout.cc (Layout::finalize): Pass input objects to target's.
+ finalize_sections function.
+ * output.cc (Output_file_header::do_sized_write): Set ELF file
+ header's processor-specific flags.
+ * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed
+ Input_objects pointer type parameter.
+ * sparc.cc (Target_sparc::do_finalize_sections): Same.
+ * target.h (Input_objects): New forward class declaration.
+ (Target::processor_specific_flags,
+ Target::are_processor_specific_flags_sect): New method definitions.
+ (Target::finalize_sections): Add input_objects parameter.
+ (Target::Target): Initialize processor_specific_flags_ and
+ are_processor_specific_flags_set_.
+ (Target::do_finalize_sections): Add unnamed Input_objects pointer type
+ parameter.
+ (Target::set_processor_specific_flags): New method definition.
+ (Target::processor_specific_flags_,
+ Target::are_processor_specific_flags_set_): New data member
+ declarations.
+ * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed
+ Input_objects pointer type parameter.
+
+2009-10-30 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
+
+2009-10-28 Ian Lance Taylor <iant@google.com>
+
+ * object.h (class Relobj): Drop options parameter from
+ gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs,
+ do_scan_relocs, do_relocate. Change all callers.
+ (class Sized_relobj): Drop options parameters from
+ do_gc_process_relocs, do_scan_relocs, do_relocate,
+ do_relocate_sections, relocate_sections, emit_relocs_scan,
+ emit_relocs_scan_reltype. Change all callers.
+ (struct Relocate_info): Remove options field and all references to
+ it.
+ * reloc.h (class Read_relocs): Remove options constructor
+ parameter and options_ field. Change all callers.
+ (class Gc_process_relocs, class Scan_relocs): Likewise.
+ (class Relocate_task): Likewise.
+ * target-reloc.h (scan_relocs): Remove options parameter. Change
+ all callers.
+ (scan_relocatable_relocs): Likewise.
+ * target.h (class Sized_target): Remove options parameter from
+ gc_process_relocs, scan_relocs, scan_relocatable_relocs. Change
+ all callers.
+ * gc.h (gc_process_relocs): Remove options parameter. Change all
+ callers.
+ * arm.cc: Update functions to remove options parameters.
+ * i386.cc: Likewise.
+ * powerpc.cc: Likewise.
+ * sparc.cc: Likewise.
+ * x86_64.cc: Likewise.
+ * testsuite/testfile.cc: Likewise.
+
+2009-10-28 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (Arm_relobj): New class definition.
+ (Arm_relobj::scan_sections_for_stubs,
+ Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections):
+ New method definitions.
+
+2009-10-28 Cary Coutant <ccoutant@google.com>
+
+ * plugin.h (Plugin::Plugin): Initialize cleanup_done_.
+ (Plugin::cleanup_done_): New member.
+ (Plugin_manager::Plugin_manager): Remove cleanup_done_.
+ (Plugin_manager::cleanup_done_): Remove.
+ (Plugin_manager::add_input_file): Edit error message.
+ * plugin.cc (Plugin::cleanup): Test and set cleanup_done_.
+ (Plugin_manager::cleanup): Remove use of cleanup_done_.
+
+2009-10-27 Mikolaj Zalewski <mikolajz@google.com>
+
+ * fileread.cc: (File_read::View::~View): Use the new
+ data_ownership_ filed.
+ (File_read::~File_read): Dispose the new whole_file_view_.
+ (File_read::open): Mmap the whole file if needed.
+ (File_read::open): Use whole_file_view_ instead of contents_.
+ (File_read::find_view): Use whole_file_view_ if applicable.
+ (File_read::do_read): Use whole_file_view_ instead of contents_.
+ (File_read::make_view): Use whole_file_view_ instead of contents_,
+ update File_read::View::View call.
+ (File_read::find_or_make_view): Update File_read::View::View
+ call.
+ * fileread.h: (File_read::File_read): Initialize whole_file_view_,
+ remove contents_
+ (File_read::View::Data_ownership): New enum.
+ (File_read::View::View): Replace bool mapped_ with Data_ownership
+ argument.
+ (File_read::View::mapped_): Remove (replaced by data_ownership_).
+ (File_read::View::data_ownership_): New field.
+ (File_read::contents_): Remove (replaced by whole_file_view_).
+ (File_read::whole_file_view_): New field.
+ * options.h (class General_options): Add --keep-files-mapped.
+
+2009-10-27 Cary Coutant <ccoutant@google.com>
+
+ * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.
+ * testsuite/Makefile.am (plugin_test_5): New test case.
+ * testsuite/Makefile.in: Regenerate.
+
+2009-10-25 Doug Kwan <dougkwan@google.com>
+
+ * object.h (Sized_relobj::View_size, Sized_relobj::Views): Change
+ from private to protected to allow access by child class.
+ (Sized_relobj::do_relocate_sections): New method declaration.
+ (Sized_relobj::relocate_sections): Virtualize.
+ * reloc.cc (Sized_relobj::do_relocate_sections): Rename from
+ Sized_relobj::relocate_sections. Instantiate template explicitly
+ for different target sizes and endianity.
+
+2009-10-24 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (Arm_output_section, Arm_relobj): Forward class declarations.
+ (Arm_input_section::as_arm_input_section): New method.
+ (Arm_output_section): New class definition.
+ (Arm_output_section::create_stub_group,
+ Arm_output_section::group_sections): New method definitions.
+
+2009-10-22 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (Arm_input_section): New class definition.
+ (Arm_input_section::init, Arm_input_section:do_write,
+ Arm_input_section::set_final_data_size,
+ Arm_input_section::do_reset_address_and_file_offset): New method
+ definitions.
+
+2009-10-21 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (Stub_table, Arm_input_section): New forward class
+ declarations.
+ (Stub_table): New class defintion.
+ (Stub_table::add_reloc_stub, Stub_table::relocate_stubs
+ Stub_table::do_reset_address_and_file_offset, Stub_table::do_write):
+ New method definition.
+
+2009-10-21 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc: Update copyright comments.
+ (Target_arm): New forward class template declaration.
+ (Arm_address): New type.
+ (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET,
+ THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET,
+ THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New
+ constants.
+ (Insn_template): Same.
+ (DEF_STUBS): New macro.
+ (Stub_type): New enum type.
+ (Stub_template): New class definition.
+ (Stub): Same.
+ (Reloc_stub): Same.
+ (Stub_factory): Same.
+ (Target_arm::Target_arm): Initialize may_use_blx_ and
+ should_force_pic_veneer_.
+ (Target_arm::may_use_blx, Target_arm::set_may_use_blx,
+ Target_arm::should_force_pic_veneer,
+ Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2,
+ Target_arm::using_thumb_only, Target_arm:;default_target): New
+ method defintions.
+ (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_):
+ New data member declarations.
+ (Insn_template::size, Insn_template::alignment): New method defintions.
+ (Stub_template::Stub_template): New method definition.
+ (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc,
+ Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same.
+ (Stub_factory::Stub_factory): New method definition.
+ * gold.h (string_hash): New template.
+ * output.h (Input_section_specifier::hash_value): Use
+ gold::string_hash.
+ (Input_section_specifier::string_hash): Remove.
+ * stringpool.cc (Stringpool_template::string_hash): Use
+ gold::string_hash.
+
+2009-10-20 Doug Kwan <dougkwan@google.com>
+
+ * object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
+ symbols of relaxed input sections.
+ * output.h (Output_section::find_relaxed_input_section): Make
+ method public.
+
+2009-10-16 Doug Kwan <dougkwan@google.com>
+
+ * dynobj.cc (Versions::Versions): Initialize version_script_.
+ Only insert base version symbol definition for a shared object
+ if version script defines any version versions.
+ (Versions::define_base_version): New method definition.
+ (Versions::add_def): Check that base version is not needed.
+ (Versions::add_need): Define base version lazily.
+ * dynobj.h (Versions::define_base_version): New method declaration.
+ (Versions::needs_base_version_): New data member declaration.
+ * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh
+ (check_DATA): Add no_version_test.stdout.
+ (libno_version_test.so, no_version_test.o no_version_test.stdout):
+ New make rules.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/no_version_test.c: New file.
+ * testsuite/no_version_test.sh: Ditto.
+
+2009-10-16 Doug Kwan <dougkwan@google.com>
+
+ * expression.cc (class Segment_start_expression): New class definition.
+ (Segment_start_expression::value): New method definition.
+ (script_exp_function_segment_start): Return a new
+ Segment_start_expression.
+ * gold/script-c.h (script_saw_segment_start_expression): New function
+ prototype.
+ * script-sections.cc (Script_sections::Script_sections): Initialize
+ SAW_SEGMENT_START_EXPRESSION_ to false.
+ (Script_sections::set_section_addresses): Use -Ttext, -Tdata
+ and -Tbbs options to specify section addresses if given in
+ command line and no SEGMENT_START expression is seen in a script.
+ * script-sections.h (Script_sections::saw_segment_start_expression,
+ Script_sections::set_saw_segment_start_expression): New method
+ definition.
+ (Script_sections::saw_segment_start_expression_): New data member
+ declaration.
+ * script.cc (script_saw_segment_start_expression): New function.
+ * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression.
+ * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh,
+ script_test_7.sh and script_test_8.sh.
+ (check_DATA): Add script_test_6.stdout, script_test_7.stdout and
+ script_test_8.stdout.
+ (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8.
+ (script_test_6, script_test_6.stdout, script_test_7,
+ script_test_7.stdout, script_test_8, script_test_8.stdout): New rules.
+ * Makefile.in: Regenerate.
+ * testsuite/script_test_6.sh: New file.
+ * testsuite/script_test_6.t: Same.
+ * testsuite/script_test_7.sh: Same.
+ * testsuite/script_test_7.t: Same.
+ * testsuite/script_test_8.sh: Same.
+
+2009-10-16 Doug Kwan <dougkwan@google.com>
+
+ * output.cc (Output_segment::set_section_list_address): Cast
+ expressions to unsigned long long type to avoid format warnings.
+
+2009-10-15 Ian Lance Taylor <iant@google.com>
+
+ * script.cc (Script_options::add_symbol_assignment): Always add a
+ dot assignment to script_sections_.
+ * script-sections.cc (Script_sections::add_dot_assignment):
+ Initialize if necessary.
+
+ * layout.cc (Layout::relaxation_loop_body): Don't crash if we see
+ program headers with no load segment if there is a linker script.
+
+ * layout.cc (Layout::set_segment_offsets): Align the file offset
+ to the segment aligment for -N or -n with no load segment.
+ * output.cc (Output_segment::add_output_section): Don't crash if
+ the first section is a TLS section.
+ (Output_segment::set_section_list_addresses): Print an error
+ message if the address moves backward in a linker script.
+ * script-sections.cc
+ (Output_section_element_input::set_section_addresses): Don't
+ increase *dot_value for a SHF_TLS/SHT_NOBITS section.
+ (Orphan_output_section::set_section_addresses): Likewise.
+
+2009-10-15 Doug Kwan <dougkwan@google.com>
+
+ * layout.cc (Layout::finish_dynamic_section): Generate tags
+ DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ,
+ DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is
+ used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
+
+2009-10-14 Ian Lance Taylor <iant@google.com>
+
+ * object.h (class Relocate_info): Add reloc_shdr and data_shdr
+ fields.
+ * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and
+ data_shdr fields of relinfo.
+ * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field.
+ (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo. For
+ R_386_TLS_LDO_32, adjust based on section flags.
+ (Target_i386::Relocate::fix_up_ldo): Remove.
+
+2009-10-13 Ian Lance Taylor <iant@google.com>
+
+ Add support for -pie.
+ * options.h (class General_options): Add -pie and
+ --pic-executable.
+ (General_options::output_is_position_independent): Test -pie.
+ (General_options::output_is_executable): Return true if not shared
+ and not relocatable.
+ (General_options::output_is_pie): Remove.
+ * options.cc (General_options::finalize): Reject incompatible uses
+ of -pie.
+ * gold.cc (queue_middle_tasks): A -pie link is not static.
+ * symtab.h (Symbol::needs_plt_entry): Return false if -pie.
+ * symtab.cc (Symbol::final_value_is_known): Return false if
+ output_is_position_independent.
+ * layout.cc (Layout::set_segment_offsets): Start at address 0 if
+ output_is_position_independent.
+ * output.cc (Output_file_header::do_sized_write): Use ET_DYN if
+ output_is_position_independent.
+ * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if
+ output_is_position_independent.
+ * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and
+ two_file_pie_test.
+ (basic_pie_test.o, basic_pie_test): New targets.
+ (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets.
+ (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets.
+ (two_file_pie_test): New target.
+ * testsuite/Makefile.in: Rebuild.
+ * README: Remove note saying that -pie is not supported.
+
+2009-10-13 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
+
+ * options.h (class General_options): Add -init and -fini.
+ * layout.cc (Layout::finish_dynamic_section): Emit
+ given init and fini functions.
+
+2009-10-13 Sriraman Tallam <tmsriram@google.com>
+
+ * gc.h (gc_process_relocs): Check if icf is enabled using new
+ function.
+ * gold.cc (queue_initial_tasks): Likewise.
+ (queue_middle_tasks): Likewise.
+ * object.cc (do_layout): Likewise.
+ * symtab.cc (is_section_folded): Likewise.
+ * main.cc (main): Likewise.
+ * reloc.cc (Read_relocs::run): Likewise.
+ (Sized_relobj::do_scan_relocs): Likewise.
+ * icf.cc (is_function_ctor_or_dtor): New function.
+ (Icf::find_identical_sections): Check if function is ctor or dtor when
+ safe icf is chosen.
+ * options.h (General_options::icf): Change option to be an enum.
+ (Icf_status): New enum.
+ (icf_enabled): New method.
+ (icf_safe_folding): New method.
+ (set_icf_status): New method.
+ (icf_status_): New variable.
+ * (options.cc) (General_options::finalize): Set icf_status_.
+ * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
+ icf_test and icf_keep_unique_test to use the --icf enum flag.
+ * testsuite/icf_safe_test.sh: New file.
+ * testsuite/icf_safe_test.cc: New file.
+
2009-10-12 Sriraman Tallam <tmsriram@google.com>
* symtab.h: Check for GOLD_SYMTAB_H before header includes. Remove