X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gold%2FChangeLog;h=8ff80480f764db60f576bdb70e82b8e532c7ada4;hb=c2c7840a42aaab8354bb1997d141149d30316603;hp=e929226fe1197f4fc8a20cc0f13df1f1107b3f38;hpb=6c21fce1ccdbd1f73152e6dbd90cfe04738c54fe;p=deliverable%2Fbinutils-gdb.git diff --git a/gold/ChangeLog b/gold/ChangeLog index e929226fe1..8ff80480f7 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,5 +1,1122 @@ +2012-01-24 Cary Coutant + + * int_encoding.cc (read_unsigned_LEB_128): Replaced with inline + definition and ... + (read_unsigned_LEB_128_x): ... this new function. + (read_signed_LEB_128): Replaced with inline definition and ... + (read_signed_LEB_128_x): ... this new function. + * int_encoding.h (read_unsigned_LEB_128_x): New function. + (read_unsigned_LEB_128): Add inline definition. + (read_signed_LEB_128_x): New function. + (read_signed_LEB_128): Add inline definition. + * testsuite/Makefile.am (leb128_unittest): New unit test. + * testsuite/Makefile.in: Regenerate. + * testsuite/leb128_unittest.cc: New unit test. + +2012-01-23 Ian Lance Taylor + + PR gold/13617 + * i386.cc (Target_i386::do_code_fill): When using a jmp + instruction, pad with nop instructions. + * x86_64.cc (Target_x86_64::do_code_fill): Likewise. + +2012-01-22 H.J. Lu + + * x86_64.cc (gc_process_relocs): Add typename on types used in + template. + (scan_relocs): Likewise. + (relocate_section): Likewise. + (apply_relocation): Likewise. + +2012-01-10 H.J. Lu + + * x86_64.cc (Scan::check_non_pic): Allow R_X86_64_32 for x32. + (Scan::local): Use R_X86_64_RELATIVE relocation for R_X86_64_32 + under x32. + +2012-01-09 H.J. Lu + + * x86_64.cc: Initial support for x32. + +2012-01-03 Cary Coutant + + * gold/incremental.cc (Sized_incremental_binary::do_process_got_plt): + Use abstract base class for GOT. + * gold/output.h (class Output_data_got_base): New abstract base class. + (class Output_data_got): Derive from new base class, adjust ctors. + (Output_data_got::reserve_slot): Make virtual; rename to + do_reserve_slot; Adjust callers. + * gold/target.h (Sized_target::init_got_plt_for_update): Return + pointer to abstract base class. + * gold/x86_64.cc (Target_x86_64::init_got_plt_for_update): Likewise. + +2011-12-18 Ian Lance Taylor + + * object.h (Relobj::local_symbol_value): New function. + (Relobj::local_plt_offset): New function. + (Relobj::local_has_got_offset): New function. + (Relobj::local_got_offset): New function. + (Relobj::set_local_got_offset): New function. + (Relobj::do_local_symbol_value): New pure virtual function. + (Relobj::do_local_plt_offset): Likewise. + (Relobj::do_local_has_got_offset): Likewise. + (Relobj::do_local_got_offset): Likewise. + (Relobj::do_set_local_got_offset): Likewise. + (Sized_relobj::do_local_has_got_offset): Rename from + local_has_got_offset. + (Sized_relobj::do_local_got_offset): Rename from local_got_offset. + (Sized_relobj::do_set_local_got_offset): Rename from + set_local_got_offset. + (Sized_relobj_file::do_local_plt_offset): Rename from + local_plt_offset. + (Sized_relobj_file::do_local_symbol_value): New function. + * object.cc (Sized_relobj_file::do_local_plt_offset): Rename from + local_plt_offset. + * output.cc (Output_data_got::Got_entry::write): Change object to + Relobj. Use local_symbol_value. + (Output_data_got::add_global_with_rel): Change rel_dyn to + Output_data_reloc_generic*. Use add_global_generic. + (Output_data_got::add_global_with_rela): Remove. Change all + callers to use add_global_with_rel. + (Output_data_got::add_global_pair_with_rel): Change rel_dyn to + Output_data_reloc_generic*. Use add_global_generic. + (Output_data_got::add_global_pair_with_rela): Remove. Change all + callers to use add_global_pair_with_rel. + (Output_data_got::add_local): Change object to Relobj*. + (Output_data_got::add_local_plt): Likewise. + (Output_data_got::add_local_with_rel): Change object to Relobj*, + change rel_dyn to Output_data_reloc_generic*. Use + add_local_generic. + (Output_data_got::add_local_with_rela): Remove. Change all + callers to use all_local_with_rel. + (Output_data_got::add_local_pair_with_rel): Change object to + Relobj*, change rel_dyn to Output_data_reloc_generic*. Use + add_output_section_generic. + (Output_data_got::add_local_pair_with_rela): Remove. Change all + callers to use add_local_pair_with_rel. + (Output_data_got::reserve_local): Change object to Relobj*. + * output.h: (class Output_data_reloc_generic): Add pure virtual + declarations for add_global_generic, add_local_generic, + add_output_section_generic. + (class Output_data_reloc) [SHT_REL, SHT_RELA]: Implement new + functions for Output_data_reloc_generic. Update declarations for + changes listed in output.cc. + (class Output_data_got): Change template parameter to got_size. + Don't define Rel_dyn or Rela_dyn. Update declarations per above. + * incremental.h (Sized_relobj_incr::do_local_symbol_value): New + function. + (Sized_relobj_incr::do_local_plt_offset): New function. + * copy-relocs.cc (Copy_relocs::Copy_reloc_entry::emit): Call + add_global_generic. + +2011-12-17 Cary Coutant + + * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Add casts. + * resolve.cc (Symbol_table::resolve): Likewise. + * i386.cc (Target_i386::do_code_fill): Use char constants for nop + arrays. + * x86_64.cc (Target_x86_64::do_code_fill): Likewise. + +2011-12-16 Ian Lance Taylor + + * output.h (Output_data_reloc_generic::add): Only call + add_dynamic_reloc if this is a dynamic reloc section. + +2011-12-15 H.J. Lu + + PR gold/13505 + * target-reloc.h (apply_relocation): Replace <64, false> with + . + +2011-11-25 Nick Clifton + + * po/it.po: New Italian translation. + +2011-11-17 Sterling Augustine + + * script.cc (script_include_directive): Implement. + (read_script_file): New local variables name and search_path. Update + comment. Call IS_ABSOLUTE_PATH and Dirsearch::find_file_in_dir_list. + * dirsearch.h (Dirsearch::find_file_in_dir_list): Declare new method. + * dirsearch.cc (Dirsearch::find_file_in_dir_list): Implement it. + +2011-11-11 Sterling Augustine + + * yyscript.y (section_cmd): Add support for INCLUDE directive. + (file_or_sections_cmd): Likewise. + +2011-11-11 Doug Kwan + + * arm.cc (Target_arm::do_make_elf_object): Allow executable also + if --just-symbols is given. + +2011-11-10 Doug Kwan + + PR gold/13362 + * arm.cc (Target_arm::Relocate::relocate_tls): Do unaligned accesses + when processing data relocs. + * reloc.h (Relocate_functions::rel_unaligned): New method. + (Relocate_functions::pcrel_unaligned): Ditto. + (Relocate_functions::rel32_unaligned): Ditto. + (Relocate_functions::pcrel32_unaligned): Ditto. + +2011-11-09 Doug Kwan + + PR gold/13362 + * arm.cc (Arm_scan_relocatable_relocs::Default_scan_relocatable_relocs): + Use unaligned 4-byte relocs for static 32-bit data as required by EABI. + * reloc.h (Relocatable_relocs::Reloc_strategy): New enum + RELOC_ADJUST_FOR_SECTION_4_UNALIGNED. + (Relocate_functions::rel_unaligned): New. + (Relocate_functions::rel32_unaligned): New. + * target-reloc.h (relocate_for_relocatable): Add code to handle + RELOC_ADJUST_FOR_SECTION_4_UNALIGNED. + * testsuite/Makefile.am (arm_unaligned_reloc_r.stdout, + arm_unaligned_reloc_r): New targets. + * testsuite/Makefile.in: Regenerate. + * arm_unaligned_reloc.sh: Check unaligned relocs in relocatable + linking. + +2011-11-02 Ian Lance Taylor + + * configure.ac: Add --with-lib-path option. Define LIB_PATH and + NATIVE_LINKER. + * Makefile.am (AM_CPPFLAGS): Define TOOLLIBDIR. + * options.cc (General_options::finalize): Use library search path + from configure script if specified. If not native and no sysroot, + only search TOOLLIBDIR. + * options.h (Search_directory::Search_directory): Change name to + const std::string&. + (General_options::add_to_library_path_with_sysroot): Change arg to + const std::string&. + * configure, Makefile.in, config.in: Rebuild. + +2011-11-02 Matthew Gretton-Dann + + * arm.cc (Target_arm::may_use_v5t_interworking): Check whether + we are working around the ARM1176 Erratum. + * options.h (General_options::fix_arm1176): Add option. + * testsuite/Makefile.am: Add testcases, and keep current ones + working. + * testsuite/Makefile.in: Regenerate. + * testsuite/arm_fix_1176.s: New file. + * testsuite/arm_fix_1176.sh: Likewise. + +2011-11-02 Matthew Gretton-Dann + + * arm.cc (Target_arm::Target_arm): Remove initialisation of + may_use_blx_. + (Target_arm::may_use_blx): Remove method. + (Target_arm::set_may_use_blx): Likewise. + (Target_arm::may_use_v4t_interworking): New method. + (Target_arm::may_use_v5t_interworking): Likewise. + (Target_arm::may_use_blx_): Remove member variable. + (Arm_relocate_functions::arm_branch_common): Check for v5T + interworking. + (Arm_relocate_functions::thumb_branch_common): Likewise. + (Reloc_stub::stub_type_for_reloc): Likewise. + (Target_arm::do_finalize_sections): Correct interworking checks. + * testsuite/Makefile.am: Add new tests. + * testsuite/Makefile.in: Regenerate. + * testsuite/arm_farcall_arm_arm.s: New test. + * testsuite/arm_farcall_arm_arm.sh: Likewise. + * testsuite/arm_farcall_arm_thumb.s: Likewise. + * testsuite/arm_farcall_arm_thumb.sh: Likewise. + * testsuite/arm_farcall_thumb_arm.s: Likewise. + * testsuite/arm_farcall_thumb_arm.sh: Likewise. + * testsuite/arm_farcall_thumb_thumb.s: Likewise. + * testsuite/arm_farcall_thumb_thumb.sh: Likewise. + +2011-10-31 Cary Coutant + + PR gold/13023 + * expression.cc (Expression::eval_with_dot): Add + is_section_dot_assignment parameter. + (Expression::eval_maybe_dot): Likewise. Adjust value when rhs is + absolute and assigning to dot within a section. + * script-sections.cc + (Output_section_element_assignment::set_section_addresses): Pass + dot_section to set_if_absolute. + (Output_section_element_dot_assignment::finalize_symbols): Pass TRUE + as is_section_dot_assignment flag to eval_with_dot. + (Output_section_element_dot_assignment::set_section_addresses): + Likewise. + * script.cc (Symbol_assignment::set_if_absolute): Add dot_section + parameter. Also set value if relative to dot_section; set the + symbol's output_section. + * script.h (Expression::eval_with_dot): Add is_section_dot_assignment + parameter. Adjust all callers. + (Expression::eval_maybe_dot): Likewise. + (Symbol_assignment::set_if_absolute): Add dot_section parameter. + Adjust all callers. + * testsuite/script_test_2.t: Test assignment of an absolute value + to dot within an output section element. + +2011-10-31 Cary Coutant + + * options.h (class General_options): Add --[no-]gnu-unique options. + * symtab.cc (Symbol_table::sized_write_globals): Convert + STB_GNU_UNIQUE to STB_GLOBAL if --no-gnu-unique. + +2011-10-31 Cary Coutant + + PR gold/13359 + * i386.cc (Target_i386::Relocate::relocate_tls): Remove + unnecessary assertion. + * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Likewise. + +2011-10-31 Sriraman Tallam + + * symtab.h (Symbol_table::gc_mark_symbol_for_shlib): Rename to + gc_mark_symbol. + * symtab.cc (Symbol_table::gc_mark_symbol_for_shlib): Rename to + gc_mark_symbol. + Change to just keep the section associated with symbol. + (Symbol_table::add_from_relobj): Mark symbols as not garbage when + they are externally visible and --export-dynamic is turned on. + (Symbol_table::gc_mark_dyn_syms): Call gc_mark_symbol. + +2011-10-19 Ian Lance Taylor + + PR gold/13163 + * script-sections.cc + (Output_section_element_dot_assignment::needs_output_section): New + function. + +2011-10-19 Ian Lance Taylor + + PR gold/13204 + * layout.cc (Layout::segment_precedes): Don't assert failure if a + --section-start option was seen. + * options.h (General_options::any_section_start): New function. + +2011-10-18 David S. Miller + + PR binutils/13301 + * sparc.cc (Target_sparc::Relocate::reloc_adjust_addr_): New + member to track relocation locations that have moved during TLS + reloc optimizations. + (Target_sparc::Relocate::Relocate): Initialize to NULL. + (Target_sparc::Relocate::relocate): Adjust view down by 4 + bytes if it matches reloc_adjust_addr_. + (Target_sparc::Relocate::relocate_tls): Always move the + __tls_get_addr call delay slot instruction forward 4 bytes when + performing relaxation. + +2011-10-18 Cary Coutant + + * output.cc (posix_fallocate): Return 0 on success, errno on failure. + (Output_file::map_no_anonymous): Check for non-zero + return code from posix_fallocate. + +2011-10-17 Cary Coutant + + PR gold/13245 + * plugin.cc (is_visible_from_outside): Check for symbols + referenced from dynamic objects. + * resolve.cc (Symbol_table::resolve): Don't count references + from dynamic objects as references from real ELF files. + * testsuite/plugin_test_2.sh: Adjust expected result. + +2011-10-17 Cary Coutant + + * gold.cc: Include timer.h. + (queue_middle_tasks): Stamp time. + (queue_final_tasks): Likewise. + * main.cc (main): Store timer in parameters. Print timers + for each pass. + * parameters.cc (Parameters::Parameters): Initialize timer_. + (Parameters::set_timer): New function. + (set_parameters_timer): New function. + * parameters.h (Parameters::set_timer): New function. + (Parameters::timer): New function. + (Parameters::timer_): New data member. + (set_parameters_timer): New function. + * timer.cc (Timer::stamp): New function. + (Timer::get_pass_time): New function. + * timer.h (Timer::stamp): New function. + (Timer::get_pass_time): New function. + (Timer::pass_times_): New data member. + +2011-10-17 Cary Coutant + + * readsyms.cc (Read_symbols::run): Don't queue an unblocker + task for members of lib groups. + +2011-10-17 Cary Coutant + + PR gold/13288 + * fileread.cc (File_read::find_view): Add assert. + (File_read::make_view): Move bounds check (replace with assert)... + (File_read::find_or_make_view): ... to here. + +2011-10-12 Cary Coutant + + * output.cc (Output_file::open_base_file): Handle case where + ::read returns less than requested size. + +2011-10-10 Cary Coutant + + * incremental.cc (Sized_relobj_incr::Sized_relobj_incr): + Initialize defined_count_. + (Sized_relobj_incr::do_add_symbols): Count defined symbols. + (Sized_relobj_incr::do_get_global_symbol_counts): Rewrite. + (Sized_incr_dynobj::Sized_incr_dynobj): Initialize defined_count_. + (Sized_incr_dynobj::do_add_symbols): Count defined symbols. + (Sized_incr_dynobj::do_get_global_symbol_counts): Rewrite. + * incremental.h (Sized_relobj_incr::defined_count_): New data + member. + (Sized_incr_dynobj::defined_count_): New data member. + * plugin.cc (Sized_pluginobj::do_get_global_symbol_counts): + Return zeroes instead of internal error. + +2011-10-10 Cary Coutant + + PR gold/13249 + * output.cc (Output_reloc::Output_reloc): Add use_plt_offset flag. + (Output_reloc::symbol_value): Return PLT offset if flag is set. + * output.h (class Output_reloc): Add use_plt_offset flag. + (Output_reloc::type_): Adjust size of bit field. + (Output_reloc::use_plt_offset_): New bit field. + (class Output_data_reloc): Adjust all calls to Output_reloc_type. + (Output_data_reloc::add_local_relative): (RELA only) Add use_plt_offset + flag. Adjust all callers. + * x86_64.cc (Target_x86_64::Scan::local): Check for IFUNC when + creating RELATIVE relocations. + +2011-10-10 Nick Clifton + + * po/es.po: Updated Spanish translation. + * po/fi.po: Updated Finnish translation. + +2011-10-03 Diego Novillo + + * options.cc (parse_uint): Fix dereference of RETVAL. + +2011-09-29 Sriraman Tallam + + * layout.h (section_order_map_): New member. + (get_section_order_map): New member function. + * output.cc (Output_section::add_input_section): Check for patterns + only when --section-ordering-file is specified. + * gold.cc (queue_middle_tasks): Delay updating order of sections till + output_sections have been formed. + * layout.cc (Layout_Layout): Initialize section_order_map_. + * plugin.cc (update_section_order): Store order in order_map. Do not + update the order. + * testsuite/Makefile.am: Add test case for plugin_final_layout. + * testsuite/Makefile.in: Regenerate. + * testsuite/plugin_section_order.c: New file. + * testsuite/plugin_final_layout.cc: New file. + * testsuite/plugin_final_layout.sh: New file. + +2011-09-29 Cary Coutant + + * incremental.cc (Sized_incremental_binary::do_process_got_plt): + Check for NULL. + * symtab.cc (Symbol_table::add_from_relobj): Ignore version + symbols during incremental update. + (Symbol_table::add_from_dynobj): Likewise. + +2011-09-27 Viktor Kutuzov + Ian Lance Taylor + + * symtab.cc (Symbol_table::define_special_symbol): Always + canonicalize version string. + +2011-09-26 Cary Coutant + + * gold.cc (queue_initial_tasks): Move option checks ... + * options.cc (General_options::finalize): ... to here. Disable + some options; make others fatal. + +2011-09-26 Cary Coutant + + gcc PR lto/47247 + * plugin.cc (get_symbols_v2): New function. + (Plugin::load): Add LDPT_GET_SYMBOLS_V2. + (is_referenced_from_outside): New function. + (Pluginobj::get_symbol_resolution_info): Add version parameter, return + LDPR_PREVAILING_DEF_IRONLY_EXP when using new version. + (get_symbols): Pass version parameter. + (get_symbols_v2): New function. + * plugin.h (Pluginobj::get_symbol_resolution_info): Add version + parameter. + * testsuite/plugin_test.c (get_symbols_v2): New static variable. + (onload): Add LDPT_GET_SYMBOLS_V2. + (all_symbols_read_hook): Use get_symbols_v2; check for + LDPR_PREVAILING_DEF_IRONLY_EXP. + * testsuite/plugin_test_3.sh: Update expected results. + +2011-09-23 Simon Baldwin + + * configure.ac: Add new --with-gold-ldadd and --with-gold-ldflags + configuration options. + * configure: Regenerate. + * Makefile.am: Handle GOLD_LDADD and GOLD_LDFLAGS. + * Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + +2011-09-19 Sriraman Tallam + + * plugin.h (should_defer_layout): Modify to check for any_claimed_. + +2011-09-19 Cary Coutant + + * incremental.cc (can_incremental_update): Fix typo in comment. + * incremental.h (can_incremental_update): Likewise. + +2011-09-18 Cary Coutant + + * incremental.cc (can_incremental_update): New function. + * incremental.h (can_incremental_update): New function. + * layout.cc (Layout::init_fixed_output_section): Call it. + (Layout::make_output_section): Don't allow patch space in .eh_frame. + * object.cc (Sized_relobj_file::do_layout): Call + can_incremental_update. + +2011-09-13 Cary Coutant + + * configure.ac: Check for glibc support for gnu_indirect_function + support with static linking, setting automake conditional + IFUNC_STATIC. + * Makefile.in: Regenerate. + * configure: Regenerate. + + * testsuite/Makefile.am (ifuncmain1static, ifuncmain2static) + (ifuncmain4static, ifuncmain5static, ifuncmain7static): Add check + for IFUNC_STATIC. + * testsuite/Makefile.in: Regenerate. + +2011-09-13 Cary Coutant + + * incremental.cc (Sized_relobj_incr::do_layout): Call + report_comdat_group for kept comdat sections. + * testsuite/Makefile.am (incremental_comdat_test_1): New test. + * testsuite/Makefile.in: Regenerate. + * testsuite/incr_comdat_test_1.cc: New source file. + * testsuite/incr_comdat_test_2_v1.cc: New source file. + * testsuite/incr_comdat_test_2_v2.cc: New source file. + * testsuite/incr_comdat_test_2_v3.cc: New source file. + +2011-09-13 Ian Lance Taylor + + * object.cc (Sized_relobj_file::do_layout): Remove unused local + variable external_symbols_offset. + +2011-09-12 Ian Lance Taylor + + * object.cc (Sized_relobj_file::do_layout): Remove assertion which + triggered if object has no symbols. + +2011-09-09 David S. Miller + + * output.cc (Output_fill_debug_info::do_write): Use Swap_unaligned. + (Output_fill_debug_line::do_write): Likewise. + +2011-08-29 Cary Coutant + + * output.cc: (Output_fill_debug_info::do_minimum_hole_size): Add + casts to match formatting specs. + (Output_fill_debug_line::do_minimum_hole_size): Likewise. + +2011-08-26 Cary Coutant + + * layout.cc (Free_list::allocate): Provide guarantee of minimum + remaining hole size when allocating. + (Layout::make_output_section): Set fill methods for debug sections. + * layout.h (Free_list::Free_list_node): Move from private to + public. + (Free_list::set_min_hole_size): New function. + (Free_list::begin, Free_list::end): New functions. + (Free_list::min_hole_): New data member. + * output.cc: Include dwarf.h. + (Output_fill_debug_info::do_minimum_hole_size): New function. + (Output_fill_debug_info::do_write): New function. + (Output_fill_debug_line::do_minimum_hole_size): New function. + (Output_fill_debug_line::do_write): New function. + (Output_section::Output_section): Initialize new data member. + (Output_section::set_final_data_size): Ensure patch space is larger + than minimum hole size. + (Output_section::do_write): Fill holes in debug sections. + * output.h (Output_fill): New class. + (Output_fill_debug_info): New class. + (Output_fill_debug_line): New class. + (Output_section::set_free_space_fill): New function. + (Output_section::free_space_fill_): New data member. + * testsuite/Makefile.am (incremental_test_3): Add + --incremental-patch option. + (incremental_test_4): Likewise. + (incremental_test_5): Likewise. + (incremental_test_6): Likewise. + (incremental_copy_test): Likewise. + (incremental_common_test_1): Likewise. + * testsuite/Makefile.in: Regenerate. + +2011-08-26 Nick Clifton + + * po/es.po: Updated Spanish translation. + +2011-08-01 Cary Coutant + + * gold/testsuite/Makefile.am (justsyms_exec): New testcase. + * gold/testsuite/Makefile.in: Regenerate. + * gold/testsuite/justsyms_exec.c: New source file. + * gold/testsuite/justsyms_lib.c: New source file. + +2011-08-01 Cary Coutant + + * layout.cc (Layout::set_segment_offsets): Don't realign text + segment if -Ttext was specified. + * object.cc (Sized_relobj_file::Sized_relobj_file): Store the ELF + file type. + * object.h (Sized_relobj_file::e_type): New function. + (Sized_relobj_file::e_type_): New data member. + * symtab.cc (Symbol_table::add_from_relobj): Don't add section + base address for ET_EXEC files. + * target.cc (Target::do_make_elf_object_implementation): Allow + ET_EXEC files with --just-symbols option. + +2011-07-28 Cary Coutant + + * workqueue-internal.h (Workqueue_threader::should_cancel_thread): + Add thread_number parameter. + (Workqueue_threader_threadpool::should_cancel_thread): Likewise. + * workqueue-threads.cc + (Workqueue_threader_threadpool::should_cancel_thread): Cancel + current thread if its thread number is greater than desired thread + count. + * workqueue.cc (Workqueue_threader_single::should_cancel_thread): + Add thread_number parameter. + (Workqueue::should_cancel_thread): Likewise. + (Workqueue::find_runnable_or_wait): Pass thread_number to + should_cancel_thread. + * workqueue.h (Workqueue::should_cancel_thread): Add thread_number + parameter. + +2011-07-22 Sriraman Tallam + + * symtab.cc (Symbol_table::add_from_relobj): Mark symbol as referenced + only after checking if it cannot be forced local. + * symtab.h (is_externally_visible): Check if the symbol is not forced + local. + +2011-07-15 Ian Lance Taylor + + * options.h (class General_options): Add --print-output-format. + Move -EL next to -EB, for better --help output. + * target-select.cc: Include , "options.h", and + "parameters.h". + (Target_selector::do_target_bfd_name): New function. + (print_output_format): New function. + * target-select.h (class Target_selector): Update declarations. + (Target_selector::target_bfd_name): New function. + (print_output_format): Declare. + * main.cc: Include "target-select.h". + (main): Handle --print-output-format. + * gold.cc: Include "target-select.h". + (queue_initial_tasks): Handle --print-output-format when there are + no input files. + * parameters.cc (parameters_force_valid_target): Give a better + error message if -EB/-EL does not match target. + * freebsd.h (Target_selector_freebsd::do_target_bfd_name): New + function. + +2011-07-15 Ian Lance Taylor + + * i386.cc (class Output_data_plt_i386): Add layout_ field. + (Output_data_plt_i386::Output_data_plt_i386): Initialize layout_. + (Output_data_plt_i386::do_write): Write address of .dynamic + section to first entry in .got.plt section. + * x86_64.cc (class Output_data_plt_x86_64): Add layout_ field. + (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]: + Initialize layout_. + (Output_data_plt_x86_64::do_write): Write address of .dynamic + section to first entry in .got.plt section. + * layout.h (Layout::dynamic_section): New function. + +2011-07-13 Sriraman Tallam + + * archive.cc (Archive::get_elf_object_for_member): Add extra parameter + to claim_file call. + * layout.cc (Layout::Layout): Initialize section_ordering_specified_, + input_section_position_, and input_section_glob_. + (read_layout_from_file): Call function section_ordering_specified. + * layout.h (is_section_ordering_specified): New function. + (section_ordering_specified): New function. + (section_ordering_specified_): New boolean member. + * main.cc(main): Call load_plugins after layout object is defined. + * output.cc (Output_section::add_input_section): Use + function section_ordering_specified to check if section ordering is + needed. + * output.cc (Output_section::add_relaxed_input_section): Use + function section_ordering_specified to check if section ordering is + needed. + (Output_section::update_section_layout): New function. + (Output_section::sort_attached_input_sections): Check if input section + must be reordered. + * output.h (Output_section::update_section_layout): New function. + * plugin.cc (get_section_count): New function. + (get_section_type): New function. + (get_section_name): New function. + (get_section_contents): New function. + (update_section_order): New function. + (allow_section_ordering): New function. + (Plugin::load): Add the new interfaces to the transfer vector. + (Plugin_manager::load_plugins): New parameter. + (Plugin_manager::all_symbols_read): New parameter. + (Plugin_manager::claim_file): New parameter. Save the elf object for + unclaimed objects. + (Plugin_manager::get_elf_object): New function. + (Plugin_manager::get_view): Change to directly use the bool to check + if get_view is called from claim_file_hook. + * plugin.h (input_objects): New function + (Plugin__manager::load_plugins): New parameter. + (Plugin_manager::claim_file): New parameter. + (Plugin_manager::get_elf_object): New function. + (Plugin_manager::in_claim_file_handler): New function. + (Plugin_manager::in_claim_file_handler_): New member. + (layout): New function. + * readsyms.cc (Read_symbols::do_read_symbols): Call the claim_file + handler with an extra parameter. Make the elf object before calling + claim_file handler. + * testsuite/plugin_test.c (get_section_count): New function pointer. + (get_section_type): New function pointer. + (get_section_name): New function pointer. + (get_section_contents): New function pointer. + (update_section_order): New function pointer. + (allow_section_ordering): New function pointer. + (onload): Check if the new interfaces exist. + +2011-07-13 Ian Lance Taylor + + * i386.cc (Target_i386::got_section): If -z now, make .got.plt a + relro section. + * x86_64.cc (Target_x86_64::got_section): Likewise. + * testsuite/Makefile.am (check_PROGRAMS): Add relro_now_test. + (relro_now_test_SOURCES): New variable. + (relro_now_test_DEPENDENCIES): New variable. + (relro_now_test_LDFLAGS): New variable. + (relro_now_test_LDADD): New variable. + (relro_now_test.so): New target. + * testsuite/Makefile.in: Rebuild. + +2011-07-12 Ian Lance Taylor + + PR gold/12980 + * i386.cc (Target_i386::Scan::global): For a GOT reloc, use a + GLOB_DAT relocation rather than a RELATIVE relocation for a + protected symbol when creating a shared library. + * x86_64.cc (Target_x86_64::Scan::global): Likewise. + * testsuite/protected_1.cc (f2, get_f2_addr): New functions. + * testsuite/protected_main_1.cc (main): Test that protected + function has same address. + +2011-07-11 Ian Lance Taylor + + PR gold/12979 + * options.h (class General_options): Add -Bgroup. + * options.cc (General_options::finalize): If -Bgroup is set, + default to --unresolved-symbols=report-all. + * layout.cc (Layout::finish_dynamic_section): Implement -Bgroup. + * target-reloc.h (issue_undefined_symbol_error): Handle + --unresolved-symbols=report-all. + +2011-07-08 Ian Lance Taylor + + PR gold/11985 + * layout.cc (Layout::create_initial_dynamic_sections): Don't crash + if linker script discards key sections. + (Layout::create_dynamic_symtab): Likewise. + (Layout::assign_local_dynsym_offsets): Likewise. + (Layout::sized_create_version_sections): Likewise. + (Layout::create_interp): Likewise. + (Layout::finish_dynamic_section): Likewise. + (Layout::set_dynamic_symbol_size): Likewise. + +2011-07-08 Ian Lance Taylor + + PR gold/12386 + * options.h (class General_options): Add --unresolved-symbols. + * target-reloc.h (issue_undefined_symbol_error): Check + --unresolved-symbols. Add comments. + +2011-07-08 Ian Lance Taylor + + * testsuite/odr_violation2.cc (Ordering::operator()): Make + expression more complex. + +2011-07-08 Ian Lance Taylor + + PR gold/11317 + * target-reloc.h (issue_undefined_symbol_error): New inline + function, broken out of relocate_section. + (relocate_section): Call issue_undefined_symbol_error. + * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if + there is no TLS segment if we are about to issue an undefined + symbol error. + * x86_64.cc (Target_x86_64::relocate_tls): Likewise. + +2011-07-08 Ian Lance Taylor + + PR gold/12279 + * resolve.cc (Symbol_table::should_override): Add fromtype + parameter. Change all callers. Give error when linking together + TLS and non-TLS symbol. + (Symbol_table::should_override_with_special): Add fromtype + parameter. Change all callers. + * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if + there is no TLS segment if we have reported some errors. + * x86_64.cc (Target_x86_64::relocate_tls): Likewise. + +2011-07-08 Ian Lance Taylor + + PR gold/12372 + * target.h (Target::plt_address_for_global): New function. + (Target::plt_address_for_local): New function. + (Target::plt_section_for_global): Remove. + (Target::plt_section_for_local): Remove. + (Target::do_plt_address_for_global): New virtual function. + (Target::do_plt_address_for_local): New virtual function. + (Target::do_plt_section_for_global): Remove. + (Target::do_plt_section_for_local): Remove. + (Target::register_global_plt_entry): Add Symbol_table and Layout + parameters. + * output.cc (Output_data_got::Got_entry::write): Use + plt_address_for_global and plt_address_for_local. + * layout.cc (Layout::add_target_dynamic_tags): Use size and + address of output section. + * i386.cc (class Output_data_plt_i386): Add irelative_rel_, + got_irelative_, and irelative_count_ fields. Update + declarations. + (Output_data_plt_i386::has_irelative_section): New function. + (Output_data_plt_i386::entry_count): Add irelative_count_. + (Output_data_plt_i386::set_final_data_size): Likewise. + (class Target_i386): Add got_irelative_ and rel_irelative_ + fields. Update declarations. + (Target_i386::Target_i386): Initialize new fields. + (Target_i386::do_plt_address_for_global): New function replacing + do_plt_section_for_global. + (Target_i386::do_plt_address_for_local): New function replacing + do_plt_section_for_local. + (Target_i386::got_section): Create got_irelative_. + (Target_i386::rel_irelative_section): New function. + (Output_data_plt_i386::Output_data_plt_i386): Initialize new + fields. Don't define __rel_iplt_{start,end}. + (Output_data_plt_i386::add_entry): Add symtab and layout + parameters. Change all callers. Use different PLT and GOT for + IFUNC symbols. + (Output_data_plt_i386::add_local_ifunc_entry): Add symtab and + layout parameters. Change all callers. Use different PLT and + GOT. + (Output_data_plt_i386::rel_tls_desc): Fix formatting. + (Output_data_plt_i386::rel_irelative): New function. + (Output_data_plt_i386::address_for_global): New function. + (Output_data_plt_i386::address_for_local): New function. + (Output_data_plt_i386::do_write): Write out IRELATIVE area. Use + IRELATIVE GOT when changing IFUNC GOT entries. + (Target_i386::Scan::global): Use IRELATIVE GOT for IRELATIVE + reloc. + (Target_i386::do_finalize_sections): Create the __rel_iplt symbols + if we didn't create an IRELATIVE GOT. + (Target_i386::Relocate::relocate): Use plt_address_for_global and + plt_address_for_local. + (Target_i386::do_dynsym_value): Use plt_address_for_global. + * x86_64.cc (class Output_data_plt_x86_64): Add irelative_rel_, + got_irelative_, and irelative_count_ fields. Update + declarations. + (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]: + Initialize new fields. Remove symtab parameter. Change all + callers. + (Output_data_plt_x86_64::get_tlsdesc_plt_offset): Add + irelative_count_. + (Output_data_plt_x86_64::has_irelative_section): New function. + (Output_data_plt_x86_64::entry_count): Add irelative_count_. + (class Target_x86_64): Add got_irelative_ and rel_irelative_ + fields. Update declarations. + (Target_x86_64::Target_x86_64): Initialize new fields. + (Target_x86_64::do_plt_address_for_global): New function replacing + do_plt_section_for_global. + (Target_x86_64::do_plt_address_for_local): New function replacing + do_plt_section_for_local. + (Target_x86_64::got_section): Create got_irelative_. + (Target_x86_64::rela_irelative_section): New function. + (Output_data_plt_x86_64::init): Remove symtab parameter. Change + all callers. Don't create __rel_iplt_{start,end}. + (Output_data_plt_x86_64::add_entry): Add symtab and layout + parameters. Change all callers. Use different PLT and GOT for + IFUNC symbols. + (Output_data_plt_x86_64::add_local_ifunc_entry): Add symtab and + layout parameters. Change all callers. Use different PLT and + GOT. + (Output_data_plt_x86_64::add_relocation): Add symtab and layout + parameters. Change all callers. Use different PLT and GOT for + IFUNC symbols. + (Output_data_plt_x86_64::rela_tlsdesc): Fix formatting. + (Output_data_plt_x86_64::rela_irelative): New function. + (Output_data_plt_x86_64::address_for_global): New function. + (Output_data_plt_x86_64::address_for_local): New function. + (Output_data_plt_x86_64::set_final_data_size): Likewise. + (Output_data_plt_x86_64::do_write): Write out IRELATIVE area. + (Target_x86_64::init_got_plt_for_update): Create got_irelative_. + (Target_x86_64::register_global_plt_entry): Add symtab and layout + parameters. + (Target_x86_64::Scan::global): Use IRELATIVE GOT for IRELATIVE + reloc. + (Target_x86_64::do_finalize_sections): Create the __rela_iplt + symbols if we didn't create an IRELATIVE GOT. + (Target_x86_64::Relocate::relocate): Use plt_address_for_global and + plt_address_for_local. + (Target_x86_64::do_dynsym_value): Use plt_address_for_global. + * testsuite/ifuncvar1.c: New test file. + * testsuite/ifuncvar2.c: New test file. + * testsuite/ifuncvar3.c: New test file. + * testsuite/Makefile.am (check_PROGRAMS): Add ifuncvar. + (ifuncvar1_pic.o, ifuncvar2_pic.o, ifuncvar.so): New targets. + (ifuncvar_SOURCES, ifuncvar_DEPENDENCIES): New variables. + (ifuncvar_LDFLAGS, ifuncvar_LDADD): New variables. + * testsuite/Makefile.in: Rebuild. + +2011-07-07 Cary Coutant + + * testsuite/Makefile.am (two_file_test_1_v1_ndebug.o): New target. + (two_file_test_1_ndebug.o): Likewise. + (two_file_test_1b_ndebug.o): Likewise. + (two_file_test_2_ndebug.o): Likewise. + (two_file_test_main_ndebug.o): Likewise. + (incremental_test_2): Link with no-debug versions. + +2011-07-06 Cary Coutant + + * gold/incremental.cc + (Output_section_incremental_inputs::write_info_blocks): Check for + hidden and internal symbols. + +2011-07-06 Cary Coutant + + * incremental.cc (Sized_incremental_binary::do_file_has_changed): + Check disposition for startup file. + (Incremental_inputs::report_command_line): Ignore + --incremental-startup-unchanged option. + * options.cc (General_options::parse_incremental_startup_unchanged): + New function. + (General_options::General_options): Initialize new data member. + * options.h (Incremental_disposition): Add INCREMENTAL_STARTUP. + (General_options): Add --incremental-startup-unchanged option. + (General_options::incremental_startup_disposition): New function. + (General_options::incremental_startup_disposition_): New data member. + +2011-07-06 Cary Coutant + + * incremental.cc (Sized_incremental_binary::setup_readers): Pass + input file index to Script_info ctor. + (Sized_incremental_binary::do_file_has_changed): Find the + command-line argument for files named in scripts. + * incremental.h (Script_info::Script_info): New ctor + with input file index. + (Script_info::input_file_index): New function. + (Script_info::input_file_index_): New data member. + (Incremental_binary::get_library): Add const. + (Incremental_binary::get_script_info): Add const. + * readsyms.cc (Read_member::is_runnable): Check for this_blocker_. + * testsuite/Makefile.am (incremental_test_5): New test case. + (incremental_test_6): New test case. + * testsuite/Makefile.in: Regenerate. + +2011-07-06 Cary Coutant + + * incremental.cc (Sized_incremental_binary::do_check_inputs): Add + debug output when command lines differ. + +2011-07-06 Cary Coutant + + * incremental.cc (Incremental_inputs::report_command_line): Ignore + --incremental-patch option. + * layout.cc (Free_list::allocate): Extend allocation beyond original + end if enabled. + (Layout::make_output_section): Mark sections that should get + patch space. + * options.cc (parse_percent): New function. + * options.h (parse_percent): New function. + (DEFINE_percent): New macro. + (General_options): Add --incremental-patch option. + * output.cc (Output_section::Output_section): Initialize new data + members. + (Output_section::add_input_section): Print section name when out + of patch space. + (Output_section::add_output_section_data): Likewise. + (Output_section::set_final_data_size): Add patch space when + doing --incremental-full. + (Output_section::do_reset_address_and_file_offset): Remove patch + space. + (Output_segment::set_section_list_addresses): Print debug output + only if --incremental-update. + * output.h (Output_section::set_is_patch_space_allowed): New function. + (Output_section::is_patch_space_allowed_): New data member. + (Output_section::patch_space_): New data member. + * parameters.cc (Parameters::incremental_full): New function. + * parameters.h (Parameters::incremental_full): New function + * testsuite/Makefile.am (incremental_test_2): Add test for + --incremental-patch option. + * testsuite/Makefile.in: Regenerate. + * testsuite/two_file_test_1_v1.cc (t1, t2, t3): Add comments. + (t18): Remove function body. + +2011-07-05 Doug Kwan + + PR gold/12771 + * arm.cc (Arm_relocate_functions::abs8): Use int32_t for addend and + Arm_Address type for relocation result. + (Arm_relocate_functions::abs16): Use unaligned access. Also fix + overflow check. + (Arm_relocate_functions::abs32): Use unaligned access. + (Arm_relocate_functions::rel32): Ditto. + (Arm_relocate_functions::prel31): Ditto. + (Arm_exidix_cantunwind::do_fixed_endian_write): Ditto. + * testsuite/Makefile.am: Add new test arm_unaligned_reloc for unaligned + static data relocations. + * testsuite/Makefile.in: Regnerate. + * testsuite/arm_unaligned_reloc.{s,sh}: New files. + +2011-07-05 Ian Lance Taylor + + PR gold/12392 + * i386.cc (Target_i386::do_finalize_sections): Define __rel_iplt + symbols if necessary. + * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise. + +2011-07-05 Ian Lance Taylor + + PR gold/12952 + * resolve.cc (Symbol::override_base_with_special): Simply override + version with special symbol version, ignoring previous version. + +2011-07-05 Ian Lance Taylor + + * object.cc (Sized_relobj_file::include_section_group): Add + information to comment about signature location. + +2011-07-02 Ian Lance Taylor + + PR gold/12957 + * options.h (class General_options): Add -f and -F. + * options.cc (General_options::finalize): Fatal error if -f/-F + are used without -shared. + * layout.cc (Layout::finish_dynamic_section): Implement -f/-F. + +2011-07-02 Ian Lance Taylor + + * dirsearch.cc (Dir_cache::read_files): Ignore ENOTDIR errors. + +2011-07-01 Ian Lance Taylor + + PR gold/12525 + PR gold/12952 + * resolve.cc (Symbol::override_base_with_special): Don't override + the version if the overriding symbol has a different name. + * dynobj.cc (Versions::add_def): Add dynpool parameter. Change + all callers. If we give an error about an undefined version, + define the base version if necessary. + * dynobj.h (class Versions): Update declaration. + * testsuite/weak_alias_test_5.cc: New file. + * testsuite/weak_alias_test.script: New file. + * testsuite/weak_alias_test_main.cc: Check that versioned_symbol + and versioned_alias have the right value, and call t2. + * testsuite/Makefile.am (weak_alias_test_DEPENDENCIES): Add + weak_alias_test_5.so. + (weak_alias_test_LDADD): Likewise. + (weak_alias_test_5_pic.o, weak_alias_test_5.so): New targets. + * testsuite/Makefile.in: Rebuild. + +2011-07-01 Ian Lance Taylor + + PR gold/12525 + * options.h (class General_options): Support -z notext. + * testsuite/Makefile.am (two_file_shared_1_nonpic.so): Use + -Wl,-z,notext. + (two_file_shared_nonpic.so): Likewise. + (two_file_shared_mixed.so): Likewise. + (two_file_shared_mixed_1.so): Likewise. + (weak_undef_lib_nonpic.so): Likewise. + (alt/weak_undef_lib_nonpic.so): Likewise. + (tls_test_shared_nonpic.so): Likewise. + * testsuite/Makefile.in: Rebuild. + +2011-07-01 Ian Lance Taylor + + PR gold/12525 + * configure.ac: Test whether static linking works, setting + the automake conditional HAVE_STATIC. + * testsuite/Makefile.am: Disable tests using -static if + HAVE_STATIC is not true. + * configure, testsuite/Makefile.in: Rebuild. + +2011-07-01 Ian Lance Taylor + + PR gold/12525 + * ehframe.cc (Eh_frame_hdr::get_fde_pc): Handle DW_EH_PE_datarel. + Assert if we see DW_EH_PE_indirect. + * target.h (Target::ehframe_datarel_base): New function. + (Target::do_ehframe_datarel_base): New target function. + * i386.cc (Target_i386::do_ehframe_datarel_base): New function. + * x86_64.cc (Target_x86_64::do_ehframe_datarel_base): New + function. + +2011-07-01 Ian Lance Taylor + + PR gold/12571 + * options.h (class General_options): Add + --ld-generated-unwind-info. + * ehframe.cc (Fde::write): Add address parameter. Change all + callers. If associated with PLT, fill in address and size. + (Cie::set_output_offset): Only add merge mapping if there is an + object. + (Cie::write): Add address parameter. Change all callers. + (Eh_frame::add_ehframe_for_plt): New function. + * ehframe.h (class Fde): Update declarations. Move shndx_ and + input_offset_ fields into union u_, with new plt field. + (Fde::Fde): Adjust for new union field. + (Fde::Fde) [Output_data version]: New constructor. + (Fde::add_mapping): Only add merge mapping if there is an object. + (class Cie): Update declarations. + (class Eh_frame): Declare add_ehframe_for_plt. + * layout.cc (Layout::layout_eh_frame): Break out code into + make_eh_frame_section, and call it. + (Layout::make_eh_frame_section): New function. + (Layout::add_eh_frame_for_plt): New function. + * layout.h (class Layout): Update declarations. + * merge.cc (Merge_map::add_mapping): Add assertion. + * i386.cc: Include "dwarf.h". + (class Output_data_plt_i386): Make first_plt_entry, + dyn_first_plt_entry, exec_plt_entry, and dyn_plt_entry const. Add + plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie, + and plt_eh_frame_fde. + (Output_data_plt_i386::Output_data_plt_i386): Align to 16-byte + boundary. Call add_eh_frame_for_plt if appropriate. + * x86_64.cc: Include "dwarf.h". + (class Output_data_plt_x86_64): Align to 16-byte boundary. Make + first_plt_entry, plt_entry and tlsdesc_plt_entry const. Add + plt_eh_frame_cie_size, plt_eh_frame_fde_size, plt_eh_frame_cie, + and plt_eh_frame_fde. + (Output_data_plt_x86_64::init): Call add_eh_frame_for_plt if + appropriate. + +2011-06-29 Ian Lance Taylor + + PR gold/12629 + * object.cc (Sized_relobj_file::layout_section): Change shdr + parameter to be const. + (Sized_relobj_file::layout_eh_frame_section): New function, broken + out of do_layout. + (Sized_relobj_file::do_layout): Defer .eh_frame sections if + appropriate. Call layout_eh_frame_section. + (Sized_relobj_file::do_layout_deferred_sections): Handle .eh_frame + sections. + * object.h (class Sized_relobj_file): Update declarations. + 2011-06-29 Ian Lance Taylor + PR gold/12652 * script.cc (Token::integer_value): Accept trailing M/m/K/k modifier. (Lex::gather_token): Accept trailing M/m/K/k for integers. @@ -1563,7 +2680,7 @@ * testsuite/Makefile.am (final_layout.stdout): Use -n option with nm. * testsuite/Makefile.in: Regenerate. -2010-03-23 Rafael Ávila de Espíndola +2011-03-23 Rafael Ávila de Espíndola * plugin.cc (get_view): New. (Plugin::load): Pass get_view to the plugin. @@ -1664,7 +2781,7 @@ the toolchain building binutils. * configure: Rebuild. -2010-02-18 Rafael Ávila de Espíndola +2011-02-18 Rafael Ávila de Espíndola * symtab.cc (Symbol::should_add_dynsym_entry) Return false for plugin only symbols. @@ -1683,7 +2800,7 @@ * reloc.cc (Sized_relobj::do_relocate): Don't call clear_local_symbols. -2010-02-08 Rafael Ávila de Espíndola +2011-02-08 Rafael Ávila de Espíndola * plugin.cc (is_visible_from_outside): Return true for symbols in the -u option.