aboutsummaryrefslogtreecommitdiff
path: root/gold
AgeCommit message (Collapse)AuthorFilesLines
2010-12-09 * layout.cc (Layout::layout_gnu_stack): Add warnings for executableCary Coutant5-5/+33
stack. * layout.h (Layout::layout_gnu_stack): Add pointer to Object parameter; change all callers. * object.cc (Sized_relobj::do_layout): Adjust call to layout_gnu_stack. * options.h (warn_execstack): New option.
2010-12-082010-12-07 Doug Kwan <dougkwan@google.com>Doug Kwan2-1/+9
* arm.cc (Target_arm::Scan::get_reference_flags): Treat R_ARM_PREL31 like function call relocations.
2010-12-07 * archive.cc (Archive::get_elf_object_for_member): PermitIan Lance Taylor2-16/+30
punconfigured to be NULL. (Archive::read_symbols): Pass NULL to get_elf_object_for_member. (Archive::include_member): Pass NULL to get_elf_object_for_member if we searched for the archive and this is the first included object.
2010-12-01 * dwarf_reader.h (class Sized_dwarf_line_info): AddIan Lance Taylor5-8/+54
track_relocs_type_ field. * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info): Set track_relocs_type_. (Sized_dwarf_line_info::process_one_opcode): Ignore the section contents when using RELA relocs. (Sized_dwarf_line_info::read_relocs): Add the reloc addend to reloc_map_. * reloc.cc (Track_relocs::next_addend): New function. * reloc.h (class Track_relocs): Declare next_addend.
2010-12-01 * testsuite/icf_virtual_function_folding_test.cc (class Bar): AddIan Lance Taylor2-0/+6
virtual destructor.
2010-12-01 * README: Update compilers known to work and fail.Ian Lance Taylor2-2/+6
2010-11-23 * configure.ac: For --enable-gold, handle value `default' instead ofNick Clifton3-26/+49
`both*'. New configure option --{en,dis}able-ld. ld, gold/ * configure.ac: For --enable-gold, handle value `default' instead of `both*'. Always install ld as ld.gold, install as ld if gold is the default.
2010-11-182010-11-18 Doug Kwan <dougkwan@google.com>Doug Kwan2-5/+13
* expression.cc (BINARY_EXPRESSION): Initialize left_alignment and right_alignment to be zero. Store result alignment only if it is greater than existing alignment.
2010-11-17 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):Cary Coutant2-10/+19
Check for ".zdebug_line".
2010-11-16 * output.h (Output_segment::set_section_addresses): Pass increase_relroCary Coutant4-5/+32
by reference; adjust all callers. * output.cc (Output_segment::set_section_addresses): Adjust references to increase_relro. Add padding to *increase_relro when ORDER_RELRO_LAST list is empty. (Output_segment::set_offset): Assert if PT_GNU_RELRO segment does not end at page boundary.
2010-11-16 PR gold/12220Cary Coutant3-41/+54
* layout.cc (Layout::choose_output_section): Transform names of compressed sections even when using a script with a SECTIONS clause. (Layout::output_section_name): Remove code to transform compressed debug section names. * output.cc (Output_section::add_input_section): Use uncompressed section size when tracking input sections.
2010-11-11gold/Richard Sandiford7-229/+539
* symtab.h (Symbol::NON_PIC_REF): Remove. (Symbol::RELATIVE_REF, Symbol::TLS_REF): New Reference_flags. (Symbol::FUNCTION_CALL): Renumber. Reword comment. (Symbol::needs_dynamic_reloc): Don't check NON_PIC_REF. (Symbol::use_plt_offset): Take a flags argument and pass it directly to needs_dynamic_reloc. Restrict check for undefined weak symbols to function calls. * arm.cc (Target_arm::Scan::get_reference_flags): New function. (Target_arm::Scan::global): Use it. (Target_arm::Scan::scan_reloc_for_stub): Likewise. (Target_arm::Relocate::relocate): Likewise. (Target_arm::Relocate::should_apply_static_reloc): Replace flags parameter with an r_type parameter. Use get_reference_flags to get the flags. (Target_arm::Relocate::relocate): Update accordingly. * i386.cc (Target_i386::Scan::get_reference_flags): New function. (Target_i386::Scan::reloc_needs_plt_for_ifunc): Use it. (Target_i386::Scan::global): Likewise. (Target_i386::Relocate::relocate): Likewise. (Target_i386::Relocate::should_apply_static_reloc): Replace flags parameter with an r_type parameter. Use get_reference_flags to get the flags. (Target_i386::Relocate::relocate): Update accordingly. * powerpc.cc (Target_powerpc::Scan::get_reference_flags): New function. (Target_powerpc::Scan::global): Use it. (Target_powerpc::Scan::scan_reloc_for_stub): Likewise. (Target_powerpc::Relocate::relocate): Likewise. * sparc.cc (Target_sparc::Scan::get_reference_flags): New function. (Target_sparc::Scan::global): Use it. (Target_sparc::Scan::scan_reloc_for_stub): Likewise. (Target_sparc::Relocate::relocate): Likewise. * x86_64.cc (Target_x86_64::Scan::get_reference_flags): New function. (Target_x86_64::Scan::reloc_needs_plt_for_ifunc): Use it. (Target_x86_64::Scan::global): Likewise. (Target_x86_64::Relocate::relocate): Likewise.
2010-11-092010-11-08 Doug Kwan <dougkwan@google.com>Doug Kwan4-100/+241
Cary Coutant <ccoutant@google.com> * arm.cc (Arm_exidx_merge_section::build_contents): New method. (Arm_exidx_merge_section::section_contents_): New data member. (Arm_input_section::Arm_input_section): Initialize original_contents_. (Arm_input_section::~Arm_input_section): De-allocate memory. (Arm_input_section::original_contents_): New data member. (Arm_exidx_fixup::process_exidx_section): Pass EXIDX section contents in parameters instead of calling Object::section_contents without locking. (Arm_output_section::group_section): New parameter TASK. Pass it to callees that need locking objects. (Arm_output_section::fix_exidx_coverage): New parameter TASK. Use it to lock EXIDX input sections. Fix a formatting issue. Call Arm_exidx_merged_section::build_contents to create merged section contents. (Arm_output_section::create_stub_group): New parameter TASK. Use it to lock object of stub table owner. (Arm_exidx_input_section::Arm_exidx_input_section): Add new parameter TEXT_SIZE to initialize data member TEXT_SIZE_. (Arm_exidx_input_section::addralign): Fix typo in comment. (Arm_exidx_input_section::text_size): New method. (Target_arm::do_relax): New parameter TASK. Pass it to callees that require locking objects. Lock objects before scanning for stubs and updating local symbols. (Arm_input_section<big_endian>::init): Copy contents of original input section. (Arm_input_section<big_endian>::do_write): Use saved contents of original input section instead of calling Object::section_contents without locking. (Arm_exidx_cantunwind::do_fixed_endian_write): Find out text section size without calling Object::section_size(). (Arm_exidx_merged_section::Arm_exidx_merged_section): Add sanity check for size. Allocate a buffer for merged EXIDX entries. (Arm_exidx_merged_section::build_contents): New method. (Arm_exidx_merged_section::do_write): Move merge section contents building code to Arm_exidx_merged_section::build_contetns. Write out contetns in buffer instead of building it on the fly. (Arm_relobj::make_exidx_input_section): Also pass text section size to Arm_exidx_input_section constructor. (Arm_relobj::do_read_symbols): Fix memory leak. Fix a formatting issue. (Arm_dynobj::do_read_symbols): Fix memory leak. * layout.cc (Layout::finalize): Pass TASK to Target::relax(). * target.h: (class Task): Add forward declaration. (Target::relax): Add new parameter TASK and pass it to Target::do_relax(). (Target::do_relax):: New parameter TASK. Fix a formatting issue.
2010-11-05 PR gold/10708Cary Coutant6-3/+64
* copy-relocs.cc (Copy_relocs::emit_copy_reloc): Hold a lock on the object when reading from the file. * gold.cc (queue_middle_tasks): Hold a lock on the object when doing second layout pass. * icf.cc (preprocess_for_unique_sections): Hold a lock on the object when reading section contents. (get_section_contents): Likewise. (icf::find_identical_sections): Likewise. * mapfile.cc (Mapfile::print_discarded_sections): Hold a lock on the object when reading from the file. * plugin.cc (Plugin_manager::layout_deferred_objects): Hold a lock on the object when doing deferred section layout.
2010-11-03 PR ld/12001Nick Clifton4-0/+37
* ldlang.c (ldlang_def_chain_list): New variable. Contains a list of symbols defined via the --defsym command line option and currently waiting assignment. (insert_defined): Add a defined symbol to the symbol table. (ldlang_add_def): Add a entry to the ldlang_def_chain_list. (lang_place_defineds): Walk ldlang_def_chain_list defining the symbols. (lang_process): Call lang_place_defineds. (lang_add_assignment): If the assignment has come from a --defsym command line option then call lang_add_def. * ld-script/default-script2.d: Fix expected address for text section. PR gold/12001 * script.h (class Symbol_assignment: name): New member. Returns the name of the symbol. * scrfipt.cc (Script_options::is_pending_assignment): New member. Returns true if the given symbol name is on the list of assignments wating to be processed. * archive.cc (should_incldue_member): If the symbol is undefined, check to see if it is on the list of symbols pending assignment.
2010-11-03 * script-sections.cc (Script_sections::find_memory_region): CheckIan Lance Taylor2-0/+6
for a NULL output section pointer.
2010-10-292010-10-29 Doug Kwan <dougkwan@google.com>Doug Kwan4-4/+41
* arm.cc (Arm_outout_section::fix_exidx_coverage): Adjust call to Output_section::add_relaxed_input_section. * output.cc (Output_section::add_relaxed_input_section): Add new arguments LAYOUT and NAME. Set section order index. (Output_section::convert_input_sections_in_list_to_relaxed_sections): Copy section order index. * output.h (Output_section::add_relaxed_input_section): Add new arguments LAYOUT and NAME.
2010-10-29 * testsuite/Makefile.am: Move gcctestdir/ld rule toIan Lance Taylor3-16/+26
NATIVE_OR_CROSS_LINKER. * testsuite/Makefile.in: Regenerate.
2010-10-202010-10-20 Doug Kwan <dougkwan@google.com>Doug Kwan3-1/+16
* arm.cc (Arm_relobj::do_read_symbols): Warn about ARM EXIDX sections without SHF_LINK_ORDER flags. * layout.cc (Layout::choose_output_section): Do not filter SHF_LINK_ORDER flag in a relocatable link.
2010-10-18 * output.h (Output_segment::set_section_addresses): Change functionCary Coutant4-24/+45
signature. Update all callers. * output.cc (Output_segment::is_first_section_relro): Ignore TLS sections. (Output_segment::set_section_addresses): Align after last TLS section. Add padding before last relro section instead of after.
2010-10-172010-10-17 Doug Kwan <dougkwan@google.com>Doug Kwan2-5/+8
* gold/arm.cc (Target_arm::got_section): Use correct order and set GOT output section to be writable.
2010-10-16 * layout.cc (Layout::set_segment_offsets): Don't try to realign dataCary Coutant7-15/+129
segment that has been aligned for relro. * output.cc (Output_segment::set_section_addresses): Change signature; adjust all callers. Account for alignment when totalling size of relro sections. * output.h (Output_segment::set_section_addresses): Change signature. * testsuite/Makefile.am (relro_test.sh, relro_test.stdout): New targets. * testsuite/Makefile.in: Regenerate. * testsuite/relro_test.cc: Add alignment attributes to test proper alignment of relro sections when padding is necessary. * testsuite/relro_test.sh: New script.
2010-10-14 * debug.h (DEBUG_INCREMENTAL): New flag.Cary Coutant14-14/+183
(debug_string_to_enum): Add DEBUG_INCREMENTAL). * gold.cc (queue_initial_tasks): Check parameters for incremental link mode. * incremental.cc (report_command_line): Ignore all forms of --incremental. * layout.cc (Layout::Layout): Check parameters for incremental link mode. * options.cc (General_options::parse_incremental): New function. (General_options::parse_no_incremental): New function. (General_options::parse_incremental_full): New function. (General_options::parse_incremental_update): New function. (General_options::incremental_mode_): New data member. (General_options::finalize): Check incremental_mode_. * options.h (General_options): Update help text for --incremental. Add --no-incremental, --incremental-full, --incremental-update. (General_options::Incremental_mode): New enum type. (General_options::incremental_mode): New function. (General_options::incremental_mode_): New data member. * parameters.cc (Parameters::incremental_mode_): New data member. (Parameters::set_options): Set incremental_mode_. (Parameters::set_incremental_full): New function. (Parameters::incremental): New function. (Parameters::incremental_update): New function. (set_parameters_incremental_full): New function. * parameters.h (Parameters::set_incremental_full): New function. (Parameters::incremental): New function. (Parameters::incremental_update): New function. (Parameters::incremental_mode_): New data member. (set_parameters_incremental_full): New function. * plugin.cc (Plugin_manager::add_input_file): Check parameters for incremental link mode. * reloc.cc (Sized_relobj::do_read_relocs): Likewise. (Sized_relobj::do_relocate_sections): Likewise. * testsuite/Makefile.am (incremental_test): Use --incremental-full option. * testsuite/Makefile.in: Regenerate. * testsuite/incremental_test.sh: Filter all forms of --incremental.
2010-10-12Correct ChangeLog attribution.Ian Lance Taylor1-1/+1
2010-10-12 * script-sections.h (class Script_sections): MakeIan Lance Taylor10-352/+574
Sections_elements typedef public. * script-sections.cc (class Sort_output_sections): Add elements_ field. Add constructor which sets it; change all callers. (Sort_output_sections::is_before): New function. (Sort_output_sections::operator()): Call is_before. * configure.ac (NATIVE_OR_CROSS_LINKER): New automake conditional. * testsuite/script_test_10.sh: New test. Test script section order. * testsuite/script_test_10.t: Likewise. * testsuite/script_test_10.s: Likewise. * testsuite/Makefile.am: Wrap the cross linker tests and the common tests into NATIVE_OR_CROSS_LINKER. (check_SCRIPTS): Add script_test_10.sh. (check_DATA): Add script_test_10.stdout. (script_test_10.o, script_test_10): New targets. (script_test_10.stdout): New target. * configure, testsuite/Makefile.in: Regenerate.
2010-10-12 * arm.cc (Target_arm::Scan::local): Report the unsupported relocIan Lance Taylor2-9/+23
error for the deprecated relocations. (Target_arm::Scan::global): Likewise. (Target_arm::Relocate::relocate): Likewise.
2010-10-12gold/Richard Sandiford2-0/+7
* fileread.cc (Input_file::find_file): Initialize *found_name and *namep when using the fallback search for case 4.
2010-10-11 * options.h (class General_options): Redefine -z lazy as an alias forCary Coutant2-3/+8
the negation of -z now.
2010-10-11 * resolve.cc (symbol_to_bits): Report the value of the unsupportedIan Lance Taylor2-1/+6
binding.
2010-10-06 * script-sections.cc(class Memory_region): RemoveNick Clifton6-107/+398
current_lma_offset_ field. Rename current_vma_offset_ to current_offset_. Add last_section_ field. (Memory_region::get_current_vma_address): Rename to get_current_address. (Memory_region::get_current_lma_address): Delete. (Memory_region::increment_vma_offset): Rename to increment_offset. (Memory_region::increment_lma_offset): Delete. (Memory_region::attributes_compatible): New method. Returns true if the provided section is compatible with the region. (Memory_region::get_last_section): New method. Returns the last section to use the region. (Memory_region::set_last_section): New method. Stores the last section to use the region. (Script_sections::block_in_region): New method. Returns true if a block of memory is contained within a region. (Script_sections::find_memory_region): New method. Locates a memory region to be used to set a VMA or LMA address. (Output_section_definition::set_section_addresses): Add code to check for addresses set by memory regions. (Output_segment::set_section_addresses): Remove memory region walking code. (Script_sections::create_segment): Add a warning if a header segment is created outside of any region. * script-sections.h (class Script_sections): Add prototypes for find_memory_region and block_in_region methods. * testsuite/memory_test.s: Use .long instead of .word. * testsuite/memory_test.t: Add some more output sections. * testsuite/memory_test.sh: Update expected output. * ld.texinfo: Update description of computation of VMA and LMA addresses for output sections. * ld-scripts/rgn-at5.t: Add some more output sections. * ld-scripts/rgn-at5.d: Update expected output.
2010-10-022010-10-02 Doug Kwan <dougkwan@google.com>Doug Kwan3-10/+13
* symtab.cc (Symbol_table::Symbol_table_hash::operator()): Move defintion to symtab.h * symtab.h (Symbol_table::Symbol_table_hash::operator()): Change declaration to defintion.
2010-10-01 * expression.cc (eval): Replace dummy argument with NULL.Nick Clifton3-35/+60
(eval_maybe_dot): Check for a NULL result section pointer. (Symbol_expression::value): Likewise. (Dot_expression::value): Likewise. (BINARY_EXPRESSION): Likewise. (Max_expression::value): Likewise. (Min_expression::value): Likewise. (Absolute_expression::value): Likewise. (Addr_expression::value_from_output_section): Likewise. (Loaddddr_expression::value_from_output_section): Likewise. (Segment_start_expression::value): Likewise. * script-sections.cc (Sections_elememt_dot_assignment::finalize_symbols): Replace dummy argument with NULL. (Sections_elememt_dot_assignment::set_section_addresses): Likewise. (Output_data_expression::do_write_to_buffer): Likewise. (Output_section_definition::finalize_symbols): Likewise. (Output_section_definition::set_section_addresses): Likewise.
2010-09-302010-09-30 Doug Kwan <dougkwan@google.com>Doug Kwan2-2/+6
* gold/testsuite/arm_branch_out_of_range.sh: Fix broken tests.
2010-09-282010-09-28 Sriraman Tallam <tmsriram@google.com>Sriraman Tallam5-1/+28
* target.h (Target::can_icf_inline_merge_sections): New virtual function. * x86_64.cc (Target__x86_64::can_icf_inline_merge_sections): New virtual function. * i386.cc (Target_i386::can_icf_inline_merge_sections): New virtual function. * icf.cc (get_section_contents): Inline merge sections only when target allows it.
2010-09-27Fix unportable shell quoting.Ralf Wildenhues2-1/+5
/: Sync from GCC: PR bootstrap/44621 * configure.ac: Fix unportable shell quoting. * configure: Regenerate. config/: * po.m4 (AM_PO_SUBDIRS): Fix unportable shell quoting. bfd/: * configure: Regenerate. gas/: * configure: Regenerate. gold/: * configure: Regenerate. intl/: * configure: Regenerate. ld/: * configure: Regenerate. opcodes/: * configure: Regenerate. binutils/: * configure: Regenerate. gprof/: * configure: Regenerate.
2010-09-18 * testsuite/Makefile.am (memory_test.o): New target.Ian Lance Taylor3-4/+10
(memory_test): Depend on memory_test.o, gcctestdir/ld, and memory_test.t. * testsuite/Makefile.in: Rebuild.
2010-09-18 * testsuite/memory_test.sh: Adjust for change of 2010-09-10.Ian Lance Taylor2-1/+5
2010-09-172010-09-17 Doug Kwan <dougkwan@google.com>Doug Kwan4-40/+56
* arm.cc (Target_arm::Relocate::relocate): Ignore symbol type and defintion if relocation uses GOT entries of the symbol. * testsuite/icf_safe_test.sh: Fix test. * testsuite/icf_safe_so_test.sh: Fix test.
2010-09-16 * script_sections.cc (class Memory_region): Remove "NULL" fromCary Coutant2-2/+7
vector initializations.
2010-09-15 * incremental.cc (Output_section_incremental_inputs::write_info_blocks):Cary Coutant2-0/+7
Resolve forwarding symbols.
2010-09-152010-09-15 Doug Kwan <dougkwan@google.com>Doug Kwan7-1/+26
* gold/testsuite/script_test_3.t: Add ARM special sections. * gold/testsuite/script_test_4.t: Same. * gold/testsuite/script_test_5.t: Same. * gold/testsuite/script_test_6.t: Same. * gold/testsuite/script_test_7.t: Same. * gold/testsuite/script_test_7.t: Same. * gold/testsuite/thumb_blx_out_of_range.s: Fix instruction alignment.
2010-09-14 * x86_64.cc (Target_x86_64::saw_tls_block_reloc_): Remove member.Cary Coutant2-32/+47
(Target_x86_64::Relocate::relocate_tls): Replace check for saw_tls_block_reloc_ with test for executable section.
2010-09-12 * symtab.h (Symbol::needs_dynamic_reloc): Non-PIC calls fromCary Coutant4-4/+44
position-independent executables to shared libraries need dynamic relocations. (Symbol::may_need_copy_reloc): Do not generate COPY relocs in position-independent executables. * testsuite/Makefile.am (two_file_mixed_pie_test): New test. * testsuite/Makefile.in: Regenerate.
2010-09-10 PR gold/11997Nick Clifton2-8/+7
* testsuite/memory_test.t: Discard any sections that are not needed.
2010-09-09Support building gold with gcc 4.2/4.3.H.J. Lu3-2/+10
2010-09-09 H.J. Lu <hongjiu.lu@intel.com> PR gold/11996 * object.cc (Sized_relobj::do_finalize_local_symbols): Remove "This::" to work around a bug in gcc 4.2. * testsuite/ifuncmain7.c (foo_ifunc): Add __attribute__ ((used)).
2010-09-09Add missing ChangeLog entries.H.J. Lu1-1/+8
2010-09-092010-09-09 Rafael Espindola <espindola@google.com>Rafael Ávila de Espíndola3-6/+28
* layout.cc (Layout::attach_allocated_section_to_segment): Don't put sections with different PF_X flags in the same segment. (Layout::find_first_load_seg): Search all segments to find the first one. * options.h (rosegment): New.
2010-09-092010-09-03 Rafael Espindola <espindola@google.com>Rafael Ávila de Espíndola2-15/+11
* layout.cc (Layout::set_segment_offsets): Always advance to a new page.
2010-09-082010-09-08 Doug Kwan <dougkwan@google.com>Doug Kwan19-166/+1040
* arm.cc (Arm_exidx_cantunwind::do_print_to_mapfile): New method. (Arm_relobj::do_relocate_sections): Add new parameter for output file to match the parent. (Target_arm::scan_reloc_section_for_stubs): Use would-be final values of local symbols instead of input values. Update code to track changes in gold::relocate_section. * object.cc (Sized_relobj::compute_final_local_value): New methods. (Sized_relobj::compute_final_local_value_internal): New methods. (Sized_relobj::do_finalize_local_symbols): Move code from loop body into private version of Sized_relobj::compute_final_local_value. Call the inline method. * object.h (Symbol_value::Symbol_value): Define destructor. Free merged symbol value if there is one. (Symbol_value::has_output_value): New method defintiion. (Sized_relobj::Compute_final_local_value_status): New enum type. (Sized_relobj::compute_final_local_value): New methods. (Sized_relobj::compute_final_local_value_internal): New methods. * Makefile.am (check_SCRIPTS): Add arm_branch_out_of_range.sh and arm_cortex_a8.sh. (thumb_bl_out_of_range_local, arm_cortex_a8_b_cond, arm_cortex_a8_bl, arm_cortex_a8_blx, arm_cortex_a8_local, arm_corte_a8_local_reloc): New tests. * Makefile.in: Regenerate. * testsuite/arm_bl_out_of_range.s: Update test. * testsuite/thumb_bl_out_of_range.s: Ditto. * testsuite/thumb_blx_out_of_range.s: Ditto. * testsuite/arm_branch_out_of_range.sh: New file. * testsuite/arm_cortex_a8.sh: Ditto. * testsuite/arm_cortex_a8_b.s: Ditto. * testsuite/arm_cortex_a8_b_cond.s: Ditto. * testsuite/arm_cortex_a8_b_local.s: Ditto. * testsuite/arm_cortex_a8_bl.s: Ditto. * testsuite/arm_cortex_a8_blx.s: Ditto. * testsuite/arm_cortex_a8_local.s: Ditto. * testsuite/arm_cortex_a8_local_reloc.s: Ditto. * testsuite/thumb_bl_out_of_range_local.s: Ditto.
2010-09-082010-09-08 Rafael Espindola <espindola@google.com>Rafael Ávila de Espíndola3-6/+6
* Makefile.am (memory_test.stdout): Run readelf with -W * Makefile.in: Regenerate. * testsuite/memory_test.sh: Make the regexps accept both 32 and 64 bit outputs.