aboutsummaryrefslogtreecommitdiff
path: root/gold
AgeCommit message (Collapse)AuthorFilesLines
2009-12-31 PR 10980Ian Lance Taylor2-2/+8
* options.h (class General_options): Permit two dashes with --retain-symbols-file.
2009-12-31 PR 10979Ian Lance Taylor2-0/+11
* layout.cc (Layout::relaxation_loop_body): If -Ttext was used, don't put the file header and segment headers in the text segment.
2009-12-31 PR 10979Ian Lance Taylor7-7/+146
* common.cc (Sort_commons::operator()): Stabilize sort when both entries are NULL. (Symbol_table::do_allocate_commons_list): When allocating common symbols, skip a symbol which is no longer common. * symtab.h (Symbol::is_common): Test whether the symbol comes from an object before checking its type. * testsuite/common_test_2.c: New file. * testsuite/common_test_3.c: New file. * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2. (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define. (common_test_2_LDFLAGS, common_test_2_LDADD): Define. (common_test_2_pic.o, common_test_2.so): New targets. (common_test_3_pic.o, common_test_3.so): New targets. * testsuite/Makefile.in: Rebuild.
2009-12-31 PR 10979Ian Lance Taylor4-0/+31
* script.cc (read_input_script): If we see a new SECTIONS clause, and we have added an input section, give an error. * layout.h (class Layout): Add have_added_input_section function. Add have_added_input_section_ field. * layout.cc (Layout::Layout): Initialize have_added_input_section_. (Layout::layout): Set have_added_input_section_. (Layout::layout_eh_frame): Likewise.
2009-12-31 PR 10931Ian Lance Taylor4-26/+104
* options.h (class General_options): Add --sort-common option. * symtab.h (class Symbol_table): Define Sort_commons_order enum. * common.cc (Sort_common): Add sort_order parameter to constructor. Add sort_order_ field. (Sort_commons::operator): Check sort_order_. (Symbol_table::allocate_commons): Determine the sort order. (Symbol_table::do_allocate_commons): Add sort_order parameter. Change all callers. (Symbol_table::do_allocate_commons_list): Likewise.
2009-12-31 PR 10916Ian Lance Taylor3-1/+18
* symtab.cc (Symbol_table::add_from_relobj): When not exporting symbols from this object, don't change the visibility of an undefined symbol. * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
2009-12-30 PR 10861Ian Lance Taylor9-138/+351
* script.h (class Version_script_info): Define Language enum. Update declarations. Define Glob, Exact, and Lookup types. Add new fields globals_, locals_, and is_finalized_. * script.cc: Various formatting fixes. (class Parser_closure): Change language_stack_ from a vector of std::string to one of Version_script_info::Language. Adjust all uses accordingly. (class Lazy_demangler): Remove. (struct Version_expression): Change language from std::string to Version_script_info::Language. (Version_script_info::Version_script_info): New function. (Version_script_info::~Version_script_info): Don't call clear. (Version_script_info::finalize): New function. (Version_script_info::build_lookup_tables): New function. (Version_script_info::build_expression_list_lookup): New function. (Version_script_info::get_symbol_version_helper): Rewrite to use lookup tables. (Version_script_info::print_expression_list): Adjust to use Version_script_info::Language. (script_push_lex_into_version_mode): Check that the version script has not been finalized. (version_script_push_lang): Change language string to Version_script_info::Language. * options.cc (Command_line::version_script): New function. * options.h (class General_options): Add finalize_dynamic_list function. Change version_script from declaration to definition. * testsuite/ver_test_4.script: Remove duplicate def of t2_2. * testsuite/version_script.map: Remove duplicate def of foo. * testsuite/Makefile.am (ver_matching_def.so): Depend upon version_script.map. * testsuite/Makefile.in: Rebuild.
2009-12-30 PR 10843Ian Lance Taylor2-2/+13
* target-reloc.h (relocate_for_relocatable): When copying a reloc, if the input symbol index is 0, make the output symbol index 0.
2009-12-30 PR 10670Ian Lance Taylor3-9/+27
* options.h (class General_options): Add -x/--discard-all. * object.cc (Sized_relobj::do_count_local_symbols): Handle --discard-all. If the local symbol needs a dynamic entry, check that before handling --discard-locals.
2009-12-30 PR 10450Ian Lance Taylor2-2/+15
* output.cc (Output_segment::Output_segment): If PT_TLS, set the flags to PF_R. (Output_segment::add_output_section): Don't change the flags if the type is PT_TLS.
2009-12-30 PR 10450Ian Lance Taylor2-3/+11
* dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the GNU hash table if they need a dynamic value. Otherwise, don't add them if they are defined in a dynamic object or are forced local.
2009-12-30 PR 10450Ian Lance Taylor2-1/+10
* layout.cc (Layout::create_dynamic_symtab): Only set entsize of .gnu.hash table for a 32-bit target.
2009-12-30 PR 10450Ian Lance Taylor2-1/+8
* symtab.h (Symbol::needs_dynsym_entry): A symbol in both a regular and a dynamic object only needs a dynamic symbol table entry if it is externally visible.
2009-12-30 PR 10450Ian Lance Taylor3-20/+56
* i386.cc (class Target_i386): Initialize global_offset_table_ in constructor. Add global_offset_table_ field. (Target_i386::got_section): Set global_offset_table_. (Target_i386::do_finalize_sections): Set global_offset_table_ size. * x86_64.cc (class Target_x86_64): Initialize global_offset_table_ in constructor. Add global_offset_table_ field. (Target_x86_64::got_section): Set global_offset_table_. (Target_x86_64::do_finalize_sections): Set global_offset_table_ size.
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.