aboutsummaryrefslogtreecommitdiff
path: root/gold
AgeCommit message (Collapse)AuthorFilesLines
2009-11-05Remove debugging code accidentally included in last commit.Ian Lance Taylor1-2/+0
2009-11-05 PR 10910Ian Lance Taylor2-7/+11
* output.cc (Output_segment::add_output_section): Add missing return statement.
2009-11-05 PR 10880Ian Lance Taylor4-9/+50
* object.h (class Object): Add is_needed and set_is_needed methods. Add is_needed_ field. Make bool fields into bitfields. * symtab.cc (Symbol_table::set_dynsym_indexes): If a symbol is defined in a dynamic object and referenced by a regular object, set is_needed for the dynamic object. * layout.cc (Layout::finish_dynamic_section): Don't add DT_NEEDED if the file is marked with as_needed and it is not needed.
2009-11-04 PR 10887Ian Lance Taylor6-13/+36
* arm.cc (Target_arm::do_finalize_sections): Don't add dynamic tags if data is discarded by linker script. * i386.cc (Target_i386::do_finalize_sections): Likewise. * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise. * sparc.cc (Target_sparc::do_finalize_sections): Likewise. * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
2009-11-04 * layout.cc (Layout::get_output_section): Add is_interp andIan Lance Taylor13-102/+248
is_dynamic_linker_section parameters. Change all callers. (Layout::choose_output_section): Likewise. (Layout::make_output_section): Likewise. (Layout::add_output_section_data): Add is_dynamic_linker_section parameter. Change all callers. * layout.h (class Layout): Update declarations. * output.h (class Output_section): Add is_interp, set_is_interp, is_dynamic_linker_section, set_is_dynamic_linker_section methods. Add is_interp_, is_dynamic_linker_section_ fields. Change generate_code_fills_at_write_ to a bitfield. * output.cc (Output_section::Output_sections): Initialize new fields. (Output_segment::add_output_section): Add do_sort parameter. Change all callers.
2009-11-04 PR 10860Ian Lance Taylor4-15/+99
* options.h (class General_options): Add --warn-common. * resolve.cc (Symbol_table::resolve): Handle --warn-common when merging two common symbols. (Symbol_table::should_override): Handle --warn-common when merging a common symbol with a defined symbol. Use report_resolve_problem for multiple definitions. (Symbol_table::report_resolve_problem): New function. * symtab.h (class Symbol_table): Declare report_resolve_problem.
2009-11-032009-11-03 Doug Kwan <dougkwan@google.com>Doug Kwan2-1/+164
* arm.cc (Target_arm::Target_arm): Initialize stub_tables_ and stub_factory_. (Target_arm::stub_factory): New method definition. (Target_arm::new_arm_input_section, Target_arm::find_arm_input_section, Target_arm::new_stub_table, Target_arm::reloc_uses_thumb_bit): New method declarations. (Target_arm::Stub_table_list, Target_arm::Arm_input_section_map): New type definitions. (Target_arm::stub_tables_, Target_arm::stub_factory_): New data member declarations. (Target_arm::reloc_uses_thumb_bit, Target_arm::new_arm_input_section, Target_arm::find_arm_input_section, Target_arm::new_stub_table): New method definitions.
2009-11-03 * options.h (class General_options): Add --warn_constructors.Ian Lance Taylor2-0/+7
2009-11-03 PR 10893Ian Lance Taylor2-2/+68
* defstd.cc (in_section): Add entries for __rel_iplt_start, __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.
2009-11-03 PR 10895Ian Lance Taylor2-3/+13
* po/Make-in ($(srcdir)/$(PACKAGE).pot): Pass -C and --msgid-bugs-address. (install-pdf): New target. (install-data_yes): Look up one directory to find mkinstalldirs.
2009-11-032009-11-03 H.J. Lu <hongjiu.lu@intel.com>H.J. Lu2-1/+6
* po/Make-in (.po.gmo): Don't generate .gmo files in source tree.
2009-10-312009-10-30 Doug Kwan <dougkwan@google.com>Doug Kwan2-3/+7
* arm.cc (Stub_addend_reader): Fix bug in previouls check-in.
2009-10-312009-10-30 Doug Kwan <dougkwan@google.com>Doug Kwan2-1/+122
* arm.cc (Stub_addend_reader): New struct template definition and partial specializations. (Stub_addend_reader::operator()): New method definition for a partially specialized template.
2009-10-302009-10-30 Doug Kwan <dougkwan@google.com>Doug Kwan9-19/+355
elfcpp/ChangeLog: * arm.h (EF_ARM_BE8, EF_ARM_EABIMASK, EF_ARM_EABI_UNKNOWN, EF_ARM_EABI_VER1, EF_ARM_EABI_VER2, EF_ARM_EABI_VER3, EF_ARM_EABI_VER4, EF_ARM_EABI_VER5): New enums for processor-specific flags. (arm_eabi_version): New inline function. * elfcpp.h: Add a comment about DT_ENCODING. gold/ChangeLog: * arm.cc (Arm_relobj::processor_specific_flags): New method definition. (Arm_relobj::do_read_symbols): New method declaration. (Arm_relobj::processor_specific_flags_): New data member declaration. (Arm_dynobj): New class definition. (Target_arm::do_finalize_sections): Add input_objects parameter. (Target_arm::do_adjust_elf_header): New method declaration. (Target_arm::are_eabi_versions_compatible, (Target_arm::merge_processor_specific_flags): New method declaration. (Target_arm::do_make_elf_object): New overloaded method definitions and declaration. (Arm_relobj::do_read_symbols): New method definition. (Arm_dynobj::do_read_symbols): Ditto. (Target_arm::do_finalize_sections): Add input_objects parameters. Merge processor-specific flags from all input objects. (Target_arm::are_eabi_versions_compatible, Target_arm::merge_processor_specific_flags, Target_arm::do_adjust_elf_header, Target_arm::do_make_elf_object): New method definitions. * i386.cc (Target_i386::do_finalize_sections): Add unnamed Input_objects pointer type parameter. * layout.cc (Layout::finalize): Pass input objects to target's. finalize_sections function. * output.cc (Output_file_header::do_sized_write): Set ELF file header's processor-specific flags. * powerpc.cc (Target_powerpc::do_finalize_sections): Add unnamed Input_objects pointer type parameter. * sparc.cc (Target_sparc::do_finalize_sections): Same. * target.h (Input_objects): New forward class declaration. (Target::processor_specific_flags, Target::are_processor_specific_flags_sect): New method definitions. (Target::finalize_sections): Add input_objects parameter. (Target::Target): Initialize processor_specific_flags_ and are_processor_specific_flags_set_. (Target::do_finalize_sections): Add unnamed Input_objects pointer type parameter. (Target::set_processor_specific_flags): New method definition. (Target::processor_specific_flags_, Target::are_processor_specific_flags_set_): New data member declarations. * x86_64.cc (Target_x86_64::do_finalize_sections): Add unnamed Input_objects pointer type parameter.
2009-10-302009-10-30 Doug Kwan <dougkwan@google.com>Doug Kwan2-25/+29
* arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
2009-10-29 * object.h (class Relobj): Drop options parameter fromIan Lance Taylor14-274/+182
gc_process_relocs, scan_relocs, relocate, do_gc_process_relocs, do_scan_relocs, do_relocate. Change all callers. (class Sized_relobj): Drop options parameters from do_gc_process_relocs, do_scan_relocs, do_relocate, do_relocate_sections, relocate_sections, emit_relocs_scan, emit_relocs_scan_reltype. Change all callers. (struct Relocate_info): Remove options field and all references to it. * reloc.h (class Read_relocs): Remove options constructor parameter and options_ field. Change all callers. (class Gc_process_relocs, class Scan_relocs): Likewise. (class Relocate_task): Likewise. * target-reloc.h (scan_relocs): Remove options parameter. Change all callers. (scan_relocatable_relocs): Likewise. * target.h (class Sized_target): Remove options parameter from gc_process_relocs, scan_relocs, scan_relocatable_relocs. Change all callers. * gc.h (gc_process_relocs): Remove options parameter. Change all callers. * arm.cc: Update functions to remove options parameters. * i386.cc: Likewise. * powerpc.cc: Likewise. * sparc.cc: Likewise. * x86_64.cc: Likewise. * testsuite/testfile.cc: Likewise.
2009-10-292009-10-28 Doug Kwan <dougkwan@google.com>Doug Kwan2-0/+355
* arm.cc (Arm_relobj): New class definition. (Arm_relobj::scan_sections_for_stubs, Arm_relobj::do_count_local_symbols, Arm_relobj::do_relocate_sections): New method definitions.
2009-10-28 * plugin.h (Plugin::Plugin): Initialize cleanup_done_.Cary Coutant3-12/+25
(Plugin::cleanup_done_): New member. (Plugin_manager::Plugin_manager): Remove cleanup_done_. (Plugin_manager::cleanup_done_): Remove. (Plugin_manager::add_input_file): Edit error message. * plugin.cc (Plugin::cleanup): Test and set cleanup_done_. (Plugin_manager::cleanup): Remove use of cleanup_done_.
2009-10-28 * fileread.cc: (File_read::View::~View): Use the newIan Lance Taylor4-20/+100
data_ownership_ filed. (File_read::~File_read): Dispose the new whole_file_view_. (File_read::open): Mmap the whole file if needed. (File_read::open): Use whole_file_view_ instead of contents_. (File_read::find_view): Use whole_file_view_ if applicable. (File_read::do_read): Use whole_file_view_ instead of contents_. (File_read::make_view): Use whole_file_view_ instead of contents_, update File_read::View::View call. (File_read::find_or_make_view): Update File_read::View::View call. * fileread.h: (File_read::File_read): Initialize whole_file_view_, remove contents_ (File_read::View::Data_ownership): New enum. (File_read::View::View): Replace bool mapped_ with Data_ownership argument. (File_read::View::mapped_): Remove (replaced by data_ownership_). (File_read::View::data_ownership_): New field. (File_read::contents_): Remove (replaced by whole_file_view_). (File_read::whole_file_view_): New field. * options.h (class General_options): Add --keep-files-mapped.
2009-10-28 * symtab.cc (add_from_pluginobj): Pass correct value for is_ordinary.Cary Coutant4-16/+66
* testsuite/Makefile.am (plugin_test_5): New test case. * testsuite/Makefile.in: Regenerate.
2009-10-252009-10-25 Doug Kwan <dougkwan@google.com>Doug Kwan3-16/+78
* arm.cc (Arm_output_section, Arm_relobj): Forward class declarations. (Arm_input_section::as_arm_input_section): New method. (Arm_output_section): New class definition. (Arm_output_section::create_stub_group, Arm_output_section::group_sections): New method definitions.
2009-10-242009-10-24 Doug Kwan <dougkwan@google.com>Doug Kwan2-0/+267
* arm.cc (Arm_output_section, Arm_relobj): Forward class declarations. (Arm_input_section::as_arm_input_section): New method. (Arm_output_section): New class definition. (Arm_output_section::create_stub_group, Arm_output_section::group_sections): New method definitions.
2009-10-222009-10-22 Doug Kwan <dougkwan@google.com>Doug Kwan2-0/+187
* arm.cc (Arm_input_section): New class definition. (Arm_input_section::init, Arm_input_section:do_write, Arm_input_section::set_final_data_size, Arm_input_section::do_reset_address_and_file_offset): New method definitions.
2009-10-212009-10-21 Doug Kwan <dougkwan@google.com>Doug Kwan2-0/+218
* arm.cc (Stub_table, Arm_input_section): New forward class declarations. (Stub_table): New class defintion. (Stub_table::add_reloc_stub, Stub_table::relocate_stubs Stub_table::do_reset_address_and_file_offset, Stub_table::do_write): New method definition.
2009-10-212009-10-21 Doug Kwan <dougkwan@google.com>Doug Kwan5-24/+1222
* arm.cc: Update copyright comments. (Target_arm): New forward class template declaration. (Arm_address): New type. (ARM_MAX_FWD_BRANCH_OFFSET, ARM_MAX_BWD_BRANCH_OFFSET, THM_MAX_FWD_BRANCH_OFFSET, THM_MAX_BWD_BRANCH_OFFSET, THM2_MAX_FWD_BRANCH_OFFSET, THM2_MAX_BWD_BRANCH_OFFSET): New constants. (Insn_template): Same. (DEF_STUBS): New macro. (Stub_type): New enum type. (Stub_template): New class definition. (Stub): Same. (Reloc_stub): Same. (Stub_factory): Same. (Target_arm::Target_arm): Initialize may_use_blx_ and should_force_pic_veneer_. (Target_arm::may_use_blx, Target_arm::set_may_use_blx, Target_arm::should_force_pic_veneer, Target_arm::set_should_force_pic_veneer, Target_arm::using_thumb2, Target_arm::using_thumb_only, Target_arm:;default_target): New method defintions. (Target_arm::may_use_blx_, Target_arm::should_force_pic_veneer_): New data member declarations. (Insn_template::size, Insn_template::alignment): New method defintions. (Stub_template::Stub_template): New method definition. (Reloc_stub::Key::name, Reloc_stub::stub_type_for_reloc, Reloc_stub::do_fixed_endian_write, Reloc_stub::do_write): Same. (Stub_factory::Stub_factory): New method definition. * gold.h (string_hash): New template. * output.h (Input_section_specifier::hash_value): Use gold::string_hash. (Input_section_specifier::string_hash): Remove. * stringpool.cc (Stringpool_template::string_hash): Use gold::string_hash.
2009-10-212009-10-20 Doug Kwan <dougkwan@google.com>Doug Kwan3-11/+24
* object.cc (Sized_relobj::do_finalize_local_symbols): Handle section symbols of relaxed input sections. * output.h (Output_section::find_relaxed_input_section): Make method public.
2009-10-162009-10-16 Doug Kwan <dougkwan@google.com>Doug Kwan7-19/+170
* dynobj.cc (Versions::Versions): Initialize version_script_. Only insert base version symbol definition for a shared object if version script defines any version versions. (Versions::define_base_version): New method definition. (Versions::add_def): Check that base version is not needed. (Versions::add_need): Define base version lazily. * dynobj.h (Versions::define_base_version): New method declaration. (Versions::needs_base_version_): New data member declaration. * testsuite/Makefile.am (check_SCRIPTS): Add no_version_test.sh (check_DATA): Add no_version_test.stdout. (libno_version_test.so, no_version_test.o no_version_test.stdout): New make rules. * testsuite/Makefile.in: Regenerate. * testsuite/no_version_test.c: New file. * testsuite/no_version_test.sh: Ditto.
2009-10-162009-10-16 Doug Kwan <dougkwan@google.com>Doug Kwan14-14/+425
* expression.cc (class Segment_start_expression): New class definition. (Segment_start_expression::value): New method definition. (script_exp_function_segment_start): Return a new Segment_start_expression. * gold/script-c.h (script_saw_segment_start_expression): New function prototype. * script-sections.cc (Script_sections::Script_sections): Initialize SAW_SEGMENT_START_EXPRESSION_ to false. (Script_sections::set_section_addresses): Use -Ttext, -Tdata and -Tbbs options to specify section addresses if given in command line and no SEGMENT_START expression is seen in a script. * script-sections.h (Script_sections::saw_segment_start_expression, Script_sections::set_saw_segment_start_expression): New method definition. (Script_sections::saw_segment_start_expression_): New data member declaration. * script.cc (script_saw_segment_start_expression): New function. * yyscript.y (SEGMENT_START): Call script_saw_segment_start_expression. * testsuite/Makefile.am (check_SCRIPTS): Add script_test_6.sh, script_test_7.sh and script_test_8.sh. (check_DATA): Add script_test_6.stdout, script_test_7.stdout and script_test_8.stdout. (MOSTLYCLEANFILES): Add script_test_6, script_test_7 and script_test_8. (script_test_6, script_test_6.stdout, script_test_7, script_test_7.stdout, script_test_8, script_test_8.stdout): New rules. * Makefile.in: Regenerate. * testsuite/script_test_6.sh: New file. * testsuite/script_test_6.t: Same. * testsuite/script_test_7.sh: Same. * testsuite/script_test_7.t: Same. * testsuite/script_test_8.sh: Same.
2009-10-162009-10-16 Doug Kwan <dougkwan@google.com>Doug Kwan2-4/+14
* output.cc (Output_segment::set_section_list_address): Cast expressions to unsigned long long type to avoid format warnings.
2009-10-16 * script.cc (Script_options::add_symbol_assignment): Always add aIan Lance Taylor3-5/+20
dot assginment to script_sections_. * script-sections.cc (Script_sections::add_dot_assignment): Initialize if necessary.
2009-10-16 * layout.cc (Layout::relaxation_loop_body): Don't crash if we seeIan Lance Taylor2-1/+6
program headers with no load segment if there is a linker script.
2009-10-16 * layout.cc (Layout::set_segment_offsets): Align the file offsetIan Lance Taylor4-36/+99
to the segment aligment for -N or -n with no load segment. * output.cc (Output_segment::add_output_section): Don't crash if the first section is a TLS section. (Output_segment::set_section_list_addresses): Print an error message if the address moves backward in a linker script. * script-sections.cc (Output_section_element_input::set_section_addresses): Don't increase *dot_value for a SHF_TLS/SHT_NOBITS section. (Orphan_output_section::set_section_addresses): Likewise.
2009-10-152009-10-15 Doug Kwan <dougkwan@google.com>Doug Kwan2-2/+36
* layout.cc (Layout::finish_dynamic_section): Generate tags DT_FINI_ARRAY, DT_FINI_ARRAYSZ, DT_INIT_ARRAY, DT_INIT_ARRAYSZ, DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ as needed. If -Bsymbolic is used, add DT_SYMBOLIC and set DF_SYMBOLIC in DT_FLAGS.
2009-10-15 * object.h (class Relocate_info): Add reloc_shdr and data_shdrIan Lance Taylor4-38/+25
fields. * object.cc (Sized_relobj::relocate_sections): Set reloc_shdr and data_shdr fields of relinfo. * i386.cc (class Target_i386::Relocate): Remove ldo_addrs_ field. (Target_i386::Relocate::relocate_tls): Don't call fix_up_ldo. For R_386_TLS_LDO_32, adjust based on section flags. (Target_i386::Relocate::fix_up_ldo): Remove.
2009-10-14 Add support for -pie.Ian Lance Taylor12-28/+129
* options.h (class General_options): Add -pie and --pic-executable. (General_options::output_is_position_independent): Test -pie. (General_options::output_is_executable): Return true if not shared and not relocatable. (General_options::output_is_pie): Remove. * options.cc (General_options::finalize): Reject incompatible uses of -pie. * gold.cc (queue_middle_tasks): A -pie link is not static. * symtab.h (Symbol::needs_plt_entry): Return false if -pie. * symtab.cc (Symbol::final_value_is_known): Return false if output_is_position_independent. * layout.cc (Layout::set_segment_offsets): Start at address 0 if output_is_position_independent. * output.cc (Output_file_header::do_sized_write): Use ET_DYN if output_is_position_independent. * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if output_is_position_independent. * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and two_file_pie_test. (basic_pie_test.o, basic_pie_test): New targets. (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets. (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets. (two_file_pie_test): New target. * testsuite/Makefile.in: Rebuild. * README: Remove note saying that -pie is not supported.
2009-10-13 * options.h (class General_options): Add -init and -fini.Ian Lance Taylor3-3/+14
* layout.cc (Layout::finish_dynamic_section): Emit given init and fini functions.
2009-10-13 * gc.h (gc_process_relocs): Check if icf is enabled using newSriraman Tallam14-23/+237
function. * gold.cc (queue_initial_tasks): Likewise. (queue_middle_tasks): Likewise. * object.cc (do_layout): Likewise. * symtab.cc (is_section_folded): Likewise. * main.cc (main): Likewise. * reloc.cc (Read_relocs::run): Likewise. (Sized_relobj::do_scan_relocs): Likewise. * icf.cc (is_function_ctor_or_dtor): New function. (Icf::find_identical_sections): Check if function is ctor or dtor when safe icf is chosen. * options.h (General_options::icf): Change option to be an enum. (Icf_status): New enum. (icf_enabled): New method. (icf_safe_folding): New method. (set_icf_status): New method. (icf_status_): New variable. * (options.cc) (General_options::finalize): Set icf_status_. * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify icf_test and icf_keep_unique_test to use the --icf enum flag. * testsuite/icf_safe_test.sh: New file. * testsuite/icf_safe_test.cc: New file.
2009-10-13 * symtab.h: Check for GOLD_SYMTAB_H before header includes. RemoveSriraman Tallam9-5/+22
includes to gc.h and icf.h. * arm.cc: Include gc.h. * gold.cc: Likewise. * i386.cc: Likewise. * powerpc.cc: Likewise. * sparc.cc: Likewise. * x86_64.cc: Likewise. * gc.h: Include icf.h.
2009-10-12 * plugin.cc: Include "gold.h" before other header files.Ian Lance Taylor2-1/+6
2009-10-102009-10-10 Chris Demetriou <cgd@google.com>Chris Demetriou12-47/+237
* options.h (Input_file_argument::Input_file_type): New enum. (Input_file_argument::is_lib_): Replace with... (Input_file_argument::type_): New member. (Input_file_argument::Input_file_argument): Take Input_file_type 'type' rather than boolean 'is_lib' as second argument. (Input_file_argument::is_lib): Use type_. (Input_file_argument::is_searched_file): New function. (Input_file_argument::may_need_search): Handle is_searched_file. * options.cc (General_options::parse_library): Support -l:filename. (General_options::parse_just_symbols): Update for Input_file_argument changes. (Command_line::process): Likewise. * archive.cc (Archive::get_file_and_offset): Likewise. * plugin.cc (Plugin_manager::release_input_file): Likewise. * script.cc (read_script_file, script_add_file): Likewise. * fileread.cc (Input_file::Input_file): Likewise. (Input_file::will_search_for): Handle is_searched_file. (Input_file::open): Likewise. * readsyms.cc (Read_symbols::get_name): Likewise. * testsuite/Makefile.am (searched_file_test): New test. * testsuite/Makefile.in: Regenerate. * testsuite/searched_file_test.cc: New file. * testsuite/searched_file_test_lib.cc: New file.
2009-10-10 * descriptor.cc: Include <cstdio> and "binary-io.h".Ian Lance Taylor3-1/+13
(Descriptors::open): Open the files in binary mode always. * script.cc (Lex::get_token): Treat \r as whitespace.
2009-10-10 * testsuite/retain_symbols_file_test.sh: Don't test for __tcf_0.Ian Lance Taylor2-1/+4
2009-10-09 * configure.ac: Check for readv function also.Ian Lance Taylor6-2/+30
* fileread.cc (readv): Define if not HAVE_READV. * fileread.h (File_read:: max_readv_entries): Set to 1 if readv does not exist. * config.in: Regenerate. * configure: Regenerate.
2009-10-092009-10-09 Doug Kwan <dougkwan@google.com>Doug Kwan15-121/+839
* layout.cc (Layout::make_output_section): Call target hook to make ordinary output section. (Layout::finalize): Adjust parameter list of call the Target::may_relax(). * layout.h (class Layout::section_list): New method. * merge.h (Output_merge_base::entsize): Change visibility to public. (Output_merge_base::is_string, Output_merge_base::do_is_string): New methods. (Output_merge_string::do_is_string): New method. * object.cc (Sized_relobj::do_setup): renamed from Sized_relobj::set_up. * object.h (Sized_relobj::adjust_shndx, Sized_relobj::initializ_input_to_output_maps, Sized_relobj::free_input_to_output_maps): Change visibilities to protected. (Sized_relobj::setup): Virtualize. (Sized_relobj::do_setup): New method declaration. (Sized_relobj::invalidate_section_offset, Sized_relobj::do_invalidate_section_offset): New method decfinitions. (Sized_relobj::elf_file, Sized_relobj::local_values): New methods. * options.cc (parse_int): New function. * options.h (parse_int): New declaration. (DEFINE_int): New macro. (stub_group_size): New option. * output.cc (Output_section::Output_section): Initialize memebers merge_section_map_, merge_section_by_properties_map_, relaxed_input_section_map_, is_relaxed_input_section_map_valid_. (Output_section::add_input_section): Handled deferred code-fill generation and remove an old comment. (Output_section::add_relaxed_input_section): New method definition. (Output_section::add_merge_input_section): Use merge section by properties map to speed to search. Update merge section maps as appropriate. (Output_section::build_relaxation_map): New method definition. (Output_section::convert_input_sections_in_list_to_relaxed_sections): Same. (Output_section::relax_input_section): Renamed to Output_section::convert_input_sections_to_relaxed_sections and change interface to take a vector of pointers to relaxed sections. (Output_section::find_merge_section, Output_section::find_relaxed_input_section): New method definitions. (Output_section::is_input_address_mapped, Output_section::output_offset, Output_section::output_address): Use output section data maps to speed up searching. (Output_section::find_starting_output_address): Add comments. (Output_section::do_write, Output_section::write_to_postprocessing_buffer): Do code-fill generation as appropriate. (Output_section::get_input_sections): Invalidate relaxed input section map. (Output_section::restore_states): Adjust type of checkpoint . Invalidate relaxed input section map. * output.h (Output_merge_base): New class declaration. (Input_section_specifier): New class defintion. (class Output_relaxed_input_section) Change base class to Output_section_data_build. (Output_relaxed_input_section::Output_relaxed_input_section): Adjust base class initializer. (Output_section::add_relaxed_input_section): New method declaration. (Output_section::Input_section): Change visibility to protected. (Output_section::Input_section::relobj, Output_section::Input_section::shndx): Handle relaxed input sections. Output_section::input_sections) Change visibility to protected. Also define overload to return a non-const pointer. (Output_section::Merge_section_properties): New class defintion. (Output_section::Merge_section_by_properties_map, Output_section::Output_section_data_by_input_section_map, Output_section::Relaxation_map): New types. (Output_section::relax_input_section): Rename method to Output_section::convert_input_sections_to_relaxed_sections and change interface to take a vector of relaxed section pointers. (Output_section::find_merge_section, Output_section::find_relaxed_input_section, Output_section::build_relaxation_map, Output_section::convert_input_sections_in_list_to_relaxed_sections): New method declarations. (Output_section::merge_section_map_ Output_section::merge_section_by_properties_map_, Output_section::relaxed_input_section_map_, Output_section::is_relaxed_input_section_map_valid_, Output_section::generate_code_fills_at_write_): New data members. * script-sections.cc (Output_section_element_input::set_section_addresses): Call current_data_size and addralign methods of relaxed input sections. (Orphan_output_section::set_section_addresses): Call current_data_size and addralign methods of relaxed input sections. * symtab.cc (Symbol_table::compute_final_value): Extract template from the body of Symbol_table::sized_finalize_symbol. (Symbol_table::sized_finalized_symbol): Call Symbol_table::compute_final_value. * symtab.h (Symbol_table::Compute_final_value_status): New enum type. (Symbol_table::compute_final_value): New templated method declaration. * target.cc (Target::do_make_output_section): New method defintion. * target.h (Target::make_output_section): New method declaration. (Target::relax): Add more parameters for input objects, symbol table and layout. Adjust call to do_relax. (Target::do_make_output_section): New method declaration. (Target::do_relax): Add parameters for input objects, symbol table and layout.
2009-10-09 * pread.c: Include stdio.h.Ian Lance Taylor2-1/+6
2009-10-09 * plugin.cc: Don't include dlfcn.h when ENABLE_PLUGINS is notIan Lance Taylor2-0/+8
defined.
2009-10-09 * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):Ian Lance Taylor4-9/+24
Change read_shndx type to unsigned int. (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned int. (Sized_dwarf_line_info::read_line_mappings): Likewise. * dwarf_reader.h (Sized_dwarf_line_info::Sized_dwarf_line_info): Change read_shndx type to unsigned int. (Sized_dwarf_line_info::read_lines): Change shndx type to unsigned int. (Sized_dwarf_line_info::read_line_mappings): Likewise. * layout.cc (Layout::create_symtab_sections): Cast the result of local_symcount * symsize to off_t in the gold_assert.
2009-10-09 * arm.cc (Target_arm::relocate::reloc_is_non_pic): Return true forIan Lance Taylor2-23/+188
R_ARM_THM_ABS5, R_ARM_ABS8, R_ARM_ABS12, R_ARM_ABS16, R_ARM_BASE_ABS. (Arm_relocate_functions::abs8): Remove has_thumb_bit parameter. (Arm_relocate_functions::thm_abs5): New function. (Arm_relocate_functions::abs12): New function. (Arm_relocate_functions::abs16): New function. (Arm_relocate_functions::base_abs): New function. (Scan::check_non_pic): Handle R_ARM_ABS32_NOI. (Scan::local): Remove special handling of R_ARM_ABS8. Handle R_ARM_ABS32_NOI, R_ARM_THM_ABS5, R_ARM_ABS12, R_ARM_ABS16, and R_ARM_BASE_ABS. (Scan::global): Likewise. (Relocate::relocate): Handle R_ARM_ABS12, R_ARM_ABS16, R_ARM_ABS32_NOI, R_ARM_THM_ABS5, and R_ARM_BASE_ABS. (Relocatable_size_for_reloc::get_size_for_reloc): Handle R_ARM_ABS16, R_ARM_THM_ABS5, R_ARM_ABS32_NOI, R_ARM_ABS12, and R_ARM_BASE_ABS.
2009-10-09 * arm.cc (Arm_relocate_functions::movw_prel_nc): New function.Ian Lance Taylor2-1/+129
(Arm_relocate_functions::movt_prel): New function. (Arm_relocate_functions::thm_movw_prel_nc): New function. (Arm_relocate_functions::thm_movt_prel): New function. (Scan::local): Handle R_ARM_MOVW_PREL_NC, R_ARM_MOVT_PREL, R_ARM_THM_MOVW_PREL_NC, and R_ARM_THM_MOVT_PREL. (Scan::global, Relocate::relocate): Likewise. (Relocatable_size_for_reloc::get_size_for_reloc): Likewise.
2009-10-09elfcpp/:Ian Lance Taylor4-21/+233
* elf_file.h: (class Elf_strtab): New class. gold/: * gold.cc: (queue_initial_tasks): Pass incremental_inputs to Incremental_checker. * incremental.cc: (INCREMENTAL_LINK_VERSION): Change type to unsigned int. (class Incremental_inputs_header): New class. (Incremental_inputs_header_writer): Edit comment. (Incremental_inputs_entry): New class. (Incremental_inputs_entry_writer): Edit comment. (Sized_incremental_binary::do_find_incremental_inputs_section): Add *strtab_shndx parameter, fill it. (Sized_incremental_binary::do_check_inputs): New method. (Incremental_checker::can_incrementally_link_output_file): Use Sized_incremental_binary::check_inputs. (Incremental_inputs::report_command_line): Save command line in command_line_. * incremental.h: (Incremental_binary::find_incremental_inputs_section): New method. (Incremental_binary::do_find_incremental_inputs_section): Add strtab_shndx parameter. (Incremental_binary::do_check_inputs): New pure virtual method. (Sized_incremental_binary::do_check_inputs): Declare. (Incremental_checker::Incremental_checker): Add incremental_inputs parameter, use it to initialize incremental_inputs_. (Incremental_checker::incremental_inputs_): New field. (Incremental_checker::command_line): New method. (Incremental_checker::inputs): New method. (Incremental_checker::command_line_): New field.