aboutsummaryrefslogtreecommitdiff
path: root/gold
AgeCommit message (Collapse)AuthorFilesLines
2013-03-302013-03-29 Sriraman Tallam <tmsriram@google.com>Sriraman Tallam2-13/+32
* archive.cc (Archive::get_elf_object_for_member): Create the elf object before calling the plugin claim_file handler. Pass the elf object of the archive to the plugin. Delete the elf object if the plugin claims the file.
2013-03-21 * layout.cc (Layout::set_segment_offsets): Accept writable .textAlan Modra2-1/+7
segment when omagic.
2013-03-21 * dwp.cc (Dwp_output_file::add_contribution): Avoid signed/unsignedAlan Modra3-4/+9
comparison warning. * layout.cc (Layout::create_dynamic_symtab): Avoid "may be used uninitialized" warning.
2013-03-20 * symtab.h (Symbol::clear_version): New function.Alan Modra3-7/+45
* symtab.cc (Symbol_table::set_dynsym_indexes): Don't set object is_needed by weak references. Clear version for symbols defined in as-needed objects that are not needed.
2013-03-15 * powerpc.cc (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): MakeAlan Modra2-86/+140
static and public. Add report_err param. Return false for data refs. (Target_powerpc::rela_dyn_section): New overloaded function. (Target_powerpc::plt_, iplt_): Elucidate. (Output_data_plt_powerpc::entry_count): Handle current_data_size()==0. (Output_data_plt_powerpc::do_write): Don't write .iplt. (Output_data_plt_powerpc::plt_entry_count): Don't add .iplt entries. (Target_powerpc::Scan::local, global): Adjust reloc_needs_plt_for_ifunc calls. Put ifunc dynamic relocs in irela_dyn_section. Only push_branch and make_plt_entry for ifunc syms when reloc_needs_plt_for_ifunc. (Target_powerpc::Relocate::relocate): Don't use plt entry value for ifunc unless reloc_needs_plt_for_ifunc.
2013-03-15 * gc.h (gc_process_relocs): Don't look through function descriptors.Alan Modra3-30/+26
* icf.cc (get_section_contents): Do so here instead.
2013-03-12 * powerpc.cc (is_branch_reloc): Forward declare.Alan Modra7-89/+166
(Target_powerpc::do_can_check_for_function_pointers): New predicate. (Target_powerpc::Scan::local_reloc_may_be_function_pointer): Return false for 64-bit, true for 32-bit non-branch relocs. (Target_powerpc::Scan::global_reloc_may_be_function_pointer): Likewise. * testsuite/Makefile.am (icf_test): Use linker map file instead of nm output. (icf_safe_test): Generate linker map file as well as nm output. (icf_safe_so_test): Likewise. * testsuite/Makefile.in: Regenerate. * testsuite/icf_test.sh: Parse linker map file to determine section folding. * testsuite/icf_safe_test.sh: Likewise. Expect folding for PowerPC. * testsuite/icf_safe_so_test.sh: Likewise. (X86_32_or_ARM_specific_safe_fold): Merge into.. (arch_specific_safe_fold): ..this. (X86_64_specific_safe_fold): Delete unused function.
2013-03-12 * gc.h (gc_process_relocs): Look through function descriptorsAlan Modra2-20/+52
to determine shndx, symvalue and addend used by ICF. Tidy variable duplication.
2013-03-10 * gold.cc (queue_middle_tasks): Move detect_odr_violations..Alan Modra9-38/+342
* layout.cc (Layout_task_runner::run): ..to here. * symtab.h (struct Symbol_location): Extract from.. (class Symbol_table): ..here. * symtab.cc (Symbol_table::linenos_from_loc): Invoke function_location. * target.h (class Target): Add function_location and do_function_location functions. (class Sized_target): Add do_function_location. * object.h (class Sized_relobj_file): Move find_shdr.. (class Object): ..to here. * object.cc: Likewise. Update to suit. Instantiate. (Sized_relobj_file::find_eh_frame): Update find_shdr call. * powerpc.cc (class Powerpc_dynobj): New. (Target_powerpc::do_function_location): New function. (Powerpc_relobj::do_find_special_sections): Update find_shdr call. (Powerpc_dynobj::do_read_symbols): New function. (Target_powerpc::do_make_elf_object): Make a Powerpc_dynobj.
2013-03-08 * options.cc (General_options::string_to_object_format): AcceptIan Lance Taylor2-1/+6
"default".
2013-03-07 * ehframe.h (Post_fdes) Make it a vector of Post_fde rather thanAlan Modra3-24/+27
pointer to Post_fde. (struct Post_fde): Move definition to here.. * ehframe.cc (struct Post_fde): ..from here. (Cie::write): Don't alloc Post_fde. (Eh_frame::do_sized_write): Update. Don't free Post_fde.
2013-03-07 * testsuite/discard_locals_relocatable_test.c: Add a powerpcAlan Modra3-2/+15
relocation referencing .LC0. * testsuite/discard_locals_test.sh: Remove FIXMEs.
2013-03-07 * testsuite/ifunc-sel.h (ifunc_sel, ifunc_one): MarkAlan Modra2-11/+82
always_inline. Add assembly for powerpc to avoid GOT.
2013-03-07 * testsuite/script_test_10.sh: Don't test .bss sectionAlan Modra2-1/+6
header number.
2013-03-06 * powerpc.cc (class Powerpc_relobj): Move some member functions.Alan Modra2-47/+70
(Target_powerpc::symval_for_branch): Add symtab param. Update all callers. Handle folded sections. (Target_powerpc::do_gc_add_reference): Don't cast dynamic object to Powerpc_relobj. (Global_symbol_visitor_opd::operator()): Likewise.
2013-03-04 * testsuite/Makefile.am (final_layout_script.lds): Add .sbss.Alan Modra3-2/+7
* testsuite/Makefile.in: Regenerate.
2013-03-01Add dwp support for v2 DWARF package file format.Cary Coutant5-549/+681
gold/ * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add tu_length parameter. Adjust all callers. * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise. * dwp.cc: Include dwarf.h. (Section_bounds): New struct type. (Unit_set): New struct type. (Dwo_file::Dwo_file): Initialize new data member. (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index): Combine and rename to... (Dwo_file::read_unit_index): ...this. (Dwo_file::sized_read_compunit_index) (Dwo_file::sized_read_typeunit_index): Combine and rename to... (Dwo_file::sized_read_unit_index): ...this. (Dwo_file::copy_section): Remove section_name, is_str_offsets parameters; add section_id parameter. (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to... (Dwo_file::add_unit_set): ...this. (Dwo_file::shndx_map_): Remove. (Dwo_file::sect_offsets_): New data member. (Dwp_output_file::Dwp_output_file): Initialize new data members. (Dwp_output_file::add_section): Rename to... (Dwp_output_file::add_contribution): ...this. (Dwp_output_file::add_cu_set): Combine parameters into a struct. (Dwp_output_file::add_tu_set): Likewise. (Dwp_output_file::Contribution): New type. (Dwp_output_file::Section::contributions): New data member. (Dwp_output_file::Cu_or_tu_set): Remove. (Dwp_output_file::Section::Section): New ctor. (Dwp_output_file::Dwp_index::Shndx_pool): Remove. (Dwp_output_file::Dwp_index::Section_table): New type. (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members. (Dwp_output_file::Dwp_index::enter_set): Change type of "set" parameter. (Dwp_output_file::Dwp_index::shndx_pool): Remove. (Dwp_output_file::Dwp_index::shndx_pool_end): Remove. (Dwp_output_file::Dwp_index::section_table): New member function. (Dwp_output_file::Dwp_index::section_table_end): New member function. (Dwp_output_file::Dwp_index::shndx_pool_size): Remove. (Dwp_output_file::Dwp_index::section_table_rows): New member function. (Dwp_output_file::Dwp_index::section_table_cols): New member function. (Dwp_output_file::Dwp_index::shndx_pool_): Remove. (Dwp_output_file::Dwp_index::section_table_): New data member. (Dwp_output_file::Dwp_index::section_mask_): New data member. (Dwp_output_file::add_output_section): New member function. (Dwp_output_file::write_new_section): New member function. (Dwp_output_file::write_contributions): New member function. (Dwp_output_file::section_id_map_): New data member. (class Dwo_id_info_reader): Remove. (class Unit_reader): New class. (get_dwarf_section_name): New function. (Dwo_file::read_executable): Adjust initializations of class data. (Dwo_file::read): Add support for v2 package file format. (Dwo_file::read_unit_index): Likewise. (Dwo_file::sized_read_unit_index): Likewise. (Dwo_file::copy_section): Likewise. (Dwo_file::add_unit_set): Likewise. (Dwp_output_file::add_output_section): Likewise. (Dwp_output_file::add_contribution): Likewise. (Dwp_output_file::Dwp_index::find_or_add): Use row index to check for empty slot. (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package file format. (Dwp_output_file::Dwp_index::grow): Use row index to check for empty slot. (Dwp_output_file::initialize): Remove unused function. (Dwp_output_file::finalize): Add support for v2 package file format. (Dwp_output_file::write_index): Likewise. * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust function prototype.
2013-03-01gold/Cary Coutant3-16/+32
* dwarf_reader.cc (Dwarf_info_reader::check_buffer): Move function into class definition in header file. (Dwarf_info_reader::warn_corrupt_debug_section): New function. * dwarf_reader.h (Dwarf_info_reader::warn_corrupt_debug_section): New function. (Dwarf_info_reader::check_buffer): Move here from .cc file.
2013-02-27 * target.h (Target::plt_fde_location, do_plt_fde_location): Declare.Alan Modra6-25/+303
* target.cc (Target::do_plt_fde_location): New function. * ehframe.h (class FDE): Add post_map field to u_.from_linker, accessor function, and constructor param. (struct Post_fde, Post_fdes): Declare. (Cie::write): Add post_fdes param. * ehframe.cc (Fde::write): Use plt_fde_location. (struct Post_fde): Define. (Cie::write): Stash FDEs added post merge mapping. (Eh_frame::add_ehframe_for_plt): Assert no new CIEs after mapping. Adjust Fde constructor call. Bump final_data_size_ for post map FDEs. (Eh_frame::do_sized_write): Arrange to write post map FDES after other FDEs. * powerpc.cc (Target_powerpc::do_plt_fde_location): New function. (Target_powerpc::has_glink): New function. (Target_powerpc::do_relax): Add eh_frame info for stubs. (struct Eh_cie, eh_frame_cie, glink_eh_frame_fde_64, glink_eh_frame_fde_32, default_fde): New data. (Stub_table::eh_frame_added_): New var. (Stub_table::find_long_branch_entry, stub_address, stub_offset): Make const. (Stub_table::add_eh_frame): New function. (Output_data_glink::add_eh_frame): New function. (Target_powerpc::make_glink_section): Call add_eh_frame.
2013-02-15 * options.h (DEFINE_uint64_alias): Define.Ian Lance Taylor2-0/+35
(class General_options): Add -Ttext-segment as an alias for -Ttext.
2013-02-15 * powerpc.cc (Stub_table::plt_off): New function, extracted from..Alan Modra2-46/+41
(Stub_table::do_write): ..here, two places. (Stub_table::plt_call_size): Use it here too.
2013-02-11 * descriptors.cc (Descriptors::close_all): New function.Ian Lance Taylor4-2/+49
* descriptors.h (class Descriptors): Declare close_all. (close_all_descriptors): New inline function. * plugin.cc: Include "descriptors.h". (Plugin_manager::cleanup): Call close_all_descriptors.
2013-02-06 * README: Update coding style link.Alan Modra2-1/+5
2013-01-29gold/Cary Coutant2-79/+205
* dwp.cc (File_list): New typedef. (Dwo_name_info_reader): New class. (Dwo_id_info_reader::Dwo_id_info_reader): Remove unused parameters. (Dwo_id_info_reader::visit_top_die): Remove unused member function. (Dwo_file::~Dwo_file): Delete input_file_ after obj_. (Dwo_file::read_executable): New function. (Dwo_file::read): Move common setup code to ... (Dwo_file::make_object): ... here. (dwp_options): Add --exec/-e. (usage): Likewise. (main): Likewise.
2013-01-27mention fixed bug in ChangeLogMike Frysinger1-0/+1
2013-01-24Default text reordering fix with a flag to turn it off.Sriraman Tallam8-19/+99
2013-01-24 Sriraman Tallam <tmsriram@google.com> * layout.cc (Layout::layout): Check for option text_reorder. (Layout::make_output_section): Ditto. * options.h (text_reorder): New option. * output.cc (Input_section_sort_compare): Remove special ordering of section names. (Output_section:: Input_section_sort_section_name_special_ordering_compare:: operator()): New function. (Output_section::sort_attached_input_sections): Use new sort function for .text. * output.h (Input_section_sort_section_name_special_ordering_compare): New struct. * testsuite/Makefile.am (text_section_grouping): Test option --no-text-reorder * testsuite/Makefile.in: Regenerate. * testsuite/text_section_grouping.sh: Check order of functions without default text reordering.
2013-01-18gold: enable new dtags by defaultMike Frysinger2-1/+5
The "new" dtags options have been around for 14+ years, and for all the targets that gold supports, these flags have always existed. So enable them by default. Having behavior be different from ld.bfd isn't new, and this behavior is the "better" one, so there shouldn't be a problem based on that. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2013-01-18ld: change --enable-new-dtags to only generate new dtagsMike Frysinger2-2/+9
The "new" dtags options have been around for 14+ years, so there shouldn't be a need to generate both new & old tags anymore. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2013-01-17 * powerpc.cc (Stub_table::find_plt_call_entry): Make typesAlan Modra2-6/+12
used in declaration and definition consistent. (Target_powerpc::symval_for_branch): Ditto.
2013-01-172013-01-16 Sriraman Tallam <tmsriram@google.com>Sriraman Tallam2-1/+5
* testsuite/plugin_final_layout.cc: Fix comment.
2013-01-162013-01-16 Sriraman Tallam <tmsriram@google.com>Sriraman Tallam3-1/+17
* layout.cc (Layout::layout): Do not do default sorting for text sections when section ordering is specified. (make_output_section): Ditto. * testsuite/plugin_final_layout.cc: Name the function sections to catch reordering issues.
2013-01-15bfd/Alan Modra2-8/+20
* elf64-ppc.c (ppc64_elf_size_stubs): Default shared libs to plt-thread-safe. gold/ * powerpc.cc (Target_powerpc::do_relax): Default shared libs to plt-thread-safe. ld/testsuite/ * ld-powerpc/tlsso.d: Adjust for plt-thread-safe stubs. * ld-powerpc/tlsso.g: Likewise. * ld-powerpc/tlsso.r: Likewise. * ld-powerpc/tlstocso.d: Likewise. * ld-powerpc/tlstocso.g: Likewise.
2013-01-14 * testsuite/Makefile.am (final_layout_script.lds): Handle .got section.Alan Modra3-2/+7
* testsuite/Makefile.in: Regenerate.
2013-01-14 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add various output files.Alan Modra3-25/+46
* testsuite/Makefile.in: Regenerate.
2013-01-11 Fix mingw gold build with plugins enabledIan Lance Taylor8-6/+95
* Makefile.am: Replace -ldl with @DLOPEN_LIBS@. * configure.ac: Export DLOPEN_LIBS and add headers check. * plugin.cc: Handle non-dlfcn case. * Makefile.in: Regenerate. * config.in: Regenerate. * configure: Regenerate. * testsuite/Makefile.in: Regenerate.
2013-01-10Make linker scripts and section ordering via --section-ordering-file orSriraman Tallam5-9/+46
linker plugins work. This patch lets linker scripts take precedence. 2013-01-09 Sriraman Tallam <tmsriram@google.com> * output.h (sort_attached_input_sections): Change to be public. * script-sections.cc (Output_section_definition::set_section_addresses): Sort attached input sections according to section order before linker script assigns section addresses. (Orphan_output_section::set_section_addresses): Sort attached input sections according to section order before linker script assigns section addresses. * Makefile.am (final_layout.sh): Use a simple linker script to check if section ordering still works. * Makefile.in: Regenerate.
2013-01-09 * arm.cc (Target_arm::attributes_accept_div): New function.Ian Lance Taylor2-22/+91
(Target_arm::attributes_forbid_div): New function. (Target_arm::merge_object_attributes): Merge the Tag_DIV_use attribute using the same new functions as what bfd/elf32_arm.c does.
2013-01-07gold/Cary Coutant2-18/+15
PR gold/14993 * output.cc (Output_section::add_input_section): For incremental updates, don't track input sections that are allocated from patch space.
2013-01-07Properly install gold as default linkerH.J. Lu3-41/+22
PR gold/14897 * configure.ac (--enable-ld): Removed. (install_as_default): Set to yes only for --enable-gold=default or --disable-ld. * configure: Regenerated.
2013-01-07Add -fuse-ld= for GCC linker option compatibilityH.J. Lu2-3/+12
* options.h (General_options): Add -fuse-ld= for GCC linker option compatibility.
2013-01-05gold/Cary Coutant3-2/+7
* configure.ac: Fix typo restoring CXXFLAGS. * configure: Regenerate.
2013-01-04gold/Cary Coutant3-11/+29
* testsuite/Makefile.am (CXXLINK_S): New macro. (debug_msg_so.err, debug_msg_ndebug.err): Use CXXLINK_S. * testsuite/Makefile.in: Regenerate.
2013-01-02Update gold copyright year to 2013H.J. Lu2-2/+6
* version.cc (print_version): Update copyright year to 2013.
2012-12-21 * layout.cc (Layout::special_ordering_of_input_section): NewIan Lance Taylor4-95/+100
function. (Layout::layout): If input section requires special ordering, must sort input sections. (Layout::make_output_section): May sort .text input sections. (Layout::is_section_name_prefix_grouped): Remove. * layout.h (class Layout): Declare special_ordering_of_input_section. Don't declare is_section_name_prefix_grouped. * output.cc (Output_section::add_input_section): Revert last change. (Output_section::Input_section_sort::match_file_name): Don't crash if called on output section data. (Output_section::Input_section_sort_compare): Sort based on special ordering. (Output_section::Input_section_sort_section_order_index_compare): Revert last patch. (Output_section::sort_attached_input_sections): Likewise.
2012-12-19Group text sections with prefixes .text.unlikely,.text.hot and .text.startupSriraman Tallam8-7/+265
by default. 2012-12-18 Sriraman Tallam <tmsriram@google.com> * layout.cc (Layout::is_section_name_prefix_grouped): New function. * layout.h (Layout::is_section_name_prefix_grouped): New function. * output.cc (Output_section::add_input_section): Check if section name contains special prefix. Keep input sections to sort such sections. (Output_section::Input_section_sort_section_order_index_compare ::operator()): Group sections according to prefixes. * (Output_section::sort_attached_input_sections): Add condition to Input_section_entry constructor call. * testsuite/Makefile.am (text_section_grouping): New test. * testsuite/Makefile.in: Regenerate. * testsuite/text_section_grouping.cc: New file. * testsuite/text_section_grouping.sh: New file.
2012-12-17Add copyright noticesNick Clifton7-2/+97
2012-12-15gold/Cary Coutant3-8/+22
* testsuite/Makefile.am (exception_separate_shared_12_test): Add --no-as-needed flag. (exception_separate_shared_12_test): Likewise. (incremental_copy_test): Likewise. * testsuite/Makefile.in: Regenerate.
2012-12-15gold/Cary Coutant2-2/+11
* dwp.cc (Dwp_output_file::add_cu_set): Check for duplicate CUs. (Dwp_output_file::Dwp_index::enter_set): Add assert.
2012-12-12 * powerpc.cc (class Track_tls): New.Alan Modra2-43/+157
(class Relocate, class Scan): Inherit Track_tls. (Target_powerpc::Scan::local, global): Track tls optimization and avoid creating plt entry for __tls_get_addr if all uses are optimized away. (Target_powerpc::Relocate::relocate): Update to use Track_tls.
2012-12-12 * options.h (General_options): Add --toc-sort/--no-toc-sort.Alan Modra4-5/+103
Replace no_toc_optimize with toc_optimize. * output.h (Output_section::input_sections): Provide non-const variant. * powerpc.cc (Powerpc_relobj::has_small_toc_reloc_, set_has_small_toc_reloc, has_small_toc_reloc): New variable and accessors. (Target_powerpc::Scan::local, global): Call set_has_small_toc_reloc. (class Sort_toc_sections): New. (Target_powerpc::do_finalize_sections): Sort toc sections. (Target_powerpc::Relocate::relocate): Update toc_optimize test.