X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gold%2FChangeLog;h=45daaa573a028f8b49e59d05181338872a5ab353;hb=cd78ea777c35c497fcc0f20d162789296dc0a44d;hp=a7deb7730f19e2805858fd687f295ac41050db46;hpb=b66d1c52ac4537484353797ce8d791c0552b3839;p=deliverable%2Fbinutils-gdb.git diff --git a/gold/ChangeLog b/gold/ChangeLog index a7deb7730f..45daaa573a 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,1004 @@ +2015-07-22 H.J. Lu + + PR gold/18628 + * testsuite/ifuncdep2.c (global): Change protected to hidden. + * testsuite/ifuncmod1.c (global): Likewise. + * testsuite/ifuncmod5.c (global): Likewise. + +2015-07-22 Alan Modra + + * aarch64.cc (try_fix_erratum_843419_optimized): Warning fix. + +2015-07-21 Cary Coutant + + PR gold/18548 + * symtab.cc (Symbol_table::do_define_in_output_data): Check for + forced local symbol even when oldsym != NULL. + (Symbol_table::do_define_in_output_segment): Likewise. + (Symbol_table::do_define_as_constant): Likewise. + +2015-07-21 Cary Coutant + + PR gold/18698 + * archive.cc (Library_base::should_include_member): Don't use entry + point for relocatable links, or if target is not yet valid. + * parameters.cc (Parameters::entry): Check target_valid(). + +2015-07-20 Han Shen + + Optimize erratum 843419 fix. + + * aarch64.cc (AArch64_insn_utilities::is_adr): New method. + (AArch64_insn_utilities::aarch64_adr_encode_imm): New method. + (AArch64_insn_utilities::aarch64_adrp_decode_imm): New method. + (E843419_stub): New sub-class of Erratum_stub. + (AArch64_relobj::try_fix_erratum_843419_optimized): New method. + (AArch64_relobj::section_needs_reloc_stub_scanning): Try optimized fix. + (AArch64_relobj::create_erratum_stub): Add 1 argument. + (Target_aarch64::scan_erratum_843419_span): Pass in adrp insn offset. + +2015-07-20 Han Shen + + Fix arm elf header flags wrt hardfp bit. + + * arm.cc (Target_arm::do_adjust_elf_header): Set flags into view. + +2015-07-20 H.J. Lu + + PR gold/18689 + * layout.cc (Layout::layout): Clear the SHF_COMPRESSED flag bit + from input group section for relocatable link. + * testsuite/Makefile.am (check_SCRIPTS): Add pr18689.sh. + (check_DATA): Add pr18689.stdout. + (MOSTLYCLEANFILES): Add pr18689a.o pr18689b.o. + (pr18689.stdout): New rule. + (pr18689a.o): Likewise. + (pr18689b.o): Likewise. + (pr18689.o): Likewise. + * testsuite/pr18689.c: New file. + * testsuite/pr18689.sh: Likewise. + * testsuite/Makefile.in: Regenerated. + +2015-07-20 Yiran Wang + Cary Coutant + + PR gold/15574 + * resolve.cc (Symbol_table): Remove warning about references + from shared objects to hidden symbols. + * testsuite/Makefile.am (hidden_test): Add hidden_test.syms. + * testsuite/Makefile.in: Regenerate. + * testsuite/hidden_test.sh: Check dynamic symbol table; update + expected error messages. + +2015-07-14 H.J. Lu + + * compressed_output.cc (Output_compressed_section::set_final_data_size): + Make --compress-debug-sections=zlib the same as + --compress-debug-sections=zlib-gabi. + * testsuite/Makefile.am (flagstest_compress_debug_sections.check): + Expect ".debug_.*" with the SHF_COMPRESSED bit, instead of + ".zdebug_". + * testsuite/Makefile.in: Regenerated. + +2015-07-12 H.J. Lu + + PR gold/18322 + * compressed_output.cc (zlib_compress): Add argument for + compression header size. Set header size to compression header + size if it isn't 0. Don't write out the zlib header here. + (Output_compressed_section::set_final_data_size): Support + zlib-gnu and zlib-gabi compressions. Pass compression header + size to zlib_compress and write out compression header. Set + the SHF_COMPRESSED bit for zlib-gabi compression. Otherwise + clear the SHF_COMPRESSED bit + * options.h (compress_debug_sections): Add zlib-gnu and + zlib-gabi. + * output.h (Output_section::set_flags): New. + * testsuite/Makefile.am (check_PROGRAMS): Add + flagstest_compress_debug_sections_none, + flagstest_compress_debug_sections_gnu and + flagstest_compress_debug_sections_gabi. + (check_DATA): Add flagstest_compress_debug_sections_none.stdout. + flagstest_compress_debug_sections.stdout, + flagstest_compress_debug_sections.cmp, + flagstest_compress_debug_sections.check, + flagstest_compress_debug_sections_gnu.stdout, + flagstest_compress_debug_sections_gnu.cmp, + flagstest_compress_debug_sections_gnu.check, + flagstest_compress_debug_sections_gabi.stdout, + flagstest_compress_debug_sections_gabi.cmp and + flagstest_compress_debug_sections_gabi.check. + (flagstest_compress_debug_sections_none): New. + (flagstest_compress_debug_sections_none.stdout): Likewise. + (flagstest_compress_debug_sections.stdout): Likewise. + (flagstest_compress_debug_sections.check): Likewise. + (flagstest_compress_debug_sections.cmp): Likewise. + (flagstest_compress_debug_sections_gnu): Likewise. + (flagstest_compress_debug_sections_gnu.stdout): Likewise. + (flagstest_compress_debug_sections_gnu.check): Likewise. + (flagstest_compress_debug_sections_gnu.cmp): Likewise. + (flagstest_compress_debug_sections_gabi): Likewise. + (flagstest_compress_debug_sections_gabi.stdout): Likewise. + (flagstest_compress_debug_sections_gnu.check): Likewise. + (flagstest_compress_debug_sections_gnu.cmp): Likewise. + * testsuite/Makefile.in: Regenerated. + +2015-07-12 H.J. Lu + + PR gold/18321 + * compressed_output.h (decompress_input_section): Add arguments + for ELF class, big endian and sh_flags. + * compressed_output.cc (decompress_input_section): Likewise. + Support the SHF_COMPRESSED section. + * dynobj.h (Dynobj): Add elfsize and is_big_endian member + functions. + * plugin.h (Pluginobj): Likewise. + * layout.cc (Layout::get_output_section_flags): Also clear the + SHF_COMPRESSED bit. + * object.h (Compressed_section_info): Add flag to store sh_flags. + (Object): Add pure virtual elfsize and is_big_endian member + functions. + * object.cc (need_decompressed_section): Don't skip the ".zdebug" + prefix here. + (build_compressed_section_map): Check SHF_COMPRESSED for + uncompressed size. Store sh_flags in Compressed_section_info. + Pass size, big_endian and sh_flags to decompress_input_section. + Skip the ".debug"/".zdebug" prefix when passing section name to + need_decompressed_section. + (Sized_relobj_file::do_find_special_section): + Don't check ".zdebug_*" sections. + (Object::decompressed_section_contents): Pass ELF class, big + endian and sh_flags to decompress_input_section. + * reloc.cc (Sized_relobj_file::write_sections): + Likewise. + * testsuite/Makefile.am (check_DATA): Add + debug_msg_cdebug_gabi.err and gdb_index_test_2_gabi.stdout. + (MOSTLYCLEANFILES): Add debug_msg_cdebug_gabi.err and + gdb_index_test_2_gabi.stdout. + (debug_msg_cdebug_gabi.o): New. + (odr_violation1_cdebug_gabi.o): Likewise. + (odr_violation2_cdebug_gabi.o): Likewise. + (debug_msg_cdebug_gabi.err): Likewise. + (check_SCRIPTS): Add gdb_index_test_2_gabi.sh. + (gdb_index_test_cdebug_gabi.o): Likewise. + (gdb_index_test_2_gabi): Likewise. + (gdb_index_test_2_gabi.stdout): Likewise. + * testsuite/gdb_index_test_2_gabi.sh: New file. + * testsuite/Makefile.in: Regenerated. + +2015-07-09 Han Shen + + Use "gold_info" instead of "gold_warning" for erratum fix. + + * aarch64.cc (Target_aarch64::scan_erratum_843419_span): Use + 'gold_info'. + (Target_aarch64::scan_erratum_835769_span): USe 'gold_info'. + +2015-07-09 Han Shen + + Drop missing symbol warning for arm/aarch64. + + * aarch64.cc (AArch64_relobj::scan_errata): Drop missing symbol warning. + * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Drop missing + symbol warning. + +2015-07-07 Han Shen + + Make gold aarch64 accept long form of mapping symbols. + + * aarch64.cc (AArch64_relobj::do_count_local_symbols): Make legal + of mapping symbols. + +2015-06-29 Doug Kwan + + * testsuite/arm_bl_out_of_range.s: Align stub table so that it appears + at address expected by test. + * testsuite/arm_cortex_a8_b.s: Ditto. + * testsuite/arm_cortex_a8_b_cond.s: Ditto. + * testsuite/arm_cortex_a8_bl.s: Ditto. + * testsuite/arm_cortex_a8_blx.s: Ditto. + * testsuite/arm_cortex_a8_local.s: Ditto. + * testsuite/arm_fix_v4bx.s: Ditto. + * testsuite/arm_unaligned_reloc.s: Ditto. + * testsuite/thumb_bl_out_of_range.s: Ditto. + * testsuite/thumb_bl_out_of_range_local.s: Ditto. + * testsuite/thumb_blx_out_of_range.s: Ditto. + +2015-06-29 Han Shen + + Patch for erratum 843419 internal error. + + * aarch64.cc (Erratum_stub::Insn_utilities): New typedef. + (Erratum_stub::update_erratum_insn): New method. + (Stub_table::relocate_stubs): Modified to place relocated insn. + (AArch64_relobj::fix_errata): Modified gold_assert. + +2015-06-12 Han Shen + + Fix erratum 835769. + + * aarch64.cc (AArch64_insn_utilities::BYTES_PER_INSN): Move + defintion outside class definition. + (AArch64_insn_utilities::AARCH64_ZR): New static constant. + (AArch64_insn_utilities::aarch64_op31): New member. + (AArch64_insn_utilities::aarch64_ra): New member. + (AArch64_insn_utilities::aarch64_mac): New member. + (AArch64_insn_utilities::aarch64_mlxl): New member. + (ST_E_835769): New global enum member. + (Stub_table::relocate_stubs): Add 835769 handler. + (Stub_template_repertoire::Stub_template_repertoire): Install new + stub type. + (AArch64_relobj::scan_errata): This func is renamed from + scan_erratum_843419. + (AArch64_relobj::do_count_local_symbols): Add 835769 handler. + (AArch64_relobj::do_relocate_sections): Add 835769 handler. + (AArch64_relobj::scan_sections_for_stubs): Add 835769 handler. + (Target_aarch64::scan_erratum_835769_span): New method. + (Target_aarch64::create_erratum_stub): New method. + (Target_aarch64::is_erratum_835769_sequence): New method. + (Target_aarch64::scan_erratum_843419_sequence): Move part of the + code into create_erratum_stub. + * options.h (fix_cortex_a53_835769): New option. + +2015-06-11 Cary Coutant + + * aarch64.cc (Erratum_stub::STUB_ADDR_ALIGN): Move initialization + outside class body. + (Reloc_stub::STUB_ADDR_ALIGN): Likewise. + +2015-06-11 Cary Coutant + + PR gold/17731 + * layout.cc (corresponding_uncompressed_section_name): New function. + (Layout::choose_output_section): Call it. + * layout.h (corresponding_uncompressed_section_name): New function. + * script-sections.cc (Input_section_info::set_section_name): Check + for compressed debug section (.zdebug style). + +2015-06-11 Jing Yu + + * testsuite/Makefile.am: Add -O0 for script_test_12 test. + * testsuite/Makefile.in: Regenerate. + +2015-06-11 Davide Italiano + + * gold.h (is_cident): Correct typo. + +2015-06-10 Han Shen + Patch for erratum-843419 (2 of 2 - fix erratum occurrences). + + Now fixing for 843419 is fully functional. + + The first part of the erratum fix CL is here - + https://sourceware.org/ml/binutils/2015-04/msg00229.html + + * aarch64.cc(global enum): New constants representing stub types. + (Stub_template): New POD struct. + (Stub_template_repertoire): New class. + (Stub_base): New class. + (Erratum_stub): New class. + (Reloc_stub): Refactored to be a subclass of Stub_base. + (Reloc_stub::Stub_type): Removed. + (Reloc_stub::offset): Moved to Stub_base. + (Reloc_stub::set_offset): Moved to Stub_base. + (Reloc_stub::destination_address): Moved to Stub_base. + (Reloc_stub::set_destination_address): Moved to Stub_base. + (Reloc_stub::reset_destination_address): Moved to Stub_base. + (Reloc_stub::stub_type): Renamed and moved to Stub_base. + (Reloc_stub::stub_size): Renamed and moved to Stub_base. + (Reloc_stub::stub_insns): Renamed and moved to Stub_base. + (Reloc_stub::write): Moved to Stub_base. + (Reloc_stub::invalid_offset): Moved to Stub_base. + (Reloc_stub::invalid_address): Moved to Stub_base. + (Reloc_stub::stub_type_): Renamed and moved to Stub_base. + (Reloc_stub::stub_insns_): Moved to Stub_base. + (Reloc_stub::offset_): Moved to Stub_base. + (Reloc_stub::destination_address_): Moved to Stub_base. + (Stub_table::The_aarch64_relobj): New typedef. + (Stub_table::The_erratum_stub): New typedef. + (Stub_table::The_erratum_stub_less): New typedef. + (Stub_table::The_erratum_stub_set): New typedef. + (Stub_table::The_erratum_stub_set_iter): New typedef. + (Stub_table::empty): Added emptiness testing for erratum stubs. + (Stub_table::add_erratum_stub): New method to add an erratum stub. + (Stub_table::find_erratum_stub): New method. + (Stub_table::find_erratum_stubs_for_input_section): New method. + (Stub_table::erratum_stub_address): New method. + (Stub_table::update_date_size_changed_p): Modified to handle erratum stubs. + (Stub_table::do_addralign): Modified to handle erratum stubs. + (Stub_table::erratum_stubs_): New member. + (Stub_table::erratum_stub_size_): New member. + (Stub_table::relocate_stubs): Modified to handle erratum stubs. + (Stub_table::do_write): Modified to handle erratum stubs. + (AArch64_relobj::The_erratum_stub): New typedef. + (AArch64_relobj::Erratum_stub_set_iter): New typedef. + (AArch64_relobj::fix_errata): New method. + (Target_aarch64::The_reloc_stub_type): Removed. + (Target_aarch64::The_erratum_stub): New typede. + (AArch64_relocate_functions::construct_b): New method. + +2015-06-08 Nick Clifton + + * po/fr.po: New French Translation. + +2015-06-07 Cary Coutant + + PR gold/18288 + * resolve.cc (symbol_to_bits): Remove type parameter; adjust all + callers. Don't use STT_COMMON to check for common symbols. + (Symbol_table::resolve): Warn if relocatable object has STT_COMMON + symbol that's not in a common section. + * symtab.h (Symbol::is_common): Don't use STT_COMMON to check for + common symbols. + +2015-06-04 Cary Coutant + + PR gold/18200 + * Makefile.am (diststuff): Add target. + * Makefile.in: Regenerate. + +2015-06-04 Cary Coutant + + PR gold/17498 + * object.cc (Sized_relobj_file::do_count_local_symbols): Discard + temporary locals in merge sections. + * options.cc (General_options::parse_discard_all): New method. + (General_options::parse_discard_locals): New method. + (General_options::parse_discard_none): New method. + (General_options::General_options): Initialize discard_locals_. + * options.h (--discard-all): Convert to special option. + (--discard-locals): Likewise. + (--discard-none): New option. + (General_options::discard_all): New method. + (General_options::discard_locals): New method. + (General_options::discard_sec_merge): New method. + (General_options::Discard_locals): New enum. + (General_options::discard_locals_): New data member. + +2015-06-03 Cary Coutant + + * script-sections.cc (Script_sections::Script_sections): Initialize + segments_created_. + (Script_sections::create_note_and_tls_segments): Set flag when + segments are created. + (Script_sections::expected_segment_count): Count PT_INTERP. + (Script_sections::attach_sections_using_phdrs_clause): Set flag when + segments are created. + * script-sections.h (Script_sections::segments_created_): New data + member. + +2015-06-03 Cary Coutant + + PR gold/15370 + * script-sections.cc + (Output_section_element_input::set_section_addresses): When there + are several patterns with no sort spec, put all sections in the same + bin. + * testsuite/Makefile.am (script_test_12): New testcase. + (script_test_12i): New testcase. + * testsuite/Makefile.in: Regenerate. + * testsuite/script_test_12.t: New test linker script. + * testsuite/script_test_12i.t: New test linker script. + * testsuite/script_test_12a.c: New test source file. + * testsuite/script_test_12b.c: New test source file. + +2015-06-02 Cary Coutant + + * nacl.h (Sniff_file): Switch parameters to get_view to get an + aligned view. + +2015-06-03 Cary Coutant + + PR gold/17819 + * gold.cc (queue_final_tasks): When --build-id=tree, queue a + separate task to schedule the build id computation. + * layout.cc (Hash_task::Hash_task): Remove build_id_blocker, + add Output_file and offset. + (Hash_task::run): Get and release the input views. + (Hash_task::is_runnable): Always return NULL (always runnable). + (Layout::queue_build_id_tasks): Remove. + (Layout::write_build_id): Add array_of_hashes and size_of_hashes + parameters; use them instead of class members. + (Build_id_task_runner::run): New function. + (Close_task_runner::run): Pass array_of_hashes and size_of_hashes + to write_build_id. + * layout.h (Layout::queue_build_id_tasks): Remove. + (Layout::write_build_id): Add array_of_hashes and size_of_hashes + parameters. + (Layout::array_of_hashes_): Remove. + (Layout::size_of_array_of_hashes_): Remove. + (Layout::input_view_): Remove. + (Build_id_task_runner): New class. + (Close_task_runner::Close_task_runner): Add array_of_hashes and + size_of_hashes parameters. + (Close_task_runner::array_of_hashes_): New data member. + (Close_task_runner::size_of_hashes_): New data member. + * testsuite/Makefile.am + (flagstest_compress_debug_sections_and_build_id_tree): New test. + * testsuite/Makefile.in: Regenerate. + +2015-06-01 Rafael Ávila de Espíndola + + * merge.cc (get_input_merge_map): Update for data structure change. + (get_or_make_input_merge_map): Update for data structure change. + * merge.h (Object_merge_map): Use a std::vector> instead of + a std::map. Remove first_shnum_, first_map_, second_shnum_, second_map_. + +2015-05-16 Alan Modra + + * reloc.cc (Sized_relobj_file::find_functions): Use function_location. + * powerpc.cc (Target_powerpc::do_calls_non_split): New function. + (addi_12_1, addis_2_12, addis_12_1, cmpld_7_12_0): New constants. + (lis_0): Rename from lis_0_0. + +2015-04-29 Cary Coutant + Rafael Ávila de Espíndola + + * gc.h (Garbage_collection::is_section_garbage): Change Object* + to Relobj*. + (Garbage_collection::add_reference): Likewise. + (Garbage_collection::gc_process_relocs): Likewise. Don't push + object/shndx pair onto *secvec for dynamic objects. Don't follow + relocations pointing to dynamic objects for GC. + * icf.cc (Icf::find_identical_sections): Change Object* to Relobj*. + (Icf::unfold_section): Likewise. + (Icf::is_section_folded): Likewise. + (Icf::get_folded_section): Likewise. + * icf.h: (Icf::get_folded_section): Likewise. + (Icf::unfold_section): Likewise. + (Icf::is_section_folded): Likewise. + (Icf::section_has_function_pointers): Likewise. + (Icf::set_section_has_function_pointers): Likewise. + * object.h (Section_id): Likewise. + (Const_section_id): Likewise. + * output.cc (Output_section::update_section_layout): Likewise. + * output.h: (Output_section_lookup_maps::find_relaxed_input_section): + Likewise. + * plugin.cc (update_section_order): Likewise. + (unique_segment_for_sections): Likewise. + * powerpc.cc (Powerpc_relobj::add_reference): Likewise. + (Target_powerpc::do_gc_add_reference): Likewise. + (Target_powerpc::gc_process_relocs): Likewise. + (Target_powerpc::do_gc_add_reference): Likewise. + * symtab.cc (Symbol_table::is_section_folded): Likewise. + (Symbol_table::gc_mark_symbol): Likewise. + * symtab.h: (Symbol_table::is_section_folded): Likewise. + * target.h: (Sized_target::gc_add_reference): Likewise. + (Sized_target::do_gc_add_reference): Likewise. + +2015-04-29 Nick Clifton + + * po/fi.po: Updated Finnish translation. + +2015-04-28 Alan Modra + + * powerpc.cc (Target_powerpc::do_dynsym_value): Use Address rather + than unsigned int for find_global_entry result temp. Compare + against invalid_address. + (Target_powerpc::do_plt_address_for_global): Likewise. + (Target_powerpc::Relocate::relocate): Likewise. Don't assert + on plt call stub existence for debug info. Do assert for plt + and global entry stub existence if an alloc section. + +2015-04-28 Alan Modra + + * powerpc.cc (Target_powerpc::Relocate::relocate): Don't assert + on missing global entry stub due to bogus debug info. + +2015-04-27 Han Shen + + * options.h (--fix-cortex-a53-843419): Rename option. + * aarch64.cc (AArch64_relobj::do_count_local_symbols): Use renamed + option. + (AArch64_relobj::scan_sections_for_stubs): Use renamed option. + +2015-04-27 Rafael Ávila de Espíndola + + PR gold/18327 + * output.cc (Output_section::is_input_address_mapped): Assume a missing + entry is mapped. + * testsuite/Makefile.am: Add the eh_test test. + * testsuite/Makefile.in: Regenerate. + * testsuite/eh_test_a.cc: New test. + * testsuite/eh_test_b.cc: New test. + +2015-04-23 Sriraman Tallam + + * options.h (--weak-unresolved-symbols): New option. + * symtab.cc (Symbol_table::sized_write_globals): Change symbol + binding to weak with new option. + * symtab.h (is_weak_undefined): Check for new option. + (is_strong_undefined): Check for new option. + * testsuite/Makefile.am (weak_unresolved_symbols_test): New test. + * testsuite/Makefile.in: Regenerate. + * testsuite/weak_unresolved_symbols_test.cc: New file. + +2015-04-20 Ian Coolidge + + * symtab.cc (Symbol::should_add_dynsym_entry): Return true for + GNU_UNIQUE. + +2015-04-17 Rafael Ávila de Espíndola + + * gc.cc (Garbage_collection::do_transitive_closure): Use back and + push_back. + * gc.h (Garbage_collection): Use a std::vector instead of a std::queue. + * object.cc (Sized_relobj_file::do_layout): Use push_back. + * powerpc.cc (process_gc_mark): Use push_back. + (Target_powerpc::do_gc_mark_symbol): Use push_back. + * symtab.cc (Symbol_table::gc_mark_symbol): Use push_back. + +2015-04-16 Han Shen + + * aarch64.cc (AArch64_insn_utilities): New utility class. + (AArch64_relobj::Mapping_symbol_position): New struct. + (AArch64_relobj::Mapping_symbol_info): New typedef. + (AArch64_relobj::do_count_local_symbols): New function overriding + parent's implementation. + (AArch64_relobj::mapping_symbol_info_): New member + (AArch64_relobj::scan_erratum_843419): New method. + (Target_aarch64::scan_erratum_843419_span): New method. + (Target_aarch64::is_erratum_843419_sequence): New method. + * options.h (fix_cortex_a53): New option. + +2015-04-09 Cary Coutant + + * symtab.cc (Symbol::final_value_is_known): Check for TLS symbol + in a PIE link. + * testsuite/Makefile.am (tls_pie_test.sh): New test. + * testsuite/Makefile.in: Regenerate. + * testsuite/tls_pie_test.sh: New. + +2015-04-09 Cary Coutant + + * debug.h (DEBUG_LOCATION): New. + (DEBUG_ALL): Include DEBUG_LOCATION. + (debug_string_to_enum): Add DEBUG_LOCATION. + * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Fix debug + output to print correct context. + (Sized_dwarf_line_info::do_addr2line): Add debug output. Return + up to 4 more locations at the beginning of the function. + * symtab.cc (Symbol_table::detect_odr_violations): Get canonical + result before sorting list of line numbers. + * testsuite/debug_msg.sh: Allow range of line numbers for + canonical results on optimized code. + +2015-04-07 HC Yen + + Add AArch32 support for gold linker. + gold/ + * arm.cc: Add V8 arch combine table. + +2015-04-06 Rafael Ávila de Espíndola + + * aarch64.cc (do_reloc_addend): Fix signature to match the parent one. + +2015-04-06 Rafael Ávila de Espíndola + + * gc.cc (Garbage_collection::do_transitive_closure): Avoid a call + to find by using the return value of insert. + +2015-04-06 Rafael Ávila de Espíndola + + * gc.cc (Garbage_collection::do_transitive_closure): Avoid a copy + constructor call. + +2015-04-06 Ilya Tocar + + PR gold/17641 + * x86_64.cc (Target_x86_64::can_convert_mov_to_lea): New. + (Target_x86_64::Scan::local): Don't create GOT entry, when we + can convert mov to lea. + (Target_x86_64::Scan::global): Ditto. + (Target_x86_64::Relocate::relocate): Convert mov foo@GOTPCREL(%rip), + %reg to lea foo(%rip), %reg if possible. + * testsuite/Makefile.am (x86_64_mov_to_lea): New test. + * testsuite/x86_64_mov_to_lea1.s: New. + * testsuite/x86_64_mov_to_lea2.s: Ditto. + * testsuite/x86_64_mov_to_lea3.s: Ditto. + * testsuite/x86_64_mov_to_lea4.s: Ditto. + * testsuite/x86_64_mov_to_lea.sh: Ditto. + +2015-04-02 H.J. Lu + + * configure: Regenerated. + +2015-04-01 Ilya Tocar + + PR gold/17640 + * i386.cc (Target_i386::can_convert_mov_to_lea): New. + (Target_i386::Scan::local): Don't create GOT entry, when we + can convert GOT to GOTOFF. + (Target_i386::Scan::global): Ditto. + (Target_i386::Relocate::relocate): Convert mov foo@GOT(%reg), %reg to + lea foo@GOTOFF(%reg), %reg if possible. + * testsuite/Makefile.am (i386_mov_to_lea): New test. + * testsuite/i386_mov_to_lea1.s: New. + * testsuite/i386_mov_to_lea2.s: Ditto. + * testsuite/i386_mov_to_lea3.s: Ditto. + * testsuite/i386_mov_to_lea4.s: Ditto. + * testsuite/i386_mov_to_lea5.s: Ditto. + * testsuite/i386_mov_to_lea.sh: Ditto. + +2015-04-01 H.J. Lu + + * Makefile.am (ZLIB): New. + (ZLIBINC): Likewise. + (AM_CFLAGS): Add $(ZLIBINC). + (AM_CXXFLAGS): Likewise. + (ldadd_varldadd_var): Add $(ZLIB). + (incremental_dump_LDADD): Likewise. + (dwp_LDADD): Likewise. + * compressed_output.cc: Don't check HAVE_ZLIB_H to include + . + (zlib_compress): Don't check HAVE_ZLIB_H. + (zlib_decompress): Likewise. + * options.h (compress_debug_sections): Likewise. + * configure.ac (AM_CONDITIONAL): Removed. + * testsuite/Makefile.am (ZLIB): New. + (LDADD): Add $(ZLIB). + Don't check HAVE_ZLIB. + * Makefile.in: Regenerated. + * config.in: Likewise. + * configure: Likewise. + * testsuite/Makefile.in: Likewise. + +2015-03-30 Jing Yu + + * aarch64-reloc.def: New TLSLD_ADD_DTPREL_HI12, + TLSLD_ADD_DTPREL_LO12_NC. + * aarch64.cc (Target_aarch64::define_tls_base_symbol): Always let + _TLS_MODULE_BASE_ point to the start of tls segment. + (Target_aarch64::optimize_tls_reloc): Add cases for + R_AARCH64_TLSLD_ADD_DTPREL_HI12 and + R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC. + (Target_aarch64::Scan::local): Likewise. + (Target_aarch64::Scan::global): Likewise. + (Target_aarch64::Relocate::relocate): Likewise. + (Target_aarch64::Relocate::relocate_tls): Likewise. And remove + subtracting tls segment size from symbol value for TLSLD_*_DTPREL + relocations. + +2015-03-27 Rafael Ávila de Espíndola + + * merge.cc (Object_merge_map::add_mapping): call + Object_merge_map::Input_merge_map::add_mapping. + (Object_merge_map::Input_merge_map::add_mapping): New. + (Output_merge_data::do_add_input_section): Call + get_or_make_input_merge_map before a loop. + (Output_merge_string::finalize_merged_data): Call + get_or_make_input_merge_map before a loop. + * merge.h (Object_merge_map): Make Input_merge_map public. + * object.cc (Relobj::add_merge_mapping): Use get_or_create_merge_map. + (Relobj::get_or_create_merge_map): New. + * object.h (Relobj::get_or_create_merge_map): New. + +2015-03-24 Alan Modra + + PR 18147 + * powerpc.cc (Target_powerpc::Relocate::relocate): Don't report + relocation errors for branches to strong undefined symbols. + +2015-03-23 Rafael Ávila de Espíndola + + * merge.cc (Object_merge_map::get_input_merge_map): Make it const. + (Object_merge_map::is_merge_section_for): Remove. + (Object_merge_map::find_merge_section): New. + * merge.h (Object_merge_map::is_merge_section_for): Remove. + (Object_merge_map::find_merge_section): New. + (Object_merge_map::get_input_merge_map): Add a const version. + * object.cc (Relobj::is_merge_section_for): Remove. + (Relobj::find_merge_section): New. + * object.h (Relobj::is_merge_section_for): Remove. + (Relobj::find_merge_section): New. + * output.cc + (Output_section::Input_section::is_merge_section_for): Remove. + (Output_section::add_merge_input_section): Don't call + add_merge_input_section. + (Output_section::find_merge_section): Return const. Use + object->find_merge_section. + (Output_section::build_lookup_maps): Don't build a map for + merge sections. + (Output_section::is_input_address_mapped): Return false if + section is not found. + (Output_section::find_starting_output_address): Use + find_merge_section instead of is_merge_section_for. + (Output_section::add_script_input_section): Don't build a map for + merge sections. + * output.h (Output_section_lookup_maps::merge_sections_by_id_): Remove. + (Output_section_lookup_maps::find_merge_section): Remove. + (Output_section_lookup_maps::add_merge_input_section) Remove. + (Output_section::find_merge_section): Return const. + +2015-03-22 Cary Coutant + + PR gold/18106 + * i386.cc (Target_i386::Relocate::tls_gd_to_ie): Fix support for + non-SIB form of lea, with nop after the call. + +2015-03-21 Cary Coutant + + PR gold/14217 + * output.cc (Output_segment::is_first_section_relro): Don't ignore + .tdata section. + (Output_segment::set_section_addresses): Don't align size of relro + segment for .tbss. + +2015-03-21 Cary Coutant + + PR gold/18010 + * stringpool.cc (Stringpool_template): Don't optimize if section + alignment is greater than sizeof(char). + +2015-03-21 Cary Coutant + + PR gold/18048 + * script-c.h (script_include_directive): Add first_token parameter. + * script.cc (script_include_directive): Add first_token parameter, and + pass it to read_script_file. + * yyscript.y (PARSING_SECTIONS_BLOCK, PARSING_SECTION_CMDS) + (PARSING_MEMORY_DEF): New tokens. + (top): Add new productions for INCLUDE files. + (file_cmd): Replace file_or_sections_cmd with copy of its productions. + Pass PARSING_LINKER_SCRIPT to script_include_directive. + (section_block_cmd): Likewise; pass PARSING_SECTIONS_BLOCK. + (section_cmd): Pass PARSING_SECTION_CMDS. + (file_or_sections_cmd): Remove. + (memory_def): Pass PARSING_MEMORY_DEF. + * testsuite/Makefile.am (memory_test_2): New test. + * testsuite/Makefile.in: Regenerate. + * testsuite/memory_test_inc.t: New script file. + * testsuite/memory_test_inc_1.t.src: New script file. + * testsuite/memory_test_inc_2.t.src: New script file. + * testsuite/memory_test_inc_3.t.src: New script file. + +2015-03-21 Cary Coutant + + * dwp.cc (Sized_relobj_dwo::do_section_contents): Delete. + (Sized_relobj_dwo::setup): Build compressed section map. + (Sized_relobj_dwo::do_decompressed_section_contents): Delete. + * dynobj.cc (Sized_dynobj::base_read_symbols): Build compressed + section map. + * object.cc (Sized_relobj_file::Sized_relobj_file): Remove + compressed_sections_ field. + (build_compressed_section_map): Take Object instead of + Sized_relobj_file parameter; add decompress_if_needed parameter. + (Sized_relobj_file::do_find_special_sections): Store compressed + section map in parent Object. + (Sized_relobj_file::do_decompressed_section_contents): Move + implementation to Object::decompressed_section_contents. + (Sized_relobj_file::do_discard_decompressed_sections): Move + implementation to Object::discard_decompressed_sections. + * object.h (build_compressed_section_map): Declare. + (Object::Object): Add compressed_sections_ field. + (Object::section_is_compressed): Move implementation here. + (Object::decompressed_section_contents): De-virtualize. + (Object::discard_decompressed_sections): De-virtualize. + (Object::do_section_is_compressed): Delete. + (Object::do_decompressed_section_contents): Delete. + (Object::set_compressed_sections): New method. + (Object::compressed_sections): New method. + (Object::compressed_sections_): New data member. + (Compressed_section_info, Compressed_section_map): Move to top of file. + (Sized_relobj_file::do_section_is_compressed): Delete. + (Sized_relobj_file::do_decompressed_section_contents): Delete. + (Sized_relobj_file::do_discard_decompressed_sections): Delete. + (Sized_relobj_file::compressed_sections_): Move to Object class. + +2015-03-21 Cary Coutant + + PR gold/18152 + * gold.cc (queue_middle_tasks): Finalize .eh_frame after laying out + deferred objects. + +2015-03-11 Cary Coutant + + * options.cc (General_options::finalize): Don't allow -z relro + with incremental linking. + * testsuite/Makefile.am (incremental_test): Add -z norelro. + (incremental_test_2): Likewise. + (incremental_test_3): Likewise. + (incremental_test_4): Likewise. + (incremental_test_5): Likewise. + (incremental_test_6): Likewise. + (incremental_copy_test): Likewise. + (incremental_common_test_1): Likewise. + (incremental_comdat_test_1): Likewise. + * testsuite/Makefile.in: Regenerate. + +2015-03-09 Cary Coutant + + PR gold/14675 + * ehframe.cc (Eh_frame::add_ehframe_input_section): Change return type; + return enum indicating whether .eh_frame section is empty, optimizable, + unrecognized, or an end marker. Adjust explicit instantiations. + * ehframe.h (Eh_frame::Eh_frame_section_disposition): New enum type. + (Eh_frame::add_ehframe_input_section): Change return type. + * gold.cc (queue_middle_tasks): Call Layout::finalize_eh_frame_section. + * layout.cc (Layout::layout_eh_frame): Don't add optimized sections + to the .eh_frame output section until we see the end marker. + (Layout::finalize_eh_frame_section): New. + * layout.h: (Layout::finalize_eh_frame_section): New. + +2015-03-05 H.J. Lu + + * output.cc (Relobj::initialize_input_to_output_map): + Remove typename on elfcpp::Elf_types::Elf_Addr. + +2015-03-04 Cary Coutant + + * parameters.cc (Parameters::set_target_once): Call + Target::select_as_default_target just once from here... + (set_parameters_target): ...instead of from here. + +2015-03-04 Rafael Ávila de Espíndola + + * ehframe.cc (Cie::set_output_offset): Pass in and use a + Output_section_data instead of a Merge_map. + (Eh_frame::Eh_frame): Don't initialize merge_map_. + (Eh_frame::read_cie): Use add_merge_mapping instead of + Merge_map::add_mapping. + (Eh_frame::read_fde): Ditto. + (Eh_frame::set_final_data_size): Use this instead of this->merge_map_. + (Eh_frame::do_output_offset): Use merge_output_offset istead of + merge_map_->get_output_offset. + (Eh_frame::do_is_merge_section_for): Delete. + * ehframe.h (Fde::add_mapping): Pass in and use a Output_section_data + instead of a Merge_map. + (Cie::set_output_offset): Pass in a Output_section_data instead of a + Merge_map. + (Eh_frame::do_is_merge_section_for): Delete. + (Eh_frame::merge_map_): Delete. + * merge.cc (Object_merge_map::get_or_make_input_merge_map): Pass in + and use a Output_section_data instead of a Merge_map. + (Object_merge_map::add_mapping): Ditto. + (Object_merge_map::get_output_offset): Remove the merge_map argument. + (Object_merge_map::is_merge_section_for): Pass in and use a + Output_section_data instead of a Merge_map. + (Merge_map): Delete. + (Output_merge_base::do_output_offset): Use merge_output_offset instead + of merge_map_.get_output_offset. + (Output_merge_base::do_is_merge_section_for): Delete. + (Output_merge_data::do_add_input_section): Use + object->add_merge_mapping instead of add_mapping. + (Output_merge_string::finalize_merged_data): Ditto. + * merge.h (Merge_map): Delete forward declaration. + (Object_merge_map::add_mapping): Pass in and use a Output_section_data + instead of a Merge_map. + (Object_merge_map::get_output_offset): Remove the merge_map argument. + (Object_merge_map::is_merge_section_for): Pass in and use a + Output_section_data instead of a Merge_map. + (Input_merge_map::Object_merge_map::merge_map): Replace with + output_data. + (Object_merge_map::get_or_make_input_merge_map): Pass in and use a + Output_section_data instead of a Merge_map. + (Merge_map): Delete. + (Output_merge_base::Output_merge_base): Don't initialize merge_map_. + (Output_merge_base::do_is_merge_section_for): Delete. + (Output_merge_base::add_mapping): Delete. + (Output_merge_base::merge_map_): Delete. + * object.cc (Relobj::initialize_input_to_output_map): New. + (Relobj::initialize_input_to_output_map): New. + (Relobj::merge_output_offset): New. + (Relobj::is_merge_section_for): New. + (Relobj::initialize_input_to_output_map): Instantiate for 32 and 64 + bits. + * object.h (Relobj::merge_map): Delete. + (initialize_input_to_output_map): New. + (set_merge_map): Delete. + (add_merge_mapping): New. + (merge_output_offset): New. + (is_merge_section_for): New. + * output.cc (Output_section::Input_section::is_merge_section_for): + Use object->is_merge_section_for. + * output.h (Output_section_data::is_merge_section_for): Delete. + (Output_section_data::do_is_merge_section_for): Delete. + * reloc.cc (Merged_symbol_value::initialize_input_to_output_map): + Use object->initialize_input_to_output_map. + (Merged_symbol_value::value_from_output_section): Use + object->merge_output_offset. + +2015-03-02 Peter Collingbourne + Cary Coutant + + * output.cc (Output_section::add_merge_input_section): Do not + attempt to merge sections with an entsize of 0. + +2015-03-02 Khem Raj + + * attributes.h (class Output_attributes_section_data ): Add + do_print_to_mapfile function. + +2015-02-24 Alan Modra + + PR 18010 + * powerpc.cc (Powerpc_relocate_functions::addr16_ds): Always + complain if value is not a multiple of four. + (Target_powerpc::Relocate::relocate): Correct handling of + R_POWERPC_GOT_TPREL16 and R_POWERPC_GOT_TPREL16_LO for ppc64. + +2015-02-21 H.J. Lu + + * configure.ac (default_size): Set to 32 for x32. + * configure: Regenerated. + +2015-02-18 Alan Modra + + PR 17954 + * powerpc.cc (Global_symbol_visitor_opd::operator()): Set default + visibility. + +2015-02-17 Rafael Ávila de Espíndola + + * gc.h (Garbage_collection::add_reference): Don't use find. + +2015-02-17 Rafael Ávila de Espíndola + + * object.cc (write_local_symbols): avoid std::vector copy. + +2015-02-17 Rafael Ávila de Espíndola + + * merge.cc (get_output_offset): Use upper_bound instead of lower_bound. + +2015-02-09 Mark Wielaard + + * gdb-index.cc (Gdb_index_info_reader::visit_top_die): Recognize + DW_LANG_Fortran03 and DW_LANG_Fortran08. + +2015-02-16 Cary Coutant + + PR gold/13577 + PR gold/16992 + * layout.cc (Layout::finish_dynamic_section): Don't set DT_SYMBOLIC or + DF_SYMBOLIC if --dynamic-list option is used. + * options.cc (General_options::finalize): --dynamic-list is not + mutually exclusive with -Bsymbolic. + * symtab.h (Symbol::is_preemptible): Don't exclude dynamic symbols not + listed in --dynamic-list. + * testsuite/Makefile.am (dynamic_list_lib2.so): Add + -Bsymbolic-functions. + * testsuite/Makefile.in: Regenerate. + +2015-02-16 Cary Coutant + + PR gold/17971 + * incremental.cc: Remove redundant include of "output.h". + +2015-02-12 Jing Yu + + * aarch64-reloc.def (TLSLE_MOVW_TPREL_G2, TLSLE_MOVW_TPREL_G1, + TLSLE_MOVW_TPREL_G1_NC, TLSLE_MOVW_TPREL_G0, TLSLE_MOVW_TPREL_G0_NC,): + New relocation. + * aarch64.cc (Target_aarch64::Scan::local): Add cases for new + TLSLE_MOVW_* relocations. + (Target_aarch64::Scan::global): Likewise. + (Target_aarch64::Relocate::relocate): Likewise. + (Target_aarch64::Relocate::relocate_tls): Add cases and handlings + for new TLSLE_MOVW_* relocations. + +2015-02-11 Will Newton + + PR gold/13321 + * arm.cc (Target_arm::make_plt_section): Create an ARM + state mapping symbol at the start of the PLT. + +2015-02-09 H.J. Lu + + * testsuite/Makefile.am (two_file_shared_2_pic_1_test_DEPENDENCIES): + Replace two_file_shared_2.so with two_file_shared_1.so. + * testsuite/Makefile.in: Regenerated. + +2015-02-09 Alan Modra + + * testsuite/Makefile.am (MOSTLYCLEANFILES): Add libweak_undef_2.a, + plugin_test_thin.a and defsym_test. + * testsuite/Makefile.in: Regenerate. + +2015-02-04 Rafael Ávila de Espíndola + + * merge.cc (do_add_input_section): Combine loop epilogue into main loop + body. + 2015-02-04 Peter Collingbourne * plugin.cc (Pluginobj::get_symbol_resolution_info): Resolve