aboutsummaryrefslogtreecommitdiff
path: root/gold
AgeCommit message (Collapse)AuthorFilesLines
2013-04-292013-04-29 Alexander Ivchenko <alexander.ivchenko@intel.com>Cary Coutant11-20/+194
gold/ * output.cc (Output_section::add_merge_input_section): Allow to merge sections if the alignment is more than character size. * merge.h (Output_merge_string::Output_merge_string): Remove assert. * merge.cc (Output_merge_string<Char_type>::do_add_input_section): Count only not-null strings. Check the alignment of strings. * stringpool.h (Stringpool_template<Stringpool_char>::Stringpool_template): Add alignment as the argument. (Stringpool_template<Stringpool_char>::addralign_): New class member. * stringpool.cc (Stringpool_template<Stringpool_char>::new_key_offset): Align non-zero length strings according to the addralign_. (Stringpool_template<Stringpool_char>::set_string_offsets): Updating offsets according to the given alignment. * testsuite/Makefile.am (text_section_grouping): Test if string literals are getting merged. * testsuite/Makefile.in: Regenerate. * testsuite/merge_string_literals_1.c: New file. * testsuite/merge_string_literals_2.c: Ditto. * testsuite/merge_string_literals.sh: Ditto.
2013-04-27 * target-reloc.h (relocate_section): If the reloc offset is out ofIan Lance Taylor8-9/+47
range, pass VIEW as NULL to relocate.relocate. * arm.cc (Target_arm:Relocate::relocate): Check for a NULL view. * i386.cc (Target_i386::Relocate::relocate): Likewise. * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise. * sparc.cc (Target_sparc::Relocate::relocate): Likewise. * tilegx.cc (Target_tilegx::Relocate::relocate): Likewise. * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
2013-04-262013-04-26 Geoff Pike <gpike@chromium.org>Cary Coutant7-34/+309
gold/ * gold.cc (queue_final_tasks): invoke layout->queue_build_id_tasks(). * layout.cc (Hash_task): New class. (Layout::queue_build_id_tasks): New function. (Layout::write_build_id): Handle single-thread portion of build ID computation. (In some cases, all of it is single-threaded.) Replace {sha1,md5}_process_bytes with {sha1,md5}_buffer to get the same functionality in fewer lines of code. * layout.h (Layout::queue_build_id_tasks): New function declaration. * options.h (General_options): make "--build-id" default to tree rather than sha1. Add two new options related to --build-id=tree: --build-id-chunk-size-for-treehash and --build-id-min-file-size-for-treehash. * Makefile.am: add testing of --build-id=tree and related new options (these tests will be invoked by "make check"). * Makefile.in: Regenerate.
2013-04-25bfd/Alan Modra2-0/+20
* config.bfd: Add powerpc64le-linux. gas/ * configure.in: Allow little-endian linux. * configure: Regenerate. gold/ * configure.tgt: Add powerpcle and powerpc64le. ld/ * Makefile.am (ALL_EMULATION_SOURCES): Add eelf32lppclinux.c. (eelf32lppclinux.c): New rule. * Makefile.in: Regenerate. * configure.tgt: Merge powerpc-linux and other powerpc-elf targets with corresponding little-endian targets. * emulparams/elf32lppc.sh: Update comment. * emulparams/elf32lppclinux.sh: New.
2013-04-21 PR gold/15355Alan Modra2-24/+32
* layout.cc (Layout::segment_precedes): Allow more than one segment with the same type and flags.
2013-04-15gold/Cary Coutant2-1/+7
* layout.cc (Layout::set_relocatable_section_offsets): Don't allocate space in file for BSS sections.
2013-04-15gold/Cary Coutant2-4/+15
* script-sections.cc (Orphan_output_section): Reset address to zero after each orphaned section for relocatable links.
2013-04-15gold/Cary Coutant6-13/+91
* symtab.cc (Symbol_table::sized_write_globals): Subtract section starting address for relocatable link. * testsuite/Makefile.am (script_test_11): New test. * testsuite/Makefile.in: Regenerate. * testsuite/script_test_11.c: New source file. * testsuite/script_test_11.t: New linker script.
2013-04-13 * powerpc.cc (Stub_control::can_add_to_stub_group): Don't setAlan Modra2-12/+53
owner when sections are not adjacent and exceed group size. (Target_powerpc::group_sections): Handle corner case. (Target_powerpc::Branch_info::make_stub): Handle case where stub table doesn't exist due to branches in non-exec sections. (Target_powerpc::Relocate::relocate): Likewise.
2013-04-11 PR gold/15354Alan Modra2-6/+12
* powerpc.cc (Target_powerpc::make_brlt_section): Name section .branch_lt to match bfd ld. Adjust comments throughout file.
2013-04-04 GCC PR c++/56840Ian Lance Taylor2-11/+29
* object.cc (do_layout_deferred_sections): Handle .eh_frame sections before checking whether they are included in the link.
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.