X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gold%2FChangeLog;h=139dca5ab7e9a4205fa8df0f189767c009e2d20c;hb=91d6fa6a035cc7d0b7be5c99c194a64cb80924b0;hp=6c5338379859290c0b024474fa597e022c356c7f;hpb=032ce4e9e37bd92e928352fca78b1eee3bb41fdd;p=deliverable%2Fbinutils-gdb.git diff --git a/gold/ChangeLog b/gold/ChangeLog index 6c53383798..139dca5ab7 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,909 @@ +2009-12-11 Nick Clifton + + * 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 + + * 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 + + * plugin.cc (Plugin::load): Don't cast from void* to a function + pointer. + +2009-12-09 Ian Lance Taylor + + * dynobj.cc (Sized_dynobj::do_read_symbols): Clear version + information fields. + +2009-12-09 H.J. Lu + + * 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 + + * 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 + + PR gold/11055 + * incremental-dump.cc (dump_incremental_inputs): New. + (main): Use dump_incremental_inputs. + +2009-12-07 H.J. Lu + + 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * incremental.cc (Incremental_inputs::sized_create_inputs_section_data): + Don't set the data_offset twice. + +2009-12-04 Rafael Avila de Espindola + + * testsuite/Makefile.in: Regenerate. + +2009-12-03 Doug Kwan + + * 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 + + * 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 + + * 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 + + * incremental.cc (Incremental_inputs_entry): Remove unused argument + from the get_* methods. + +2009-12-02 Rafael Avila de Espindola + + * 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 + + * 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 + + * incremental-dump.cc (main): Fix typos. + +2009-11-27 Rafael Avila de Espindola + + PR gold/11025 + * incremental-dump.cc (main): Use llu to print 64 bit values. + +2009-11-26 Per Øyvind Karlsen + H.J. Lu + + * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB) + $(LIBDL). + (incremental_dump_LDADD): Likewise. + * Makefile.in: Regenerated. + +2009-11-25 Doug Kwan + + Revert: + + 2009-11-25 Doug Kwan + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + PR gold/10930 + * testsuite/plugin_test.c: Include "config.h". + +2009-11-09 Doug Kwan + + * 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 + + 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 + + PR 10876 + * defstd.cc (in_segment): Set only_if_ref true for "end". + +2009-11-06 Doug Kwan + + * 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 + + * 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 + + PR 10910 + * output.cc (Output_segment::add_output_section): Add missing + return statement. + +2009-11-04 Ian Lance Taylor + + 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 + + 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 + + * 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 + + 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 + + * 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 + + * options.h (class General_options): Add --warn_constructors. + +2009-11-03 Ian Lance Taylor + + 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 + + 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 + + * po/Make-in (.po.gmo): Don't generate .gmo files in source + tree. + +2009-10-30 Doug Kwan + + * arm.cc (Stub_addend_reader): Fix bug in previouls check-in. + +2009-10-30 Doug Kwan + + * 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 + + * 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 + + * arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr. + +2009-10-28 Ian Lance Taylor + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + 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 + + * 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 * gc.h (gc_process_relocs): Check if icf is enabled using new