aboutsummaryrefslogtreecommitdiff
path: root/gold
AgeCommit message (Collapse)AuthorFilesLines
2009-12-30 * layout.cc (Layout::Layout): Initialize increase_relro_.Ian Lance Taylor13-159/+336
(Layout::get_output_section): Add is_relro, is_last_relro, and is_first_non_relro parameters. Change all callers. (Layout::choose_output_section): Likewise. (Layout::add_output_section_data): Likewise. (Layout::make_output_section): Likewise. (Layout::set_segment_offsets): Clear increase_relro when using a linker script. * layout.h (class Layout): Add increase_relro method. Add increase_relro_ field. Update declarations. * output.cc (Output_section::Output_section): Initialize is_last_relro_ and is_first_non_relro_. (Output_segment::add_output_section): Group relro sections is do_sort is true. Handle is_last_relro and is_first_non_relro. (Output_segment::maximum_alignment): Remove relro handling. (Output_segment::set_section_addresses): Add increase_relro parameter. Change all callers. Add initial alignment to align relro sections on separate page. Remove old relro handling. (Output_segment::set_section_list_addresses): Remove in_relro parameter. Change all callers. (Output_segment::set_offset): Add increase parameter. Change all callers. Remove old relro handling. * output.h (class Output_section): Add new methods: is_last_relro, set_is_last_relro, is_first_non_relro, set_is_first_non_relro. Add is_last_relro_ and is_first_non_relro_ fields. * i386.cc (Target_i386::got_section): Don't call set_is_relro. Create separate .got.plt section. Call increase_relro. * x86_64.cc (Target_x86_64::got_section): Likewise. * testsuite/relro_script_test.t: Add .got.plt.
2009-12-30 PR 10450Ian Lance Taylor3-4/+42
* layout.cc (Layout::Layout): Initialize dynamic_symbol_ field. (Layout::create_initial_dynamic_sections): Set dynamic_symbol_. (Layout::finalize): Call set_dynamic_symbol_size. (Layout::set_dynamic_symbol_size): New function. * layout.h (class Layout): Add dynamic_symbol_ field. Declare set_dynamic_symbol_size.
2009-12-30 PR 10450Ian Lance Taylor3-6/+45
* output.h (class Output_section): Add is_entsize_zero_ field. * output.cc (Output_section::Output_section): Initialize is_entsize_zero_. (Output_section::set_entsize): If two different entsizes are requested, force it to zero. (Output_section::add_input_section): Set flags for .debug_str before updating section flags. Set entsize. (Output_section::update_flags_for_input_section): Set SHF_MERGE and SHF_STRING if all input sections have those flags.
2009-12-292009-12-29 Rafael Espindola <espindola@google.com>Rafael Ávila de Espíndola3-2/+7
* main.cc (main): Fix the sys time reporting. * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time reporting.
2009-12-29* options.cc (General_options::parse_version): Allow -v to exitSriraman Tallam2-0/+6
without an error if there is nothing to link.
2009-12-29 * configure.ac: Set the MCMODEL_MEDIUM conditional to false ifIan Lance Taylor3-2/+45
using a version of gcc before 4.1. * configure: Rebuild.
2009-12-292009-12-28 Chris Demetriou <cgd@google.com>Chris Demetriou2-1/+6
* attributes.cc (Output_attributes_section_data::do_write): Use std::vector::front rather than std::vector::data.
2009-12-29 * symtab.h (class Symbol_table): Add enum Defined.Ian Lance Taylor14-70/+177
* resolve.cc (Symbol_table::should_override): Add defined parameter. Change all callers. Test whether object is NULL before calling a method on it. (Symbol_table::report_resolve_problem): Add defined parameter. Change all callers. (Symbol_table::should_override_with_special): Likewise. * symtab.cc (Symbol_table::define_in_output_data): Add defined parameter. Change all callers. (Symbol_table::do_define_in_output_data): Likewise. (Symbol_table::define_in_output_segment): Likewise. (Symbol_table::do_define_in_output_segment): Likewise. (Symbol_table::define_as_constant): Likewise. (Symbol_table::do_define_as_constant): Likewise. * script.h (class Symbol_assignment): Add is_defsym parameter to constructor; change all callers. * script.cc (Script_options::add_symbol_assignment): Add is_defsym parameter. Change all callers. Add is_defsym_ field. (class Parser_closure): Add parsing_defsym parameter to constructor; change all callers. Add parsing_defsym accessor function. Add parsing_defsym_ field.
2009-12-29 * object.cc (Relobj::is_section_name_included): Fix formatting.Ian Lance Taylor2-2/+3
2009-12-29 * gold.cc (queue_middle_tasks): Fix formatting.Ian Lance Taylor2-1/+5
2009-12-24 * x86_64.cc (Target_x86_64::do_calls_non_split): RecognizeIan Lance Taylor2-1/+7
-fsplit-stack prologue when using %r11.
2009-12-23 * i386.cc (Target_i386::do_calls_non_split): RecognizeIan Lance Taylor2-1/+8
-fsplit-stack prologue for a function with a static chain.
2009-12-222009-12-21 Sriraman Tallam <tmsriram@google.com>Sriraman Tallam2-2/+9
* options.cc (General_options::parse_version): Make -v continue and do the link like GNU ld does.
2009-12-172009-12-17 Rafael Avila de Espindola <espindola@google.com>Rafael Ávila de Espíndola10-11/+236
* Makefile.am (CCFILES): Add timer.cc. (HFILES): Add timer.h. * configure.ac: Check for sysconf and times. * main.cc: include timer.h. (main): Use Timer instead of get_run_time. * timer.cc: New. * timer.h: New. * workqueue.cc: include timer.h. (Workqueue::find_and_run_task): Report user, sys and wall time. * Makefile.in: Regenerate. * config.in: Regenerate. * configure: Regenerate.
2009-12-172009-12-16 Doug Kwan <dougkwan@google.com>Doug Kwan6-10/+50
* arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated sections. * object.cc (Sized_relobj::do_finalize_local_symbols): Handle relaxed input sections. * output.cc (Output_section::find_relaxed_input_section): Change return type to Output_relaxed_input_section pointer. Adjust code for new type of relaxed_input_section_map_. * output.h (Output_section::find_relaxed_input_section): Change return type to Output_relaxed_input_section pointer. (Output_section::Output_relaxed_input_section_by_input_section_map): New type. (Output_section::relaxed_input_section_map_): Change type to Output_section::Output_relaxed_input_section_by_input_section_map. * symtab.cc (Symbol_table::compute_final_value): Handle relaxed input section.
2009-12-15 * layout.cc (Layout::create_shstrtab): Only write out after inputIan Lance Taylor2-4/+13
sections if we are compressing debug sections.
2009-12-15 * archive.cc (Archive::add_symbols): Only look up a symbol withoutIan Lance Taylor2-0/+6
a version if there is, in fact, a version.
2009-12-14 Revert -Wshadow changes, all changes from:Ian Lance Taylor53-1768/+1778
2009-12-11 Doug Kwan <dougkwan@google.com> 2009-12-11 Nick Clifton <nickc@redhat.com> * configure.ac: Remove -Wshadow when setting WARN_CXXFLAGS.
2009-12-122009-12-11 Doug Kwan <dougkwan@google.com>Doug Kwan5-23/+32
* arm.cc (Target_arm::do_finalize_sections): Fix build breakage due to -Wshadow. * attributes.cc (Object_attribute::size): Ditto. (Attributes_section_data::size): Ditto. (Attributes_section_data::Attributes_section_data): Ditto. (Output_attributes_section_data::do_write): Ditto. * attributes.h (Object_attribute::set_type): Ditto. * testsuite/tls_test_main.cc (safe_lock, safe_unlock): Ditto.
2009-12-11Add -Wshadow to the gcc command line options used when compiling the binutils.Nick Clifton49-1747/+1797
Fix up all warnings generated by the addition of this switch.
2009-12-102009-12-10 Doug Kwan <dougkwan@google.com>Doug Kwan2-18/+1004
elfcpp/ChangeLog * arm.h: New enums for EABI object attribute tags and values. gold/ChangeLog * arm.cc (attributes.h): New include. (Arm_relobj::Arm_relobj): Initialize attributes_section_data_. (Arm_relobj::~Arm_relobj): Delete object pointed by attributes_section_data_. (Arm_relobj::attributes_section_data): New method definition. (Arm_relobj::attributes_section_data_): New data member declaration. (Arm_dynobj::Arm_dynobj): Initialize attributes_section_data_. (Arm_dynobj::~Arm_dynobj): Delete object pointed by attributes_section_data_. (Arm_dynobj::attributes_section_data): New method definition. (Arm_dynobj::attributes_section_data_): New data member declaration. (Target_arm::Target_arm): Initialize attributes_section_data_. Change initialization value of may_use_blx_ to false. (Target_arm::using_thumb2, Target_arm::using_thumb_only, Target_arm::may_use_arm_nop, Target_arm::may_use_thumb2_nop): Use object attributes to compute results instead of hard-coding. (Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order, Target_arm::get_secondary_compatible_arch, Target_arm::set_secondary_compatible_arch Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name, Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes): New method declarations. (Target_arm::get_aeabi_object_attribute): New method definition. (Target_arm::attributes_section_data_): New data member declaration. (read_arm_attributes_section): New template definition. (Arm_relobj::do_read_symbols): Read attributes section if it exists. (Arm_dynobj::do_read_symbols): Ditto. (Target_arm::do_finalize_sections): Merge attributes sections from input. Check for BLX use after attributes section merging. Fix __exidx_start and __exidx_end visibility. Create an .ARM.attributes section if necessary. (Target_arm::get_secondary_compatible_arch, Target_arm::set_secondary_compatible_arch, Target_arm::tag_cpu_arch_combine, Target_arm::aeabi_enum_name, Target_arm::tag_cpu_name_value, Target_arm::merge_object_attributes, Target_arm::do_attribute_arg_type, Target_arm::do_attributes_order): New method definitions.
2009-12-10 * plugin.cc (Plugin::load): Don't cast from void* to a functionIan Lance Taylor2-3/+10
pointer.
2009-12-10 * dynobj.cc (Sized_dynobj::do_read_symbols): Clear versionIan Lance Taylor2-1/+14
information fields.
2009-12-092009-12-09 H.J. Lu <hongjiu.lu@intel.com>H.J. Lu3-2/+8
* testsuite/Makefile.am (two_file_shared_1_pic_2_test_DEPENDENCIES): Replace two_file_shared_1.so with two_file_shared_2.so. * testsuite/Makefile.in: Regenerated.
2009-12-092009-12-08 Doug Kwan <dougkwan@google.com>Doug Kwan10-143/+1149
* Makefile.am (CCFILES): Add attributes.cc and int_encoding.cc. (HFILES): Add attributes.h and int_encoding.h. * Makefile.in: Regenerate. * dwarf_reader.cc (read_unsigned_LEB_128, read_signed_LEB_128): Move function definitions to int_encoding.cc * dwarf_reader.h (read_unsigned_LEB_128, read_signed_LEB_128): Move prototypes to int_encoding.h * reduced_debug_output.cc (int_encoding.h): New include. (write_unsigned_LEB_128, get_length_as_unsigned_LEB_128): Move function definitions to int_encoding.cc (insert_into_vector, read_from_pointer): Move template definitions to int_encoding.h * attributes.cc: New file. * attributes.h: New file. * int_encoding.cc: New file. * int_encoding.h: New file.
2009-12-072009-12-07 Rafael Avila de Espindola <espindola@google.com>Rafael Ávila de Espíndola2-63/+103
PR gold/11055 * incremental-dump.cc (dump_incremental_inputs): New. (main): Use dump_incremental_inputs.
2009-12-072009-12-07 H.J. Lu <hongjiu.lu@intel.com>H.J. Lu5-10/+36
PR gold/10893 * i386.cc (Target_i386::Scan::globa): Use is_func instead of checking elfcpp::STT_FUNC. (Target_i386::Relocate::relocate): Likewise. * x86_64.cc (Target_x86_64::Scan::global): Likewise. * symtab.cc (Symbol_table::sized_write_symbol): Turn IFUNC symbols from shared libraries into normal FUNC symbols. * symtab.h (Symbol): Add is_func and use it.
2009-12-062009-12-05 Doug Kwan <dougkwan@google.com>Doug Kwan9-10/+104
elfcpp/ChangeLog: * arm.h: Define enums for Tag_CPU_arch EABI attribute. gold/ChangeLog: * arm.cc (Target_arm::arm_info): Initialize new fields attributes_section and attributes_vendor. * i386.cc (Target_i386::i386_info): Same. * object.cc (Sized_relobj::do_layout): Skip attribute section. * gold/powerpc.cc (Target_powerpc::powerpc_info): Initialize new fields attributes_section and attributes_vendor. * sparc.cc (Target_sparc::sparc_info): Same. * target.h (Target::attributes_section, Target::attributes_vendor, Target::is_attributes_section, Target::attribute_arg_type, Target::attributes_order): New method definitions. (Target::Target_info::attributes_section, Target::Target_info::attributes_vendor): New fields. (Target::do_attribute_arg_type, Target::do_attributes_order): New virtual method definitions. * x86_64.cc (Target_x86_64::x86_64_info): Initialize new fields attributes_section and attributes_vendor. * testsuite/testfile.cc (Target_test::test_target_info): Same.
2009-12-062009-12-05 Doug Kwan <dougkwan@google.com>Doug Kwan2-45/+61
* arm.cc: Update comments about interworking and stub generation. (Target_arm::Relocate::reloc_is_non_pic): Update list of relocations considered as non-PIC. (Arm_relocate_functions::base_abs): Fix formatting. (Arm_relocate_functions::got_prel): Fix comment. Change interface of function to use GOT entry address instead of offset. (Target_arm::Scan::global): Issue an error if a symbol would need a PLT does not get one because it is untyped. Remove code to create dynamic symbols for relative branches. (Target_arm::Relocate::relocate: Use 0 instead of false since function takes unsigned integer instead of boolean.
2009-12-052009-12-05 H.J. Lu <hongjiu.lu@intel.com>H.J. Lu3-154/+73
* testsuite/Makefile.am (constructor_test_LDADD): New. Empty. (two_file_test_LDADD): Likewise. (common_test_1_LDADD): Likewise. (exception_test_LDADD) Likewise. (weak_test_LDADD): Likewise. (many_sections_test_LDADD): Likewise. (initpri1_LDADD): Likewise. (script_test_1_LDADD): Likewise. (script_test_2_LDADD): Likewise. (justsyms_LDADD): Likewise. (binary_test_LDADD): Likewise. (large_LDADD): Likewise. * testsuite/Makefile.in: Regenerated.
2009-12-052009-12-04 H.J. Lu <hongjiu.lu@intel.com>H.J. Lu3-0/+9
* resolve.cc (symbol_to_bits): Treat STB_GNU_UNIQUE as STB_GLOBAL. (Symbol_table::override_with_special): Likewise. (Symbol_table::add_from_object): Likewise.
2009-12-042009-12-04 Rafael Avila de Espindola <espindola@google.com>Rafael Ávila de Espíndola2-4/+5
* incremental.cc (Incremental_inputs::sized_create_inputs_section_data): Don't set the data_offset twice.
2009-12-04pdaRafael Ávila de Espíndola2-6/+20
2009-12-032009-12-03 Doug Kwan <dougkwan@google.com>Doug Kwan8-22/+57
* arm.cc: Remove comment about missing .ARM.exidx section symbols. (Target_arm::do_finalize_sections): Add parameter for symbol table pointer. Add __exidx_start and __exidx_end symbols as appropriate. * i386.cc (Target_i386::do_finalize_sections): Add an additional parameter for symbol table pointer. * layout.cc (Layout::finalize): Call Target::finalize_sections with an additional parameter for a pointer to symbol table. * powerpc.cc (Target_powerpc::do_finalize_sections): Add an additional parameter for a symbol table pointer. * sparc.cc (Target_sparc::do_finalize_sections): Ditto. * target.h (Target::finalize_sections, Target::do_finalize_sections): Ditto. * x86_64.cc (Target_x86_64::do_finalize_sections): Add an additional parameter for a symbol table pointer.
2009-12-032009-12-03 Rafael Avila de Espindola <espindola@google.com>Rafael Ávila de Espíndola3-162/+173
* incremental.cc (Incremental_inputs_header) (Incremental_inputs_header_write, Incremental_inputs_entry) (Incremental_inputs_entry_write): Move ... * incremental.h (Incremental_inputs_header) (Incremental_inputs_header_write, Incremental_inputs_entry) (Incremental_inputs_entry_write): here.
2009-12-032009-12-02 Rafael Avila de Espindola <espindola@google.com>Rafael Ávila de Espíndola3-0/+16
* incremental.cc (make_sized_incremental_binary): Set the target. Error if it is incompatible. * output.h (Output_file): Add filename method.
2009-12-022009-12-02 Rafael Avila de Espindola <espindola@google.com>Rafael Ávila de Espíndola2-6/+11
* incremental.cc (Incremental_inputs_entry): Remove unused argument from the get_* methods.
2009-12-022009-12-02 Rafael Avila de Espindola <espindola@google.com>Rafael Ávila de Espíndola3-0/+28
* incremental-dump.cc (main): Check that the offeset of a script is 0. * incremental.cc (Incremental_inputs::sized_create_inputs_section_data): Write 0 for the data_offset of scripts.
2009-12-022009-12-02 Rafael Avila de Espindola <espindola@google.com>Rafael Ávila de Espíndola5-0/+99
* testsuite/Makefile.am: Add the incremental_test.sh test. * testsuite/incremental_test.sh: New. * testsuite/incremental_test_1.c: New. * testsuite/incremental_test_2.c: New.
2009-12-012009-12-01 Rafael Avila de Espindola <espindola@google.com>Rafael Ávila de Espíndola2-2/+6
* incremental-dump.cc (main): Fix typos.
2009-11-272009-11-27 Rafael Avila de Espindola <espindola@google.com>Rafael Ávila de Espíndola2-1/+7
PR gold/11025 * incremental-dump.cc (main): Use llu to print 64 bit values.
2009-11-27Add $(THREADSLIB) $(LIBDL) to incremental-dump.H.J. Lu3-4/+18
2009-11-26 Per Øyvind Karlsen <peroyvind@mandriva.org> H.J. Lu <hongjiu.lu@intel.com> * Makefile.am (incremental_dump_DEPENDENCIES): Add $(THREADSLIB) $(LIBDL). (incremental_dump_LDADD): Likewise. * Makefile.in: Regenerated.
2009-11-252009-11-25 Doug Kwan <dougkwan@google.com>Doug Kwan3-73/+41
Revert: 2009-11-25 Doug Kwan <dougkwan@google.com> * arm.cc (Target_arm::Target_arm): Move method definition outside of class definition. Add code to handle --target1-rel, --target1-abs and --target2= options. (Target_arm::get_reloc_reloc_type): Change method to be non-static and const. (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data member declaration. (Target_arm::Scan::local, Target_arm::Scan::global, Target_arm::Relocate::relocate, Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust call to Target_arm::get_real_reloc_type. (Target_arm::get_real_reloc_type): Use command line options to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2. * options.h (--target1-rel, --target1-abs, --target2): New ARM-only options.
2009-11-252009-11-25 Doug Kwan <dougkwan@google.com>Doug Kwan3-19/+91
* arm.cc (Target_arm::Target_arm): Move method definition outside of class definition. Add code to handle --target1-rel, --target1-abs and --target2= options. (Target_arm::get_reloc_reloc_type): Change method to be non-static and const. (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data member declaration. (Target_arm::Scan::local, Target_arm::Scan::global, Target_arm::Relocate::relocate, Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust call to Target_arm::get_real_reloc_type. (Target_arm::get_real_reloc_type): Use command line options to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2. * options.h (--target1-rel, --target1-abs, --target2): New ARM-only options.
2009-11-252009-11-25 Doug Kwan <dougkwan@google.com>Doug Kwan2-38/+267
* arm.cc (Target_arm::Target_arm): Move method definition outside of class definition. Add code to handle --target1-rel, --target1-abs and --target2= options. (Target_arm::get_reloc_reloc_type): Change method to be non-static and const. (Target_arm::target1_is_rel_, Target_arm::target2_reloc_): New data member declaration. (Target_arm::Scan::local, Target_arm::Scan::global, Target_arm::Relocate::relocate, Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Adjust call to Target_arm::get_real_reloc_type. (Target_arm::get_real_reloc_type): Use command line options to determine real types of R_ARM_TARGET1 and R_ARM_TARGET2. * options.h (--target1-rel, --target1-abs, --target2): New ARM-only options.
2009-11-252009-11-24 Rafael Avila de Espindola <espindola@google.com>Rafael Ávila de Espíndola6-61/+258
* Makefile.am: Build incremental-dump * Makefile.in: Regenerate. * incremental-dump.cc: New. * incremental.cc (Incremental_inputs_header_data, Incremental_inputs_entry_data): Move to incremental.h * incremental.h: (Incremental_inputs_header_data, Incremental_inputs_entry_data): Move from incremental.cc 2009-11-24 Rafael Avila de Espindola <espindola@google.com> * elfcpp_file.h: Include elfcpp.h.
2009-11-242009-11-24 Rafael Avila de Espindola <espindola@google.com>Rafael Ávila de Espíndola2-12/+30
* incremental.cc (Incremental_inputs_header, Incremental_inputs_header_write, Incremental_inputs_entry, Incremental_inputs_entry_write): Add a typedef with the data type.
2009-11-242009-11-24 Rafael Avila de Espindola <espindola@google.com>Rafael Ávila de Espíndola2-4/+11
* incremental.cc (Incremental_inputs_header, Incremental_inputs_header_write, Incremental_inputs_entry, Incremental_inputs_entry_write): Update comment about which type has the filed descriptions.
2009-11-162009-11-15 Doug Kwan <dougkwan@google.com>Doug Kwan2-82/+232
* arm.cc (Target_arm::may_use_arm_nop): New method definition. (Arm_relocate_functions::arm_branch_common): Change method defintion in class definition to a method declaration and update list of formal parameters. (Arm_relocate_functions::plt32, Arm_relocate_functions::call, Arm_relocation_functions::jump24): Adjust call to Arm_relocate_functions::arm_branch_common. Update list of formal parameters. (Arm_relocate_functions::xpc25): New method definition. (Arm_relocate_functions::arm_branch_common): Move method defintion out from class definition. Use stubs for mode-switching and extending branch ranges. (Target_arm::Relocate::relocate): Handle weakly-undefined symbols specially. Change code to enable use of stubs in ARM branches.
2009-11-092009-11-10 Doug Kwan <dougkwan@google.com>Doug Kwan2-18/+103
* arm.cc (Arm_relobj::do_relocate_sections): Remove options parameter in method declaration. (Target_arm::relocate_stub): New method declaration. (Target_arm::default_target): Change to return a pointer instead of a const reference. (Reloc_stub::stub_type_for_reloc): Adjust for the change in Target_arm::default_target. (Arm_Relobj::do_relocate_sections): Remove options paramater in method definition. (Target_arm::relocate_section): Adjust view. (Target_arm::relocate_stub): New method definition.