X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gold%2FChangeLog;h=ea4390eeb8c525f1ce4b53ad0d1b26e2afa7519b;hb=39f3de7c43926181f8f2f57bfa17d4fe9e5748a0;hp=2c09a05efcf195a87216fd808770965884dc0ea7;hpb=54674d38930c7da1af518510fede6f700f5ca596;p=deliverable%2Fbinutils-gdb.git diff --git a/gold/ChangeLog b/gold/ChangeLog index 2c09a05efc..ea4390eeb8 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,1031 @@ +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 + forwarding symbols when computing symbol resolution info for plugins. + * plugin.h (Plugin_manager::symtab): New method. + (Pluginobj::get_symbol_resolution_info): Add symtab parameter. + +2015-02-03 Cary Coutant + Peter Collingbourne + + PR gold/15660 + * archive.cc (Thin_archive_object_unlocker): New class. + (Archive::include_member): Unlock external members of thin archives. + * testsuite/Makefile.am (plugin_test_1): Rename .syms files. + (plugin_test_2): Likewise. + (plugin_test_3): Likewise. + (plugin_test_4): Likewise. + (plugin_test_5): Likewise. + (plugin_test_6): Likewise. + (plugin_test_7): Likewise. + (plugin_test_8): Likewise. + (plugin_test_9): Likewise. + (plugin_test_10): Likewise. + (plugin_test_11): New test case. + * testsuite/Makefile.in: Regenerate. + * testsuite/plugin_test.c (claim_file_hook): Check for parallel .syms + file to decide whether to claim file. + (all_symbols_read_hook): Likewise. + * testsuite/plugin_test_1.sh: Adjust expected output. + * testsuite/plugin_test_2.sh: Likewise. + * testsuite/plugin_test_3.sh: Likewise. + * testsuite/plugin_test_6.sh: Likewise. + * testsuite/plugin_test_tls.sh: Likewise. + * testsuite/plugin_test_11.sh: New testcase. + +2015-02-03 Cary Coutant + + * descriptors.cc (Descriptors::open): Set artificially-low limit for + file descriptors when debugging enabled. Add debug output. + (Descriptors::release): Add debug output. + (Descriptors::close_some_descriptor): Likewise. + (Descriptors::close_all): Likewise. + * fileread.cc (File_read::lock): Likewise. + (File_read::unlock): Likewise. + +2015-02-02 Cary Coutant + + * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for + executable output file. + +2015-01-22 Han Shen + + * arm.cc (Target_arm::Target_arm): Add initialization for new members. + (Target_arm::do_plt_address_for_global): New method. + (Target_arm::do_plt_address_for_local): New method. + (Target_arm::rel_irelative_section): New method. + (Target_arm::make_data_plt): Add more parameters for plt ctor. + (Target_arm::do_make_data_plt): Add more parameters for plt ctor. + (Target_arm::Scan::symbol_needs_plt_entry): Add ifunc support. + (Target_arm::Scan::reloc_needs_plt_for_ifunc): Add ifunc support. + (Target_arm::Scan::check_non_pic): Add ifunc support. + (Target_arm::Scan::local): Add ifunc support. + (Target_arm::Scan::global): Add ifunc support. + (Target_arm::make_plt_section): New method. + (Target_arm::make_plt_entry): Change to call to make_plt_section. + (Target_arm::make_local_ifunc_plt_entry): New method. + (Target_arm::got_irelative_): New member. + (Target_arm::rel_irelative_): New member. + (Target_arm::got_section): Add creation for got_irelative_. + (Target_arm::rel_dyn_section): Add creation for rel_irelative_. + (Target_arm::Relocate::relocate): Properly set local ifunc address. + (Target_arm::do_dynsym_value): Properly set global ifunc address. + (Target_arm::scan_reloc_for_stub): Properly set global ifunc address. + (Output_data_plt_arm::IRelative_data): New type. + (Output_data_plt_arm::Output_data_plt_arm): Add more parameters. + (Output_data_plt_arm::add_entry): Add more parameters. + (Output_data_plt_arm::add_relocation): New method. + (Output_data_plt_arm::add_local_ifunc_entry): New method. + (Output_data_plt_arm::rel_irelative): New method. + (Output_data_plt_arm::entry_count): Modified. + (Output_data_plt_arm::address_for_global): New method. + (Output_data_plt_arm::address_for_local): New method. +gold/ + (Output_data_plt_arm::set_final_data_size): Add irelative_count_. + (Output_data_plt_arm::insert_irelative_data): New method. + (Output_data_plt_arm::irelative_rel_): New member. + (Output_data_plt_arm::got_): New member. + (Output_data_plt_arm::got_irelative_): New member. + (Output_data_plt_arm::irelative_count_): New member. + (Output_data_plt_arm::IRelative_data_vec): New typedef. + (Output_data_plt_arm::irelative_data_vec_): New member. + (Output_data_plt_arm::do_write): Write out irelative entries. + (Output_data_plt_arm_standard::Output_data_plt_arm_standard): Add + more parameters to ctor. + (Output_data_plt_arm_nacl::Output_data_plt_arm_nacl): Add + more parameters to ctor. + * output.h (Output_data_reloc::add_local_relative): New method. + * aarch64.cc (Output_data_plt_aarch64): Fixed typo in comment. + +2015-01-29 Alan Modra + + * powerpc.cc (Target_powerpc::Relocate::relocate): Correct GOT_TLSLD + and GOT_TLSGD to LE optimization. + +2015-01-28 Cary Coutant + + * x86_64.cc (Target_x86_64::Scan::global): Allow IE-to-LE optimization + for undef TLS symbols. + (Target_x86_64::Relocate::relocate_tls): Likewise. + (Target_x86_64::Relocate::tls_ie_to_le): Likewise. + +2015-01-25 Cary Coutant + + * output.cc (Output_segment::set_section_addresses): Fix calculation + of size of relro segment. + +2015-01-22 Alan Modra + + * powerpc.cc (Target_powerpc::Scan::local ): Correct + condition for need of ifunc plt entry. + (Target_powerpc::Scan::global ): Likewise. + +2015-01-14 Sasa Stankovic + + * mips.cc (reloc_high): Add r_sym. + (Mips_relocate_functions::relhi16): Add r_sym parameter. Pass r_sym to + reloc_high constructor. + (Mips_relocate_functions::relgot16_local): Likewise. + (Mips_relocate_functions::rello16): Add r_sym parameter. Use r_sym and + r_type to decide whether LO16 matches HI16. + (Target_mips::Relocate::relocate): Pass r_sym to calls to relhi16, + rello16 and relgot16_local. + +2015-01-09 Cary Coutant + + * layout.cc (Layout::set_segment_offsets): Don't align start of segment + unless alignment is larger than page size. + +2015-01-06 H.J. Lu + Cary Coutant + + PR gold/17729 + * configure.ac (DEFAULT_TARGET_X86_64): Don't set for x32. + (DEFAULT_TARGET_X32): Set for x32. + * x86_64.cc (cmp_insn_32): New. + (lea_r10_insn_32): Likewise. + (lea_r11_insn_32): Likewise. + (cmp_insn_64): Likewise. + (lea_r10_insn_64): Likewise. + (lea_r11_insn_64): Likewise. + (Target_x86_64::do_calls_non_split): Handle x32. + * testsuite/Makefile.am (check_SCRIPTS): Add split_x32.sh. + (check_DATA): Add split_x32 files. + (split_x32_[1234n].o): New targets. + (split_x32_[124]): New targets. + (split_x32_[1234r].stdout): New targets. + * testsuite/split_x32.sh: New file. + * testsuite/split_x32_1.s: Likewise. + * testsuite/split_x32_2.s: Likewise. + * testsuite/split_x32_3.s: Likewise. + * testsuite/split_x32_4.s: Likewise. + * testsuite/split_x32_n.s: Likewise. + * configure: Regenerated. + * testsuite/Makefile.in: Likewise. + +2015-01-06 H.J. Lu + + PR gold/17809 + * x86_64.cc (Target_x86_64::Relocate::tls_ie_to_le): Handle + x32. + +2015-01-02 Alan Modra + + * version.cc (print_version): Just print current year. + * dwp.cc (print_version): Likewise. + +2015-01-01 Alan Modra + + Update year range in copyright notice of all files. + +2014-12-25 Alan Modra + + * arm.cc (Target_arm::do_adjust_elf_header): Provide namespace on + new enums. + (Target_arm::merge_object_attributes, ): Likewise. + +2014-12-25 Thomas Preud'homme + + * arm.cc (Target_arm::do_adjust_elf_header): Set e_flags in ELF header + as hard float only when Tag_ABI_VFP_args is 1, using new enum value + AEABI_VFP_args_vfp to check that. + (Target_arm::merge_object_attributes): Handle new Tag_ABI_VFP_args + value and replace hardcoded values by enum values. + +2014-12-22 Cary Coutant + + * powerpc.cc (Target_powerpc::relocate): Fix overflow check. + +2014-12-20 H.J. Lu + + PR gold/14608 + * testsuite/debug_msg.cc (SometimesInlineFunction): Changed + to "return i * i * 3;". + +2014-12-16 Cary Coutant + + * mapfile.cc (Mapfile::print_input_section): Print uncompressed sizes. + (Mapfile::print_output_data): Use current_data_size() to avoid + assert for sections requiring postprocessing; if address is not valid, + print 0. + (Mapfile::print_output_section): Use current_data_size(); print note + that addresses and sizes are before compression. + +2014-12-14 H.J. Lu + + * aarch64.cc (AArch64_relocate_functions::maybe_apply_stub): + Cast current_group_size to unsigned long when reporting error. + +2014-12-10 Jing Yu + + * aarch64.cc (Target_aarch64): Add new variable stub_group_size_. + (AArch64_relocate_functions::maybe_apply_stub): Add new parameter. + Update error message. + (Target_aarch64::do_relax): Use absolute value of option + stub_group_size. Replace local variable with class member + stub_group_size_. + +2014-12-04 Alan Modra + + * powerpc.cc (Target_powerpc::Branch_info::make_stub): Ignore + addend of PLTREL24 reloc when not generating a plt stub. Make + max_branch_offset an "Address". + (Stub_table::can_reach_stub): Make max_branch_offset an "Address". + (Target_powerpc::Relocate::relocate): Likewise. + +2014-12-04 Alan Modra + + PR 17670 + * symtab.cc (Symbol::set_undefined): Remove assertion. + * powerpc.cc (Target_powerpc::symval_for_branch): Don't assert + on symbols defined in discarded sections, instead return false. + Rearrange params, update all callers. + (Target_powerpc::Branch_info::make_stub): Don't make stubs for + branches to syms in discarded sections. + (Global_symbol_visitor_opd::operator()): Set discarded opd syms + undefined and flag as discarded. + (Target_powerpc::Relocate::relocate): Localize variable. + +2014-12-03 H.J. Lu + + PR gold/17675 + * testsuite/Makefile.am (pie_copyrelocs_test_CXXFLAGS): New. + * testsuite/Makefile.in: Regenerated. + +2014-12-03 Alan Modra + + PR 17566 + * powerpc.cc (Target_powerpc::Scan::local): Use add_local_section + when adding dynamic relocations against section symbols. + +2014-12-01 Dimitry Ivanov + + * layout.cc (Layout::finish_dynamic_section): When '-z global' + is specified set DF_1_GLOBAL in DT_FLAGS_1 flags. + * options.h (General_options): New -z option (global). + +2014-12-01 Cary Coutant + + PR gold/17578 + * layout.cc (Layout::layout_gnu_stack): Don't warn when -z execstack + is given. + (Layout::create_executable_stack_info): Warn when -z noexecstack is + given but some inputs require executable stack. + +2014-11-26 Cary Coutant + + * layout.cc (gdb_sections): Keep .debug_gdb_scripts and + .debug_str_offsets; strip .debug_gnu_pubnames and + .debug_gnu_pubtypes. + (lines_only_debug_sections): Strip all four new sections. + +2014-11-26 Jing Yu + + * aarch64.cc (Relocate::tls_desc_gd_to_ie): Set ldr target + register to be x0 when to relax TLSDESC_LD64_LO12. + +2014-11-26 Alan Modra + + * powerpc.cc (struct Stub_table_owner): New. + (Powerpc_relobj): Rename stub_table_ to stub_table_index_, an + unsigned int vector. Update all references. + (powerpc_relobj::set_stub_table): Take an unsigned int param + rather than a Stub_table. Update callers. + (Powerpc_relobj::clear_stub_table): New function. + (Target_powerpc): Add relax_failed_, relax_fail_count_ and + stub_group_size_ vars. + (Target_powerpc::new_stub_table): Delete. + (max_branch_delta): New function, extracted from.. + (Target_powerpc::Relocate::relocate): ..here.. + (Target_powerpc::Branch_info::make_stub): ..and here. Return + status on whether stub created successfully. + (Stub_control::Stub_control): Add "no_size_errors" param. Move + default sizing to.. + (Target_powerpc::do_relax): ..here. Init stub_group_size_ and + reduce on relax failure. + (Target_powerpc::group_sections): Add "no_size_errors" param. + Use stub_group_size_. Set up group info in a temp vector, + before building Stub_table vector. Account for input sections + possibly already converted to relaxed sections. + (Stub_table::init): Delete. Merge into.. + (Stub_table::Stub_table): ..here. + (Stub_table::can_reach_stub): New function. + (Stub_table::add_plt_call_entry): Add "from" parameter and + return true iff stub could be reached. + (Stub_table::add_long_branch_entry): Similarly. Add "r_type" + param too. + (Stub_table::clear_stubs): Add "all" param. + +2014-11-26 Alan Modra + + * powerpc.cc (Stub_control::set_output_and_owner): New function. + (Target_powerpc::group_sections): Use it. + +2014-11-25 Cary Coutant + + * binary.cc (Binary_to_elf::sized_convert): Add size to _start symbol. + (Binary_to_elf::write_symbol): Add st_size parameter. + * binary.h (Binary_to_elf::write_symbol): Add st_size parameter. + +2014-11-25 Cary Coutant + + PR gold/17639 + * object.cc (Sized_relobj_file): Initialize is_deferred_layout_. + (Sized_relobj_file::do_layout): Handle deferred sections properly + during GC pass 1. Don't add reloc sections to deferred list twice. + * object.h (Sized_relobj_file::is_deferred_layout): New function. + (Sized_relobj_file::is_deferred_layout_): New data member. + +2014-11-21 H.J. Lu + + PR gold/17619 + * x86_64.cc (Output_data_plt_x86_64_standard::do_fill_plt_entry): + Check PC-relative offset overflow in PLT entry. + +2014-11-21 Alan Modra + + * powerpc.cc (Target_powerpc::Relocate::relocate): Correct test + for undefined weaks. + +2014-11-20 Alan Modra + + * powerpc.cc (Stub_control::Stub_control): Init stub14_group_size_ + from --stub-group-size parameter divided by 1024. + (Powerpc_relocate_functions::rela, rela_ua): Add fieldsize + template parameter. Update all uses. + (Target_powerpc::Relocate::relocate): Rename has_plt_value to + has_stub_value. Set for long branches. Don't report overflow for + branch to undefined weak symbols. Print info message on + overflowing branch to stub. + +2014-11-20 Alan Modra + + * powerpc.cc (Target_powerpc::do_relax): Add __go_go to thread_starters. + +2014-11-13 H.J. Lu + + * x86_64.cc (Target_x86_64::Scan::global): Don't make PLT + entry for R_X86_64_GOTPLT64. + (Target_x86_64::Relocate::relocate): Update comments for + R_X86_64_GOTPLT64. + +2014-11-06 Evgeniy Dushistov + + * plugin.cc: use lock to searialize calls of Plugin_manager::claim_file + * plugin.h: add lock definition + +2014-10-29 Han Shen + Jing Yu + + * aarch64-reloc.def: Add LD_PREL_LO12, ADR_PREL_LO21, + TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC, TLSLD_MOVW_DTPREL_G1, + TLSLD_MOVW_DTPREL_G0_NC. Change property of TLS relocations to + Symbol::TLS_REF. + * aarch64.cc (Target_aarch64::do_can_check_for_function_pointers): New + method. + (Target_aarch64::reloc_needs_plt_for_ifunc): New method. + (Target_aarch64::tls_ld_to_le): New method. + (Target_aarch64::aarch64_info): Enable can_icf_inline_merge_sections + for 64bit targets. + (Output_data_plt_aarch64::irelative_rel_): New data member. + (Output_data_plt_aarch64::add_entry): Add irelative entries to plt. + (Output_data_plt_aarch64::add_local_ifunc_entry): New method. + (Output_data_plt_aarch64::add_relocation): New method. + (Output_data_plt_aarch64::do_write): Add gold_assert on got_irelative + offset. Add got_irelative size to got size. + (AArch64_relocate_functions): Typedef AArch64_valtype. Replace long + type string with the new typename. + (AArch64_relocate_functions::update_adr): Replace parameter x with + immed. + (AArch64_relocate_functions::update_movnz): Correct wrong val mask. + (AArch64_relocate_functions::reloc_common): New method. + (AArch64_relocate_funcsions::rela_general): Extract common part out + into reloc_common method. + (AArch64_relocate_functions::rela_general): Likewise. + (AArch64_relocate_functions::pcrela_general): Likewise. + (AArch64_relocate_functions::adr): New method. + (AArch64_relocate_functions::adrp): Calculate immed before calling + update_adr. + (AArch64_relocate_functions::adrp): Likewise. + (AArch64_relocate_functions::movnz): Cast x to SignedW type when + comparing x to 0. Calculate immed from ~x when x < 0. + (Target_aarch64::optimize_tls_reloc): Add new cases for + TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC, TLSLD_MOVW_DTPREL_G1, + TLSLD_MOVW_DTPREL_G0_NC. + (Target_aarch64::possible_function_pointer_reloc): Implement this + method. + (Target_aarch64::Scan::local_reloc_may_be_function_pointer): Update + comment. + (Target_aarch64::Scan::local): Add codes to handle STT_GNU_IFUNC + symbol. Add cases for TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC, + TLSLD_MOVW_DTPREL_G1, TLSLD_MOVW_DTPREL_G0_NC. + (Target_aarch64::Scan::global): Add codes to handle STT_GNU_IFUNC + symbol. Add cases for TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC, + TLSLD_MOVW_DTPREL_G1, TLSLD_MOVW_DTPREL_G0_NC. + (Target_aarch64::make_plt_entry): Call add_entry with two more + parameters. + (Target_aarch64::make_local_ifunc_plt_entry): New method. + (Target_aarch64::Relocate::relocate): Add cases for LD_PREL_LO19, + ADR_PREL_LO21, TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC, + TLSLD_MOVW_DTPREL_G1, TLSLD_MOVW_DTPREL_G0_NC. + (Target_aarch64::Relocate::relocate_tls): Add cases for + TLSLD_ADR_PAGE21, TLSLD_ADD_LO12_NC, TLSLD_MOVW_DTPREL_G1, + TLSLD_MOVW_DTPREL_G0_NC. + * testsuite/icf_safe_so_test.cc: Correct test comment. + * testsuite/icf_safe_test.sh: Add AArch64 arch. + +2014-10-22 Alan Modra + + * powerpc.cc (do_relax): Add gcc-4.9 libgomp functions to + thread_starter. + +2014-10-18 Andreas Schwab + + * configure.tgt (targ_extra_obj) [aarch64*-*]: Define. + +2014-10-17 Cary Coutant + + * aarch64.cc (AArch64_relocate_functions::maybe_apply_stub): + Add "typename" keyword. + +2014-10-15 Han Shen + Jing Yu + + Patch for gold aarch64 backend to support relaxation. + * aarch64-reloc.def: Change format. + * aarch64.cc (class Reloc_stub): New class. + (class Stub_table): New class. + (class AArch64_relobj): New class. + (class AArch64_input_section): New class. + (class AArch64_output_section): New class. + (Target_aarch64::new_stub_table): New method. + (Target_aarch64::new_aarch64_input_section): New method. + (Target_aarch64::find_aarch64_input_section): New method. + (Target_aarch64::scan_section_for_stubs): New method. + (Target_aarch64::scan_reloc_section_for_stubs): New method. + (Target_aarch64::relocate_stub): New method. + (Target_aarch64::current_target): New method. + (Target_aarch64::do_make_elf_object): New method. + (Target_aarch64::do_may_relax): New method. + (Target_aarch64::do_relax): New method. + (Target_aarch64::group_sections): New method. + (Target_aarch64::scan_reloc_for_stub): New method. + (Target_aarch64::do_make_output_section): New method. + (Target_aarch64::stub_tables_): New data member. + (Target_aarch64::aarch64_input_section_map_): New data member. + (AArch64_relocate_functions::maybe_apply_stub): New method. + +2014-09-30 Cary Coutant + + PR gold/17432 + * resolve.cc (Symbol_table::resolve): Fix local shadowing error. + +2014-09-30 Kito Cheng + + PR gold/13597 + * layout.cc (Layout::create_dynamic_symtab): Build gnu-style + hash table before sysv-style hash table. + +2014-09-29 Sriraman Tallam + + * options.h (--pic-executable): Add negative to alias to -no-pie. + +2014-09-26 Cary Coutant + + PR gold/16773 + * object.cc (Sized_relobj_file): Compute value of section symbols + for TLS sections the same as TLS symbols. + +2014-09-25 Cary Coutant + + PR gold/17432 + * resolve.cc (Symbol_table::resolve): Override common placeholder + symbols, but adjust sizes. + * symtab.cc (Symbol_table::add_from_object): Don't add placeholder + symbols to common lists. + +2014-09-24 Alan Modra + + * po/POTFILES.in: Regenerate. + +2014-09-23 Taiju Tsuiki + Cary Coutant + + PR gold/14860 + * gold.cc (queue_final_tasks): Add Write_sections_task as a blocker + on input_sections_blocker. + * layout.cc (Write_sections_task::locks): Unblock + input_sections_blocker_. + * layout.h (Write_sections_task::Write_sections_task): Add + input_sections_blocker. + * testsuite/Makefile.am (exception_x86_64_bnd_test): Add gcctestdir/ld + to DEPENDENCIES. + * testsuite/Makefile.in: Regenerate. + +2014-09-18 Rafael Ávila de Espíndola + + * testsuite/Makefile.am (plugin_test_10): New test. + * testsuite/Makefile.in: Regenerate + * testsuite/plugin_common_test_2.c (c1): Align to 8. + * testsuite/plugin_test_10.sh: New file. + +2014-09-17 Rafael Ávila de Espíndola + + * plugin.cc (Sized_pluginobj::do_add_symbols): Ignore isym->size. + * resolve.cc (Symbol_table::resolve): Don't override common symbols + during the replacement phase. + +2014-09-17 Han Shen + Jing Yu + + * aarch64-reloc.def: Add TLSGD_ADR_PAGE21, TLSGD_ADD_LO12_NC, + TLSDESC_ADR_PAGE21, TLSDESC_LD64_LO12, TLSDESC_ADD_LO12, TLSDESC_CALL. + * aarch64.cc (Target_aarch64): Add data members + got_irelative_, got_tlsdesc_, rela_irelative_, got_mod_index_offset_, + tlsdesc_reloc_info_, tls_base_symbol_defined_. Initialize them in + constructor. + (Target_aarch64::do_reloc_symbol_index): New method. + (Target_aarch64::do_reloc_addend): New method. + (Target_aarch64::add_tlsdesc_info): New method. + (Target_aarch64::do_dynsym_value): New method. + (Target_aarch64::do_make_data_plt): Add new parameters: got, + got_irelative. Pass them to Output_data_plt_aarch64_standard. + (Target_aarch64::make_data_plt): Add new parameters: got, + got_irelative. Pass them to do_make_data_plt. + (Target_aarch64::Relocate): Add skip_call_tls_get_addr_ variable. + (Target_aarch64::Relocate:tls_gd_to_le): New method. + (Target_aarch64::Relocate:tls_ie_to_le): New method. + (Target_aarch64::Relocate:tls_desc_gd_to_le): New method. + (Target_aarch64::Relocate:tls_desc_gd_to_ie): New method. + (Target_aarch64::got_tlsdesc_section): New method. + (Target_aarch64::make_local_ifunc_plt_entry): New method. + (Target_aarch64::define_tls_base_symbol): New method. + (Target_aarch64::reserve_tlsdesc_entries): New method. + (Target_aarch64::got_mod_index_entry): New method. + (Target_aarch64::rela_tlsdesc_section): New method. + (Target_aarch64::rela_irelative_section): New method. + (Target_aarch64::Tlsdesc_info): New struct. + (Target_aarch64::got_section): Create .got.plt space for IRELATIVE + relocations and tlsdesc relocations. + (Target_aarch64::optimize_tls_reloc): Implement method. + (Output_data_plt_aarch64): Add member variables: tlsdesc_rel_, got_, + got_irelative_, irelative_count_, tlsdesc_got_offset_. Initialize them + in constructor. + (Output_data_plt_aarch64::reserve_tlsdesc_entry): New method. + (Output_data_plt_aarch64::has_tlsdesc_entry): New method. + (Output_data_plt_aarch64::get_tlsdesc_got_offset): New method. + (Output_data_plt_aarch64::get_tlsdesc_plt_offset): New method. + (Output_data_plt_aarch64::rela_tlsdesc): New method. + (Output_data_plt_aarch64::rela_irelative): New method. + (Output_data_plt_aarch64::entry_count): Count IRELATIVE relocations. + (Output_data_plt_aarch64::first_plt_entry_offset): Add const attribute. + (Output_data_plt_aarch64::get_plt_tlsdesc_entry_size): New method. + (Output_data_plt_aarch64::fill_tlsdesc_entry): New method. + (Output_data_plt_aarch64::do_get_plt_tlsdesc_entry_size): New method. + (Output_data_plt_aarch64::do_fill_tlsdesc_entry): New method. + (Output_data_plt_aarch64_standard): New member variables: + plt_tlsdesc_entry_size, tlsdesc_plt_entry. + (Output_data_plt_aarch64_standard::Output_data_plt_aarch64_standard): + New parameter: got, got_irelative. + (Output_data_plt_aarch64_standard::do_get_plt_entry_size): New method. + (Output_data_plt_aarch64_standard::do_fill_tlsdesc_entry): New method. + (Output_data_plt_aarch64::do_write): Replace got_address with + gotplt_address. Add irelative_count_ to count. Write tlsdesc entry. + (AArch64_relocate_functions::update_movnz): New method. + (AArch64_relocate_functions): Correct format. + (AArch64_relocate_functions::movnz): New method. + (Target_aarch64::Scan::local): Correct format. Move r_sym, got to + before the switch. Add new cases to switch. + Check ie_to_le relaxation on tlsie relocations. Add code handling + tlsgd tlsdesc cases. + (Target_aarch64::Scan::global): Move arp to front. Do copy_reloc when + needed. Add new cases to switch. Insert dynamic RELATIVE relocation + when needed. Add code handling tlsgd, tlsie, tlsdesc cases. + Call reloc_name_in_error_message to print unsupported reloc. + (Target_aarch64::make_plt_section): Pass got_ and got_irelative_ to + make_data_plt. + (Target_aarch64::do_finalize_sections): Emit relocs to save COPY + relocs. Fill in some more dynamic tags. + (Target_aarch64::Relocate::relocate): Handle tlsgd, tlsdesc relocs. + Skip call tls_get_addr when tlsgd is relaxed. + (Target_aarch64::Relocate::relocate_tls): Correct format. Add code + handling tlsgd, tlsdesc relocs, and tls gd->le, ie->le, tlsdesc->le, + tlsdesc->ie relaxation. + +2014-09-03 Sasa Stankovic + + * mips.cc (Target_mips_nacl): New class. + (Target_selector_mips_nacl): New class. + (target_selector_mips32): Rename from target_selector_mips32be and use + Target_selector_mips_nacl instead of Target_selector_mips. + (target_selector_mips32el): Rename from target_selector_mips32 and use + Target_selector_mips_nacl instead of Target_selector_mips. + (target_selector_mips64): Rename from target_selector_mips64be and use + Target_selector_mips_nacl instead of Target_selector_mips. + (target_selector_mips64el): Rename from target_selector_mips64 and use + Target_selector_mips_nacl instead of Target_selector_mips. + (Target_mips::mips_info): Add const attribute. + 2014-09-02 Cary Coutant * dwp.cc (Sized_relobj_dwo::do_section_name): Add const attribute. @@ -16006,7 +17034,7 @@ * Added source code to GNU binutils. -Copyright (C) 2008-2014 Free Software Foundation, Inc. +Copyright (C) 2008-2015 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright