1. 11 Jul, 2018 1 commit
  2. 03 Jan, 2018 1 commit
  3. 02 Jan, 2017 1 commit
  4. 01 Jan, 2016 1 commit
  5. 01 Jan, 2015 1 commit
  6. 05 Mar, 2014 1 commit
  7. 21 Mar, 2012 1 commit
    • Cary Coutant's avatar
      2012-03-21 Cary Coutant <ccoutant@google.com> · c1027032
      Cary Coutant authored
      	* Makefile.am: Add gdb-index.cc, gdb-index.h.
      	* Makefile.in: Regenerate.
      	* dwarf_reader.cc (Sized_elf_reloc_mapper::do_initialize): New function.
      	(Sized_elf_reloc_mapper::symbol_section): New function.
      	(Sized_elf_reloc_mapper::do_get_reloc_target): New function.
      	(make_elf_reloc_mapper): New function.
      	(Dwarf_abbrev_table::clear_abbrev_codes): New function.
      	(Dwarf_abbrev_table::do_read_abbrevs): New function.
      	(Dwarf_abbrev_table::do_get_abbrev): New function.
      	(Dwarf_ranges_table::read_ranges_table): New function.
      	(Dwarf_ranges_table::read_range_list): New function.
      	(Dwarf_pubnames_table::read_section): New function.
      	(Dwarf_pubnames_table::read_header): New function.
      	(Dwarf_pubnames_table::next_name): New function.
      	(Dwarf_die::Dwarf_die): New function.
      	(Dwarf_die::read_attributes): New function.
      	(Dwarf_die::skip_attributes): New function.
      	(Dwarf_die::set_name): New function.
      	(Dwarf_die::set_linkage_name): New function.
      	(Dwarf_die::attribute): New function.
      	(Dwarf_die::string_attribute): New function.
      	(Dwarf_die::int_attribute): New function.
      	(Dwarf_die::uint_attribute): New function.
      	(Dwarf_die::ref_attribute): New function.
      	(Dwarf_die::child_offset): New function.
      	(Dwarf_die::sibling_offset): New function.
      	(Dwarf_info_reader::check_buffer): New function.
      	(Dwarf_info_reader::parse): New function.
      	(Dwarf_info_reader::do_parse): New function.
      	(Dwarf_info_reader::do_read_string_table): New function.
      	(Dwarf_info_reader::lookup_reloc): New function.
      	(Dwarf_info_reader::get_string): New function.
      	(Dwarf_info_reader::visit_compilation_unit): New function.
      	(Dwarf_info_reader::visit_type_unit): New function.
      	(Sized_dwarf_line_info::Sized_dwarf_line_info): Use
      	Sized_elf_reloc_mapper.
      	(Sized_dwarf_line_info::symbol_section): Remove function.
      	(Sized_dwarf_line_info::read_relocs): Use Sized_elf_reloc_mapper.
      	(Sized_dwarf_line_info::read_line_mappings): Remove object
      	parameter, adjust callers.
      	(Sized_dwarf_line_info::format_file_lineno): Fix type of cast.
      	* dwarf_reader.h: Include <sys/types.h>.
      	(class Track_relocs): Remove forward declaration.
      	(class Elf_reloc_mapper): New class.
      	(class Sized_elf_reloc_mapper): New class.
      	(class Dwarf_abbrev_table): New class.
      	(class Dwarf_range_list): New class.
      	(class Dwarf_ranges_table): New class.
      	(class Dwarf_pubnames_table): New class.
      	(class Dwarf_die): New class.
      	(class Dwarf_info_reader): New class.
      	(Sized_dwarf_line_info::read_line_mappings): Remove object parameter.
      	(Sized_dwarf_line_info::symbol_section): Remove member function.
      	* dynobj.h (Sized_dynobj::do_section_contents): Refactor code from
      	base class.
      	* gdb-index.cc: New source file.
      	* gdb-index.h: New source file.
      	* incremental.cc (Sized_relobj_incr::do_layout): Track .debug_info
      	and .debug_types sections, call Layout::add_to_gdb_index.
      	(Sized_relobj_incr::do_section_name): Implement.
      	(Sized_relobj_incr::do_section_contents): Adjust parameter list and
      	return type; Implement.
      	(Sized_incr_dynobj::do_section_contents): Adjust parameter list and
      	return type.
      	* incremental.h (Sized_relobj_incr::do_section_contents): Adjust
      	parameter list and return type.
      	(Sized_incr_dynobj::do_section_contents): Likewise.
      	* layout.cc: Include gdb-index.h.
      	(Layout::Layout): Initialize gdb_index_data_.
      	(Layout::init_fixed_output_section): Check for .gdb_index section.
      	(Layout::add_to_gdb_index): New function. Instantiate.
      	* layout.h: Add forward declaration for class Gdb_index.
      	(Layout::add_to_gdb_index): New member function.
      	(Layout::gdb_index_data_): New data member.
      	* main.cc: Include gdb-index.h.
      	(main): Print statistics for gdb index.
      	* object.cc (Object::section_contents): Move code into
      	do_section_contents.
      	(need_decompressed_section): Check for sections needed when building
      	gdb index.
      	(build_compressed_section_map): Likewise.
      	(Sized_relobj_file::do_read_symbols): Need local symbols when building
      	gdb index.
      	(Sized_relobj_file::do_layout): Track .debug_info and .debug_types
      	sections; call Layout::add_to_gdb_index.
      	(Sized_relobj_file::do_decompressed_section_contents): Call
      	do_section_contents directly.
      	* object.h (Object::do_section_contents): Adjust parameter list and
      	return type.
      	(Object::do_decompressed_section_contents): Call do_section_contents
      	directly.
      	(Sized_relobj_file::do_section_contents): Adjust parameter list and
      	return type.
      	* options.h (class General_options): Add --gdb-index option.
      	* plugin.cc (Sized_pluginobj::do_section_contents): Adjust parameter
      	list and return type.
      	* plugin.h (Sized_pluginobj::do_section_contents): Likewise.
      	* reloc.h (Track_relocs::checkpoint): New function.
      	(Track_relocs::reset): New function.
      
      	* testsuite/Makefile.am (gdb_index_test_1.sh, gdb_index_test_2.sh):
      	New test cases.
      	* testsuite/Makefile.in: Regenerate.
      	* testsuite/gdb_index_test.cc: New test source file.
      	* testsuite/gdb_index_test_1.sh: New test source file.
      	* testsuite/gdb_index_test_2.sh: New test source file.
      c1027032
  8. 18 Oct, 2011 1 commit
    • Cary Coutant's avatar
      * gold.cc: Include timer.h. · b490c0bb
      Cary Coutant authored
      	(queue_middle_tasks): Stamp time.
      	(queue_final_tasks): Likewise.
      	* main.cc (main): Store timer in parameters.  Print timers
      	for each pass.
      	* parameters.cc (Parameters::Parameters): Initialize timer_.
      	(Parameters::set_timer): New function.
      	(set_parameters_timer): New function.
      	* parameters.h (Parameters::set_timer): New function.
      	(Parameters::timer): New function.
      	(Parameters::timer_): New data member.
      	(set_parameters_timer): New function.
      	* timer.cc (Timer::stamp): New function.
      	(Timer::get_pass_time): New function.
      	* timer.h (Timer::stamp): New function.
      	(Timer::get_pass_time): New function.
      	(Timer::pass_times_): New data member.
      b490c0bb
  9. 15 Jul, 2011 1 commit
    • Ian Lance Taylor's avatar
      * options.h (class General_options): Add --print-output-format. · f1ddb600
      Ian Lance Taylor authored
      	Move -EL next to -EB, for  better --help output.
      	* target-select.cc: Include <cstdio>, "options.h", and
      	"parameters.h".
      	(Target_selector::do_target_bfd_name): New function.
      	(print_output_format): New function.
      	* target-select.h (class Target_selector): Update declarations.
      	(Target_selector::target_bfd_name): New function.
      	(print_output_format): Declare.
      	* main.cc: Include "target-select.h".
      	(main): Handle --print-output-format.
      	* gold.cc: Include "target-select.h".
      	(queue_initial_tasks): Handle --print-output-format when there are
      	no input files.
      	* parameters.cc (parameters_force_valid_target): Give a better
      	error message if -EB/-EL does not match target.
      	* freebsd.h (Target_selector_freebsd::do_target_bfd_name): New
      	function.
      f1ddb600
  10. 14 Jul, 2011 1 commit
    • Sriraman Tallam's avatar
      2011-07-13 Sriraman Tallam <tmsriram@google.com> · e9552f7e
      Sriraman Tallam authored
      	* plugin-api.h
      	(ld_plugin_section): New struct.
      	(ld_plugin_get_section_count): New typedef.
      	(ld_plugin_get_section_type): New typedef.
      	(ld_plugin_get_section_name): New typedef.
      	(ld_plugin_get_section_contents): New typedef.
      	(ld_plugin_update_section_order): New typedef.
      	(ld_plugin_allow_section_ordering): New typedef.
      	(LDPT_GET_SECTION_COUNT): New enum value.
      	(LDPT_GET_SECTION_TYPE): New enum value.
      	(LDPT_GET_SECTION_NAME): New enum value.
      	(LDPT_GET_SECTION_CONTENTS): New enum value.
      	(LDPT_UPDATE_SECTION_ORDER): New enum value.
      	(LDPT_ALLOW_SECTION_ORDERING): New enum value.
      	(tv_get_section_count): New struct members.
      	(tv_get_section_type): New struct members.
      	(tv_get_section_name): New struct members.
      	(tv_get_section_contents): New struct members.
      	(tv_update_section_order): New struct members.
      	(tv_allow_section_ordering): New struct members.
      	* archive.cc (Archive::get_elf_object_for_member): Add extra parameter
      	to claim_file call.
      	* layout.cc (Layout::Layout): Initialize section_ordering_specified_,
      	input_section_position_, and input_section_glob_.
      	(read_layout_from_file): Call function section_ordering_specified.
      	* layout.h (is_section_ordering_specified): New function.
      	(section_ordering_specified): New function.
      	(section_ordering_specified_): New boolean member.
      	* main.cc(main): Call load_plugins after layout object is defined.
      	* output.cc (Output_section::add_input_section): Use
      	function section_ordering_specified to check if section ordering is
      	needed.
      	* output.cc (Output_section::add_relaxed_input_section): Use
      	function section_ordering_specified to check if section ordering is
      	needed.
      	(Output_section::update_section_layout): New function.
      	(Output_section::sort_attached_input_sections): Check if input section
      	must be reordered.
      	* output.h (Output_section::update_section_layout): New function.
      	* plugin.cc (get_section_count): New function.
      	(get_section_type): New function.
      	(get_section_name): New function.
      	(get_section_contents): New function.
      	(update_section_order): New function.
      	(allow_section_ordering): New function.
      	(Plugin::load): Add the new interfaces to the transfer vector.
      	(Plugin_manager::load_plugins): New parameter.
      	(Plugin_manager::all_symbols_read): New parameter.
      	(Plugin_manager::claim_file): New parameter. Save the elf object for
      	unclaimed objects.
      	(Plugin_manager::get_elf_object): New function.
      	(Plugin_manager::get_view): Change to directly use the bool to check
      	if get_view is called from claim_file_hook.
      	* plugin.h (input_objects): New function
      	(Plugin__manager::load_plugins): New parameter.
      	(Plugin_manager::claim_file): New parameter.
      	(Plugin_manager::get_elf_object): New function.
      	(Plugin_manager::in_claim_file_handler): New function.
      	(Plugin_manager::in_claim_file_handler_): New member.
      	(layout): New function.
      	* readsyms.cc (Read_symbols::do_read_symbols): Call the claim_file
      	handler with an extra parameter. Make the elf object before calling
      	claim_file handler.
      	* testsuite/plugin_test.c (get_section_count): New function pointer.
      	(get_section_type): New function pointer.
      	(get_section_name): New function pointer.
      	(get_section_contents): New function pointer.
      	(update_section_order): New function pointer.
      	(allow_section_ordering): New function pointer.
      	(onload): Check if the new interfaces exist.
      e9552f7e
  11. 08 Jun, 2011 1 commit
    • Cary Coutant's avatar
      * common.cc (Symbol_table::do_allocate_commons_list): Call · e6455dfb
      Cary Coutant authored
      	gold_fallback.
      	* errors.cc (Errors::fatal): Adjust call to gold_exit.
      	(Errors::fallback): New function.
      	(gold_fallback): New function.
      	* errors.h (Errors::fallback): New function.
      	* gold.cc (gold_exit): Change status parameter to enum; adjust
      	all callers.
      	(queue_initial_tasks): Call gold_fallback.
      	* gold.h: Include cstdlib.
      	(Exit_status): New enum type.
      	(gold_exit): Change status parameter to enum.
      	(gold_fallback): New function.
      	* layout.cc (Layout::set_section_offsets): Call gold_fallback.
      	(Layout::create_symtab_sections): Likewise.
      	(Layout::create_shdrs): Likewise.
      	* main.cc (main): Adjust call to gold_exit.
      	* output.cc (Output_data_got::add_got_entry): Call gold_fallback.
      	(Output_data_got::add_got_entry_pair): Likewise.
      	(Output_section::add_input_section): Likewise.
      	(Output_section::add_output_section_data): Likewise.
      	(Output_segment::set_section_list_addresses): Likewise.
      	* x86_64.cc (Output_data_plt_x86_64::add_entry): Likewise.
      e6455dfb
  12. 12 Apr, 2011 1 commit
    • Cary Coutant's avatar
      * archive.cc (Archive::include_member): Adjust call to · cdc29364
      Cary Coutant authored
      	report_object.
      	(Add_archive_symbols::run): Track argument serial numbers.
      	(Lib_group::include_member): Likewise.
      	(Add_lib_group_symbols::run): Adjust call to report_archive_begin.
      	* archive.h (Incremental_archive_entry::Archive_member):
      	Initialize arg_serial_.
      	(Archive_member::arg_serial_): New data member.
      	* dynobj.cc (Dynobj::Dynobj): Allow input_file_ to be NULL.
      	(Sized_dynobj::do_add_symbols): Track symbols when doing an
      	incremental link.
      	(Sized_dynobj::do_for_all_local_got_entries): New function.
      	* dynobj.h: (Sized_dynobj::do_for_all_local_got_entries): New
      	function.
      	* fileread.cc (get_mtime): New function.
      	* fileread.h (get_mtime): New function.
      	* gold.cc (queue_initial_tasks): Check for incremental update.
      	(process_incremental_input): New function.
      	(queue_middle_tasks): Don't force valid target for incremental
      	update.
      	* incremental-dump.cc (find_input_containing_global): Adjust
      	size of symbol info entry.
      	(dump_incremental_inputs): Dump argument serial number and
      	in_system_directory flag; bias shndx by 1; print symbol names
      	when dumping per-file symbol lists; use new symbol info readers.
      	* incremental.cc
      	(Output_section_incremental_inputs:update_data_size): New function.
      	(Sized_incremental_binary::setup_readers): Setup input readers
      	for each input file; build maps for files added from libraries
      	and scripts.
      	(Sized_incremental_binary::check_input_args): New function.
      	(Sized_incremental_binary::do_check_inputs): Build map of argument
      	serial numbers to input arguments.
      	(Sized_incremental_binary::do_file_has_changed): Rename
      	do_file_is_unchanged to this; compare file modification times.
      	(Sized_incremental_binary::do_init_layout): New function.
      	(Sized_incremental_binary::do_reserve_layout): New function.
      	(Sized_incremental_binary::do_get_input_reader): Remove.
      	(Sized_incremental_binary::get_symtab_view): New function.
      	(Incremental_checker::can_incrementally_link_output_file): Remove.
      	(Incremental_inputs::report_command_line): Exclude --debug options.
      	(Incremental_inputs::report_archive_begin): Add parameter; track
      	argument serial numbers; don't put input file entry for archive
      	before archive members.
      	(Incremental_inputs::report_archive_end): Put input file entry
      	for archive after archive members.
      	(Incremental_inputs::report_object): Add parameter; track argument
      	serial numbers and in_system_directory flag.
      	(Incremental_inputs::report_script): Add parameter; track argument
      	serial numbers.
      	(Output_section_incremental_inputs::set_final_data_size): Adjust
      	size of symbol info entry; check for forwarding symbols.
      	(Output_section_incremental_inputs::write_input_files): Write
      	in_system_directory flag and argument serial number.
      	(Output_section_incremental_inputs::write_info_blocks): Map section
      	indices between incremental info and original input file; store
      	input section index for each symbol.
      	(class Local_got_offset_visitor): Derive from Got_offset_list::Visitor;
      	change operator() to visit().
      	(class Global_got_offset_visitor): Likewise.
      	(class Global_symbol_visitor_got_plt):
      	(Output_section_incremental_inputs::write_got_plt): Use new visitor
      	classes.
      	(Sized_incr_relobj::Sized_incr_relobj): New constructor.
      	(Sized_incr_relobj::do_read_symbols): New function.
      	(Sized_incr_relobj::do_layout): New function.
      	(Sized_incr_relobj::do_layout_deferred_sections): New function.
      	(Sized_incr_relobj::do_add_symbols): New function.
      	(Sized_incr_relobj::do_should_include_member): New function.
      	(Sized_incr_relobj::do_for_all_global_symbols): New function.
      	(Sized_incr_relobj::do_for_all_local_got_entries): New function.
      	(Sized_incr_relobj::do_section_size): New function.
      	(Sized_incr_relobj::do_section_name): New function.
      	(Sized_incr_relobj::do_section_contents): New function.
      	(Sized_incr_relobj::do_section_flags): New function.
      	(Sized_incr_relobj::do_section_entsize): New function.
      	(Sized_incr_relobj::do_section_address): New function.
      	(Sized_incr_relobj::do_section_type): New function.
      	(Sized_incr_relobj::do_section_link): New function.
      	(Sized_incr_relobj::do_section_info): New function.
      	(Sized_incr_relobj::do_section_addralign): New function.
      	(Sized_incr_relobj::do_initialize_xindex): New function.
      	(Sized_incr_relobj::do_get_global_symbol_counts): New function.
      	(Sized_incr_relobj::do_read_relocs): New function.
      	(Sized_incr_relobj::do_gc_process_relocs): New function.
      	(Sized_incr_relobj::do_scan_relocs): New function.
      	(Sized_incr_relobj::do_count_local_symbols): New function.
      	(Sized_incr_relobj::do_finalize_local_symbols): New function.
      	(Sized_incr_relobj::do_set_local_dynsym_indexes): New function.
      	(Sized_incr_relobj::do_set_local_dynsym_offset): New function.
      	(Sized_incr_relobj::do_relocate): New function.
      	(Sized_incr_relobj::do_set_section_offset): New function.
      	(Sized_incr_dynobj::Sized_incr_dynobj): New function.
      	(Sized_incr_dynobj::do_read_symbols): New function.
      	(Sized_incr_dynobj::do_layout): New function.
      	(Sized_incr_dynobj::do_add_symbols): New function.
      	(Sized_incr_dynobj::do_should_include_member): New function.
      	(Sized_incr_dynobj::do_for_all_global_symbols): New function.
      	(Sized_incr_dynobj::do_for_all_local_got_entries): New function.
      	(Sized_incr_dynobj::do_section_size): New function.
      	(Sized_incr_dynobj::do_section_name): New function.
      	(Sized_incr_dynobj::do_section_contents): New function.
      	(Sized_incr_dynobj::do_section_flags): New function.
      	(Sized_incr_dynobj::do_section_entsize): New function.
      	(Sized_incr_dynobj::do_section_address): New function.
      	(Sized_incr_dynobj::do_section_type): New function.
      	(Sized_incr_dynobj::do_section_link): New function.
      	(Sized_incr_dynobj::do_section_info): New function.
      	(Sized_incr_dynobj::do_section_addralign): New function.
      	(Sized_incr_dynobj::do_initialize_xindex): New function.
      	(Sized_incr_dynobj::do_get_global_symbol_counts): New function.
      	(make_sized_incremental_object): New function.
      	(Incremental_library::copy_unused_symbols): New function.
      	(Incremental_library::do_for_all_unused_symbols): New function.
      	* incremental.h (enum Incremental_input_flags): New type.
      	(class Incremental_checker): Remove.
      	(Incremental_input_entry::Incremental_input_entry): Add argument
      	serial number.
      	(Incremental_input_entry::arg_serial): New function.
      	(Incremental_input_entry::set_is_in_system_directory): New function.
      	(Incremental_input_entry::is_in_system_directory): New function.
      	(Incremental_input_entry::arg_serial_): New data member.
      	(Incremental_input_entry::is_in_system_directory_): New data member.
      	(class Script_info): Move here from script.h.
      	(Script_info::Script_info): Add filename parameter.
      	(Script_info::filename): New function.
      	(Script_info::filename_): New data member.
      	(Incremental_script_entry::Incremental_script_entry): Add argument
      	serial number.
      	(Incremental_object_entry::Incremental_object_entry): Likewise.
      	(Incremental_object_entry::add_input_section): Build list of input
      	sections with map to original shndx.
      	(Incremental_object_entry::get_input_section_index): New function.
      	(Incremental_object_entry::shndx_): New data member.
      	(Incremental_object_entry::name_key_): Rename; adjust all refs.
      	(Incremental_object_entry::sh_size_): Rename; adjust all refs.
      	(Incremental_archive_entry::Incremental_archive_entry): Add argument
      	serial number.
      	(Incremental_inputs::report_archive_begin): Likewise.
      	(Incremental_inputs::report_object): Likewise.
      	(Incremental_inputs::report_script): Likewise.
      	(class Incremental_global_symbol_reader): New class.
      	(Incremental_input_entry_reader::Incremental_input_entry_reader): Read
      	and store flags and input file type.
      	(Incremental_input_entry_reader::arg_serial): New function.
      	(Incremental_input_entry_reader::type): Extract type from flags.
      	(Incremental_input_entry_reader::is_in_system_directory): New function.
      	(Incremental_input_entry_reader::get_input_section_count): Call
      	accessor function for type.
      	(Incremental_input_entry_reader::get_symbol_offset): Call accessor
      	function for type; adjust size of global symbol entry.
      	(Incremental_input_entry_reader::get_global_symbol_count): Call
      	accessor function for type.
      	(Incremental_input_entry_reader::get_object_count): Likewise.
      	(Incremental_input_entry_reader::get_object_offset): Likewise.
      	(Incremental_input_entry_reader::get_member_count): Likewise.
      	(Incremental_input_entry_reader::get_unused_symbol_count): Likewise.
      	(Incremental_input_entry_reader::get_member_offset): Likewise.
      	(Incremental_input_entry_reader::get_unused_symbol): Likewise.
      	(Incremental_input_entry_reader::Global_symbol_info): Remove.
      	(Incremental_input_entry_reader::get_global_symbol_info): Remove.
      	(Incremental_input_entry_reader::get_global_symbol_reader): New
      	function.
      	(Incremental_input_entry_reader::get_output_symbol_index): New
      	function.
      	(Incremental_input_entry_reader::type_): Remove.
      	(Incremental_input_entry_reader::flags_): New data member.
      	(Incremental_inputs_reader::input_file_offset): New function.
      	(Incremental_inputs_reader::input_file_index): New function.
      	(Incremental_inputs_reader::input_file): Call input_file_offset.
      	(Incremental_inputs_reader::input_file_at_offset): New function.
      	(Incremental_relocs_reader::get_r_type): Reformat.
      	(Incremental_relocs_reader::get_r_shndx): Reformat.
      	(Incremental_relocs_reader::get_r_offset): Reformat.
      	(Incremental_relocs_reader::data): New function.
      	(Incremental_binary::Incremental_binary): Initialize new data members.
      	(Incremental_binary::check_inputs): Add cmdline parameter.
      	(Incremental_binary::file_is_unchanged): Remove.
      	(Input_reader::arg_serial): New function.
      	(Input_reader::get_unused_symbol_count): New function.
      	(Input_reader::get_unused_symbol): New function.
      	(Input_reader::do_arg_serial): New function.
      	(Input_reader::do_get_unused_symbol_count): New function.
      	(Input_reader::do_get_unused_symbol): New function.
      	(Incremental_binary::input_file_count): New function.
      	(Incremental_binary::get_input_reader): Change signature to use
      	index instead of filename.
      	(Incremental_binary::file_has_changed): New function.
      	(Incremental_binary::get_input_argument): New function.
      	(Incremental_binary::get_library): New function.
      	(Incremental_binary::get_script_info): New function.
      	(Incremental_binary::init_layout): New function.
      	(Incremental_binary::reserve_layout): New function.
      	(Incremental_binary::output_file): New function.
      	(Incremental_binary::do_check_inputs): New function.
      	(Incremental_binary::do_file_is_unchanged): Remove.
      	(Incremental_binary::do_file_has_changed): New function.
      	(Incremental_binary::do_init_layout): New function.
      	(Incremental_binary::do_reserve_layout): New function.
      	(Incremental_binary::do_input_file_count): New function.
      	(Incremental_binary::do_get_input_reader): Change signature.
      	(Incremental_binary::input_args_map_): New data member.
      	(Incremental_binary::library_map_): New data member.
      	(Incremental_binary::script_map_): New data member.
      	(Sized_incremental_binary::Sized_incremental_binary): Initialize
      	new data members.
      	(Sized_incremental_binary::output_section): New function.
      	(Sized_incremental_binary::inputs_reader): Add const.
      	(Sized_incremental_binary::symtab_reader): Add const.
      	(Sized_incremental_binary::relocs_reader): Add const.
      	(Sized_incremental_binary::got_plt_reader): Add const.
      	(Sized_incremental_binary::get_symtab_view): New function.
      	(Sized_incremental_binary::Inputs_reader): New typedef.
      	(Sized_incremental_binary::Input_entry_reader): New typedef.
      	(Sized_incremental_binary::do_check_inputs): Add cmdline parameter.
      	(Sized_incremental_binary::do_file_is_unchanged): Remove.
      	(Sized_incremental_binary::do_file_has_changed): New function.
      	(Sized_incremental_binary::do_init_layout): New function.
      	(Sized_incremental_binary::do_reserve_layout): New function.
      	(Sized_input_reader::Inputs_reader): Remove.
      	(Sized_input_reader::Input_entry_reader): Remove.
      	(Sized_input_reader::do_arg_serial): New function.
      	(Sized_input_reader::do_get_unused_symbol_count): New function.
      	(Sized_input_reader::do_get_unused_symbol): New function.
      	(Sized_incremental_binary::do_input_file_count): New function.
      	(Sized_incremental_binary::do_get_input_reader): Change signature;
      	use index instead of filename.
      	(Sized_incremental_binary::section_map_): New data member.
      	(Sized_incremental_binary::input_entry_readers_): New data member.
      	(class Sized_incr_relobj): New class.
      	(class Sized_incr_dynobj): New class.
      	(make_sized_incremental_object): New function.
      	(class Incremental_library): New class.
      	* layout.cc (Free_list::num_lists): New static data member.
      	(Free_list::num_nodes): New static data member.
      	(Free_list::num_removes): New static data member.
      	(Free_list::num_remove_visits): New static data member.
      	(Free_list::num_allocates): New static data member.
      	(Free_list::num_allocate_visits): New static data member.
      	(Free_list::init): New function.
      	(Free_list::remove): New function.
      	(Free_list::allocate): New function.
      	(Free_list::dump): New function.
      	(Free_list::print_stats): New function.
      	(Layout_task_runner::run): Resize output file for incremental updates.
      	(Layout::Layout): Initialize new data members.
      	(Layout::set_incremental_base): New function.
      	(Layout::init_fixed_output_section): New function.
      	(Layout::layout_eh_frame): Do not build .eh_frame_hdr section for
      	incremental updates.
      	(Layout::create_gold_note): Do not create gold note section for
      	incremental updates.
      	(Layout::set_segment_offsets): Do not recalculate RELRO alignment
      	for incremental updates.
      	(Layout::set_section_offsets): For incremental updates, allocate space
      	from free list.
      	(Layout::create_symtab_sections): Layout with offsets relative to
      	start of section; for incremental updates, allocate space from free
      	list.
      	(Layout::create_shdrs): For incremental updates, allocate space from
      	free list.
      	(Layout::finish_dynamic_section): For incremental updates, do not
      	check --as-needed (fixed in subsequent patch).
      	* layout.h (class Free_list): New class.
      	(Layout::set_incremental_base): New function.
      	(Layout::incremental_base): New function.
      	(Layout::init_fixed_output_section): New function.
      	(Layout::allocate): New function.
      	(Layout::incremental_base_): New data member.
      	(Layout::free_list_): New data member.
      	* main.cc (main): Print Free_list statistics.
      	* object.cc (Relobj::finalize_incremental_relocs): Add
      	clear_counts parameter; clear counts only when clear_counts is set.
      	(Sized_relobj::Sized_relobj): Initialize new base class.
      	(Sized_relobj::do_layout): Don't report special sections.
      	(Sized_relobj::do_for_all_local_got_entries): New function.
      	(Sized_relobj::write_local_symbols): Add symtab_off parameter; add
      	symtab_off to all symbol table offsets.
      	(Sized_relobj::do_get_global_symbol_counts): Add typename keyword.
      	* object.h (class Got_offset_list): Move to top of file.
      	(Object::Object): Allow case where input_file == NULL.
      	(Object::~Object): Likewise.
      	(Object::input_file): Assert that input_file != NULL.
      	(Object::lock): Allow case where input_file == NULL.
      	(Object::unlock): Likewise.
      	(Object::is_locked): Likewise.
      	(Object::token): Likewise.
      	(Object::release): Likewise.
      	(Object::is_incremental): New function.
      	(Object::get_mtime): New function.
      	(Object::for_all_local_got_entries): New function.
      	(Object::clear_view_cache_marks): Allow case where input_file == NULL.
      	(Object::set_is_in_system_directory): New function.
      	(Object::is_in_system_directory): New function.
      	(Object::do_is_incremental): New function.
      	(Object::do_get_mtime): New function.
      	(Object::do_for_all_local_got_entries): New function.
      	(Object::is_in_system_directory_): New data member.
      	(Relobj::finalize_incremental_relocs): Add clear_counts parameter.
      	(class Sized_relobj_base): New class.
      	(class Sized_relobj): Derive from Sized_relobj_base.
      	(class Sized_relobj::Symbols): Redeclare from base class.
      	(class Sized_relobj::local_got_offset_list): Remove.
      	(class Sized_relobj::Output_sections): Redeclare from base class.
      	(class Sized_relobj::do_for_all_local_got_entries): New function.
      	(class Sized_relobj::write_local_symbols): Add offset parameter.
      	(class Sized_relobj::local_symbol_offset_): Update comment.
      	(class Sized_relobj::local_dynsym_offset_): Update comment.
      	* options.cc (Input_arguments::add_file): Remove const.
      	* options.h (Input_file_argument::Input_file_argument):
      	Initialize arg_serial_ (all constructors).
      	(Input_file_argument::set_arg_serial): New function.
      	(Input_file_argument::arg_serial): New function.
      	(Input_file_argument::arg_serial_): New data member.
      	(Input_arguments::Input_arguments): Initialize file_count_.
      	(Input_arguments::add_file): Remove const.
      	(Input_arguments::number_of_input_files): New function.
      	(Input_arguments::file_count_): New data member.
      	(Command_line::number_of_input_files): Call
      	Input_arguments::number_of_input_files.
      	* output.cc (Output_segment_headers::Output_segment_headers):
      	Set current size.
      	(Output_section::Input_section::current_data_size): New function.
      	(Output_section::Output_section): Initialize new data members.
      	(Output_section::add_input_section): Don't do merge sections for
      	an incremental link; allocate space from free list for an
      	incremental update.
      	(Output_section::add_output_section_data): Allocate space from
      	free list for an incremental update.
      	(Output_section::update_data_size): New function.
      	(Output_section::set_fixed_layout): New function.
      	(Output_section::reserve): New function.
      	(Output_segment::set_section_addresses): Remove const.
      	(Output_segment::set_section_list_addresses): Remove const; allocate
      	space from free list for an incremental update.
      	(Output_segment::set_offset): Adjust size of RELRO segment for an
      	incremental update.
      	* output.h (Output_data::current_data_size): Move here from
      	child classes.
      	(Output_data::pre_finalize_data_size): New function.
      	(Output_data::update_data_size): New function.
      	(Output_section_headers::update_data_size): new function.
      	(Output_section_data_build::current_data_size): Move to Output_data.
      	(Output_data_strtab::update_data_size): New function.
      	(Output_section::current_data_size): Move to Output_data.
      	(Output_section::set_fixed_layout): New function.
      	(Output_section::has_fixed_layout): New function.
      	(Output_section::reserve): New function.
      	(Output_section::update_data_size): New function.
      	(Output_section::has_fixed_layout_): New data member.
      	(Output_section::free_list_): New data member.
      	(Output_segment::set_section_addresses): Remove const.
      	(Output_segment::set_section_list_addresses): Remove const.
      	* plugin.cc (Sized_pluginobj::do_for_all_local_got_entries):
      	New function.
      	* plugin.h (Sized_pluginobj::do_for_all_local_got_entries):
      	New function.
      	* readsyms.cc (Read_symbols::do_read_symbols): Add library
      	parameter when calling Add_symbols constructor; store argument
      	serial number for members of a lib group.
      	(Add_symbols::locks): Allow case where token == NULL.
      	(Add_symbols::run): Report libraries denoted by --start-lib/--end-lib.
      	(Read_member::~Read_member): New function.
      	(Read_member::is_runnable): New function.
      	(Read_member::locks): New function.
      	(Read_member::run): New function.
      	(Check_script::~Check_script): New function.
      	(Check_script::is_runnable): New function.
      	(Check_script::locks): New function.
      	(Check_script::run): New function.
      	(Check_library::~Check_library): New function.
      	(Check_library::is_runnable): New function.
      	(Check_library::locks): New function.
      	(Check_library::run): New function.
      	* readsyms.h (Add_symbols::Add_symbols): Add library parameter.
      	(Add_symbols::library_): New data member.
      	(class Read_member): New class.
      	(class Check_script): New class.
      	(class Check_library): New class.
      	* reloc.cc (Read_relocs::is_runnable): Allow case where
      	token == NULL.
      	(Read_relocs::locks): Likewise.
      	(Scan_relocs::locks): Likewise.
      	(Relocate_task::locks): Likewise.
      	(Sized_relobj::do_scan_relocs): Tell finalize_incremental_relocs
      	to clear counters.
      	(Sized_relobj::incremental_relocs_scan): Fix comment.
      	(Sized_relobj::do_relocate): Pass output file offset to
      	write_local_symbols.
      	(Sized_relobj::incremental_relocs_write_reltype): Use reloc_size
      	from class declaration.
      	* script.cc (read_input_script): Allocate Script_info; pass
      	argument serial number to report_script.
      	* script.h (class Script_info): Move to incremental.h.
      	* symtab.cc (Symbol_table::add_from_incrobj): New function.
      	* symtab.h (Symbol_table::add_from_incrobj): New function.
      	(Symbol_table::set_file_offset): New function.
      cdc29364
  13. 14 Dec, 2010 1 commit
    • Ralf Wildenhues's avatar
      Fix typos in gold. · 9b547ce6
      Ralf Wildenhues authored
      gold/:
      	* dwarf_reader.cc: Remove outdated comment.
      	* gold-threads.cc: Fix typo in error message.
      	* archive.cc: Fix typos in comments.
      	* archive.h: Likewise.
      	* arm-reloc-property.cc: Likewise.
      	* arm-reloc-property.h: Likewise.
      	* arm-reloc.def: Likewise.
      	* arm.cc: Likewise.
      	* attributes.h: Likewise.
      	* cref.cc: Likewise.
      	* ehframe.cc: Likewise.
      	* fileread.h: Likewise.
      	* gold.h: Likewise.
      	* i386.cc: Likewise.
      	* icf.cc: Likewise.
      	* incremental.h: Likewise.
      	* int_encoding.cc: Likewise.
      	* layout.h: Likewise.
      	* main.cc: Likewise.
      	* merge.h: Likewise.
      	* object.cc: Likewise.
      	* object.h: Likewise.
      	* options.cc: Likewise.
      	* readsyms.cc: Likewise.
      	* reduced_debug_output.cc: Likewise.
      	* reloc.cc: Likewise.
      	* script-sections.cc: Likewise.
      	* sparc.cc: Likewise.
      	* symtab.h: Likewise.
      	* target-reloc.h: Likewise.
      	* target.cc: Likewise.
      	* target.h: Likewise.
      	* timer.cc: Likewise.
      	* timer.h: Likewise.
      	* x86_64.cc: Likewise.
      9b547ce6
  14. 25 Aug, 2010 1 commit
    • Nick Clifton's avatar
      * archive.cc: Formatting fixes: Remove whitespace between · ca09d69a
      Nick Clifton authored
              typename and following asterisk.  Remove whitespace between
              function name and opening parenthesis.
              * archive.h: Likewise.
              * arm.cc: Likewise.
              * attributes.cc: Likewise.
              * attributes.h: Likewise.
              * common.cc: Likewise.
              * copy-relocs.cc: Likewise.
              * dirsearch.h: Likewise.
              * dynobj.cc: Likewise.
              * ehframe.cc: Likewise.
              * ehframe.h: Likewise.
              * expression.cc: Likewise.
              * fileread.cc: Likewise.
              * fileread.h: Likewise.
              * gc.h: Likewise.
              * gold-threads.cc: Likewise.
              * gold.cc: Likewise.
              * i386.cc: Likewise.
              * icf.h: Likewise.
              * incremental-dump.cc: Likewise.
              * incremental.cc: Likewise.
              * layout.cc: Likewise.
              * layout.h: Likewise.
              * main.cc: Likewise.
              * merge.cc: Likewise.
              * merge.h: Likewise.
              * object.cc: Likewise.
              * object.h: Likewise.
              * options.cc: Likewise.
              * options.h: Likewise.
              * output.cc: Likewise.
              * output.h: Likewise.
              * plugin.cc: Likewise.
              * plugin.h: Likewise.
              * powerpc.cc: Likewise.
              * reloc.cc: Likewise.
              * script-c.h: Likewise.
              * script-sections.cc: Likewise.
              * script.cc: Likewise.
              * stringpool.cc: Likewise.
              * symtab.cc: Likewise.
              * symtab.h: Likewise.
              * target.cc: Likewise.
              * timer.cc: Likewise.
              * timer.h: Likewise.
              * version.cc: Likewise.
              * x86_64.cc: Likewise.
      ca09d69a
  15. 12 Aug, 2010 1 commit
    • Cary Coutant's avatar
      elfcpp/ChangeLog: · 09ec0418
      Cary Coutant authored
      	* elfcpp.h (enum SHT): Add SHT_GNU_INCREMENTAL_SYMTAB,
      	SHT_GNU_INCREMENTAL_RELOCS.
      
      gold/ChangeLog:
      
      	* archive.cc: Include incremental.h.
      	(Archive::Archive): Initialize incremental_info_.
      	(Archive::include_member): Record archive members in incremental info.
      	(Add_archive_symbols::run): Record begin and end of an archive in
      	incremental info.
      	(Lib_group::include_member): Record objects in incremental info.
      	* archive.h (Incremental_archive_entry): Forward declaration.
      	(Archive::set_incremental_info): New member function.
      	(Archive::incremental_info): New member function.
      	(Archive::Unused_symbol_iterator): New class.
      	(Archive::unused_symbols_begin): New member function.
      	(Archive::unused_symbols_end): New member function.
      	(Archive::incremental_info_): New data member.
      	* incremental-dump.cc (find_input_containing_global): New function.
      	(dump_incremental_inputs): Dump new incremental info sections.
      	* incremental.cc: Include symtab.h.
      	(Output_section_incremental_inputs): New class.
      	(Sized_incremental_binary::do_find_incremental_inputs_sections): Support
      	new incremental info sections.
      	(Sized_incremental_binary::do_check_inputs): Likewise.
      	(Incremental_inputs::report_archive): Remove.
      	(Incremental_inputs::report_archive_begin): New function.
      	(Incremental_inputs::report_archive_end): New function.
      	(Incremental_inputs::report_object): New function.
      	(Incremental_inputs::finalize_inputs): Remove.
      	(Incremental_inputs::report_input_section): New function.
      	(Incremental_inputs::report_script): Rewrite.
      	(Incremental_inputs::finalize): Do nothing but finalize string table.
      	(Incremental_inputs::create_incremental_inputs_section_data): Remove.
      	(Incremental_inputs::sized_create_inputs_section_data): Remove.
      	(Incremental_inputs::create_data_sections): New function.
      	(Incremental_inputs::relocs_entsize): New function.
      	(Output_section_incremental_inputs::set_final_data_size): New function.
      	(Output_section_incremental_inputs::do_write): New function.
      	(Output_section_incremental_inputs::write_header): New function.
      	(Output_section_incremental_inputs::write_input_files): New function.
      	(Output_section_incremental_inputs::write_info_blocks): New function.
      	(Output_section_incremental_inputs::write_symtab): New function.
      	* incremental.h (Incremental_script_entry): Forward declaration.
      	(Incremental_object_entry): Forward declaration.
      	(Incremental_archive_entry): Forward declaration.
      	(Incremental_inputs): Forward declaration.
      	(Incremental_inputs_header_data): Remove.
      	(Incremental_inputs_header): Remove.
      	(Incremental_inputs_header_write): Remove.
      	(Incremental_inputs_entry_data): Remove.
      	(Incremental_inputs_entry): Remove.
      	(Incremental_inputs_entry_write): Remove.
      	(enum Incremental_input_type): Add INCREMENTAL_INPUT_ARCHIVE_MEMBER.
      	(Incremental_binary::find_incremental_inputs_sections): Add parameters.
      	(Incremental_binary::do_find_incremental_inputs_sections): Likewise.
      	(Sized_ncremental_binary::do_find_incremental_inputs_sections):
      	Likewise.
      	(Incremental_input_entry): New class.
      	(Incremental_script_entry): New class.
      	(Incremental_object_entry): New class.
      	(Incremental_archive_entry): New class.
      	(Incremental_inputs::Incremental_inputs): Initialize new data members.
      	(Incremental_inputs::report_inputs): Remove.
      	(Incremental_inputs::report_archive): Remove.
      	(Incremental_inputs::report_archive_begin): New function.
      	(Incremental_inputs::report_archive_end): New function.
      	(Incremental_inputs::report_object): Change prototype.
      	(Incremental_inputs::report_input_section): New function.
      	(Incremental_inputs::report_script): Change prototype.
      	(Incremental_inputs::get_reloc_count): New function.
      	(Incremental_inputs::set_reloc_count): New function.
      	(Incremental_inputs::create_data_sections): New function.
      	(Incremental_inputs::create_incremental_inputs_section_data): Remove.
      	(Incremental_inputs::inputs_section): New function.
      	(Incremental_inputs::symtab_section): New function.
      	(Incremental_inputs::relocs_section): New function.
      	(Incremental_inputs::get_stringpool): Add const.
      	(Incremental_inputs::command_line): Add const.
      	(Incremental_inputs::inputs): Remove.
      	(Incremental_inputs::command_line_key): New function.
      	(Incremental_inputs::input_file_count): New function.
      	(Incremental_inputs::input_files): New function.
      	(Incremental_inputs::relocs_entsize): New function.
      	(Incremental_inputs::sized_create_inputs_section_data): Remove.
      	(Incremental_inputs::finalize_inputs): Remove.
      	(Incremental_inputs::Input_info): Remove.
      	(Incremental_inputs::lock_): Remove.
      	(Incremental_inputs::inputs_): Change type.
      	(Incremental_inputs::inputs_map_): Remove.
      	(Incremental_inputs::current_object_entry_): New data member.
      	(Incremental_inputs::inputs_section_): New data member.
      	(Incremental_inputs::symtab_section_): New data member.
      	(Incremental_inputs::relocs_section_): New data member.
      	(Incremental_inputs::reloc_count_): New data member.
      	(Incremental_inputs_reader): New class.
      	(Incremental_symtab_reader): New class.
      	(Incremental_relocs_reader): New class.
      	* layout.cc (Layout::finalize): Move finalization of incremental info
      	and creation of incremental info sections to follow finalization of
      	symbol table.  Set offsets for postprocessing sections.
      	(Layout::create_incremental_info_sections): Call
      	Incremental_inputs::create_data_sections.  Add incremental symtab
      	and relocs sections.  Set sh_entsize and sh_link fields.  Arrange for
      	sections to layout after input sections.
      	* layout.h (struct Timespec): Forward declaration.
      	(Layout::incremental_inputs): Add const.
      	(Layout::create_incremental_info_sections): Add parameter.
      	* main.cc (main): Remove call to Incremental_inputs::report_inputs.
      	* object.cc: Include incremental.h.
      	(Relobj::finalize_incremental_relocs): New function.
      	(Sized_relobj::do_layout): Record input sections in incremental info.
      	* object.h (Object::output_section): New function.
      	(Object::output_section_offset): Moved from Relobj.
      	(Object::get_incremental_reloc_base): New function.
      	(Object::get_incremental_reloc_count): New function.
      	(Object::do_output_section): New function.
      	(Object::do_output_section_offset): Moved from Relobj.
      	(Object::do_get_incremental_reloc_base): New function.
      	(Object::do_get_incremental_reloc_count): New function.
      	(Object::Object): Initialize new data members.
      	(Relobj::output_section): Renamed do_output_section and moved to
      	protected.
      	(Relobj::output_section_offset): Moved to Object.
      	(Relobj::do_get_incremental_reloc_base): New function.
      	(Relobj::do_get_incremental_reloc_count): New function.
      	(Relobj::allocate_incremental_reloc_counts): New function.
      	(Relobj::count_incremental_reloc): New function.
      	(Relobj::finalize_incremental_relocs): New function.
      	(Relobj::next_incremental_reloc_index): New function.
      	(Relobj::reloc_counts_): New data member.
      	(Relobj::reloc_bases_): New data member.
      	(Sized_relobj::do_relocate_sections): Add parameter.  Change caller.
      	(Sized_relobj::relocate_sections): Add parameter.  Change all callers.
      	(Sized_relobj::incremental_relocs_scan): New function.
      	(Sized_relobj::incremental_relocs_scan_reltype): New function.
      	(Sized_relobj::incremental_relocs_write): New function.
      	(Sized_relobj::incremental_relocs_write_reltype): New function.
      	* plugin.cc (Plugin_manager::add_input_file): Rewrite test for
      	incremental link.
      	* readsyms.cc (Read_symbols::do_read_symbols): Move reporting of
      	archives and object files elsewhere.
      	(Add_symbols::run): Report object files here.
      	(Finish_group::run): Report end of archive at end of group.
      	* reloc.cc: Include layout.h, incremental.h.
      	(Sized_relobj::do_read_relocs): Need relocations for incremental link.
      	(Sized_relobj::do_scan_relocs): Record relocations for incremental link.
      	(Sized_relobj::incremental_relocs_scan): New function.
      	(Sized_relobj::incremental_relocs_scan_reltype): New function.
      	(Sized_relobj::do_relocate_sections): Write incremental relocations.
      	(Sized_relobj::incremental_relocs_write): New function.
      	(Sized_relobj::incremental_relocs_write_reltype): New function.
      	* script.cc (read_input_script): Rewrite test for incremental link.
      	Change call to Incremental_inputs::report_script.
      	* symtab.h (Symbol_table::first_global_index): New function.
      	(Symbol_table::output_count): New function.
      09ec0418
  16. 01 Jun, 2010 1 commit
    • Sriraman Tallam's avatar
      * gold.h (is_wildcard_string): New function. · 6e9ba2ca
      Sriraman Tallam authored
      	* layout.cc (Layout::layout): Pass this pointer to add_input_section.
      	(Layout::layout_eh_frame): Ditto.
      	(Layout::find_section_order_index): New method.
      	(Layout::read_layout_from_file): New method.
      	* layout.h (Layout::find_section_order_index): New method.
      	(Layout::read_layout_from_file): New method.
      	(Layout::input_section_position_): New private member.
      	(Layout::input_section_glob_): New private member.
      	* main.cc (main): Call read_layout_from_file here.
      	* options.h (--section-ordering-file): New option.
      	* output.cc (Output_section::input_section_order_specified_): New
      	member.
      	(Output_section::Output_section): Initialize new member.
      	(Output_section::add_input_section): Add new parameter.
      	Keep input sections when --section-ordering-file is used.
      	(Output_section::set_final_data_size): Sort input sections when
      	section ordering file is specified.
      	(Output_section::Input_section_sort_entry): Add new parameter.
      	Check sorting type.
      	(Output_section::Input_section_sort_entry::compare_section_ordering):
      	New method.
      	(Output_section::Input_section_sort_compare::operator()): Change to
      	consider section_order_index.
      	(Output_section::Input_section_sort_init_fini_compare::operator()):
      	Change to consider section_order_index.
      	(Output_section::Input_section_sort_section_order_index_compare
      	::operator()): New method.
      	(Output_section::sort_attached_input_sections): Change to sort
      	according to section order when specified.
      	(Output_section::add_input_section<32, true>): Add new parameter.
      	(Output_section::add_input_section<64, true>): Add new parameter.
      	(Output_section::add_input_section<32, false>): Add new parameter.
      	(Output_section::add_input_section<64, false>): Add new parameter.
      	* output.h (Output_section::add_input_section): Add new parameter.
      	(Output_section::input_section_order_specified): New
      	method.
      	(Output_section::set_input_section_order_specified): New method.
      	(Input_section::Input_section): Initialize section_order_index_.
      	(Input_section::section_order_index): New method.
      	(Input_section::set_section_order_index): New method.
      	(Input_section::section_order_index_): New member.
      	(Input_section::Input_section_sort_section_order_index_compare): New
      	struct.
      	(Output_section::input_section_order_specified_): New member.
      	* script-sections.cc (is_wildcard_string): Delete and move modified
      	method to gold.h.
      	(Output_section_element_input::Output_section_element_input): Modify
      	call to is_wildcard_string.
      	(Output_section_element_input::Input_section_pattern
      	::Input_section_pattern): Ditto.
      	(Output_section_element_input::Output_section_element_input): Ditto.
      	* testsuite/Makefile.am (final_layout): New test case.
      	* testsuite/Makefile.in: Regenerate.
      	* testsuite/final_layout.cc: New file.
      	* testsuite/final_layout.sh: New file.
      6e9ba2ca
  17. 22 Mar, 2010 1 commit
    • Rafael Ávila de Espíndola's avatar
      2010-03-22 Rafael Espindola <espindola@google.com> · b0193076
      Rafael Ávila de Espíndola authored
      	* archive.cc (Should_include): Move to archive.h.
      	(should_include_member): Make it a member of Archive.
      	(Lib_group): New.
      	(Add_lib_group_symbols): New.
      	* archive.h: Include options.h.
      	(Archive_member): Moved from Archive.
      	(Should_include): Moved from archive.cc.
      	(Lib_group): New.
      	(Add_lib_group_symbols): New.
      	* dynobj.cc (do_should_include_member): New.
      	* dynobj.h (do_should_include_member): New.
      	* gold.cc (queue_initial_tasks): Update call to queue.
      	* main.cc (main): Print lib group stats.
      	* object.cc (do_should_include_member): New.
      	* object.h: Include archive.h.
      	(Object::should_include_member): New.
      	(Object::do_should_include_member): New.
      	(Sized_relobj::do_should_include_member): New.
      	* options.cc (General_options::parse_start_lib): New.
      	(General_options::parse_end_lib): New.
      	(Input_arguments::add_file): Handle lib groups.
      	(Input_arguments::start_group): Check we are not in a lib.
      	(Input_arguments::start_lib): New.
      	(Input_arguments::end_lib): New.
      	* options.h (General_options): Add start_lib and end_lib.
      	(Input_argument::lib_): New.
      	(Input_argument::lib): New.
      	(Input_argument::is_lib): New.
      	(Input_file_lib): New.
      	(Input_arguments::in_lib_): New.
      	(Input_arguments::in_lib): New.
      	(Input_arguments::start_lib): New.
      	(Input_arguments::end_lib_): New.
      	* plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
      	in unused members as preempted.
      	(Sized_pluginobj::do_should_include_member): New.
      	* plugin.h (Sized_pluginobj::do_should_include_member): New.
      	* readsyms.cc (Read_symbols::locks): If we are just reading a member,
      	return the blocker.
      	(Read_symbols::do_whole_lib_group): New.
      	(Read_symbols::do_lib_group): New.
      	(Read_symbols::do_read_symbols): Handle lib groups.
      	(Read_symbols::get_name): Handle lib groups.
      	* readsyms.h (Read_symbols): Add an archive member pointer.
      	(Read_symbols::do_whole_lib_group): New.
      	(Read_symbols::do_lib_group): New.
      	(Read_symbols::member_): New.
      	* script.cc (read_input_script): Update call to queue_soon.
      b0193076
  18. 05 Jan, 2010 1 commit
    • Ian Lance Taylor's avatar
      PR 10980 · dde3f402
      Ian Lance Taylor authored
      	* options.h (class General_options): Add --cref.
      	* main.cc (main): Print cref table if --cref.  Don't close mapfile
      	until after printing cref table.
      	* cref.cc: Include "symtab.h".
      	(class Cref_inputs): Define Cref_table_compare and Cref_table.
      	(Cref_table_compare::operator()): New function.
      	(Cref_inputs::gather_cref): New function.
      	(filecol): New static const.
      	(Cref_inputs::print_cref): New function.
      	(Cref::print_cref): New function.
      	* cref.h: Include <cstdio>.
      	(class Cref): Update declarations.
      	* mapfile.h (Mapfile::file): New function.
      	* object.h (class Object): Define Symbols.  Declare virtual
      	do_get_global_symbols.
      	(Object::get_global_symbols): New function.
      	* object.cc (Input_objects::add_object): Pass object to cref_ if
      	--cref.
      	(Input_objects::archive_start): Likewise.
      	(Input_objects::archive_stop): Likewise.
      	(Input_objects::print_cref): New function.
      	* dynobj.h (Sized_dynobj::do_get_global_symbols): New function.
      	* dynobj.cc (big_endian>::do_add_symbols): Create symbols_ if
      	--cref.
      	* plugin.cc (Sized_pluginobj::do_get_global_symbols): New
      	function.
      	* plugin.h (class Sized_pluginobj): Update declarations.
      dde3f402
  19. 29 Dec, 2009 1 commit
  20. 17 Dec, 2009 1 commit
    • Rafael Ávila de Espíndola's avatar
      2009-12-17 Rafael Avila de Espindola <espindola@google.com> · d675ff46
      Rafael Ávila de Espíndola authored
      	* 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.
      d675ff46
  21. 13 Oct, 2009 1 commit
    • Sriraman Tallam's avatar
      * gc.h (gc_process_relocs): Check if icf is enabled using new · 032ce4e9
      Sriraman Tallam authored
      	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.
      032ce4e9
  22. 05 Aug, 2009 1 commit
  23. 15 May, 2009 1 commit
    • Ian Lance Taylor's avatar
      * gold.h (Incremental_argument_list): Remove (invalid) forward · 072fe7ce
      Ian Lance Taylor authored
      	declaration.
      	* incremental.cc (Incremental_inputs::report_achive): New method.
      	(Incremental_inputs::report_object): New method.
      	(Incremental_inputs::report_script): New method.
      	(Incremental_inputs::finalize_inputs): New method.
      	(Incremental_inputs::finalize): Call finalize_inputs().
      	(Incremental_inputs::sized_create_incremental_inputs_section_data):
      	Create inputs entries.
      	* incremental.h (Incremental_input_type): New enum.
      	(Incremental_inputs::Incremental_input): Initialize new fields.
      	(Incremental_inputs::report_inputs): New method.
      	(Incremental_inputs::report_achive): New method.
      	(Incremental_inputs::report_object): New method.
      	(Incremental_inputs::report_script): New method.
      	(Incremental_inputs::finalize_inputs): New method.
      	(Incremental_inputs::Input_info): New struct.
      	(Incremental_inputs::Input_info_map): New typedef.
      	(Incremental_inputs::lock_): New field.
      	(Incremental_inputs::Inputs_): New field.
      	(Incremental_inputs::Inputs_map): New field.
      	* main.cc (main): Call Incremental_input::report_inputs.
      	* options.h (Input_argument_list): Typedef moved from
      	Input_arguments.
      	(Input_file_group::Files): Remove, use ::Input_argument_list.
      	(Input_file_group::Input_argument_list): Remove, use
      	::Input_argument_list.
      	* plugin.cc (Plugin_manager::add_input_file): Add error in
      	incremental build.
      	* read_syms.cc (do_read_syms): Call Incremental_input::report_*
      	functions.
      	* script.cc (read_input_script): Call
      	Incremental_input::report_script.
      	* script.h (Script_info): New class.
      072fe7ce
  24. 24 Apr, 2009 1 commit
    • Ian Lance Taylor's avatar
      * incremental.cc (Incremental_inputs_header_data): Renamed from · 3ce2c28e
      Ian Lance Taylor authored
      	Incremental_input_header_data.
      	(Incremental_inputs_header_data::data_size): New field.
      	(Incremental_inputs_header_data::put_input_file_count): Renamed
      	from input_file_count.
      	(Incremental_inputs_header_data::put_command_line_offset): Renamed
      	from command_line_offset.
      	(Incremental_inputs_header_data::put_reserved): Renamed from
      	put_reserved.
      	(Incremental_inputs_entry_data): Renamed from
      	Incremental_input_entry_data.
      	(Incremental_inputs_entry_data::data_size): New field.
      	(Incremental_inputs::report_command_line): New method.
      	(Incremental_inputs::finalize): New method.
      	(Incremental_inputs::create_incremental_inputs_data): New method.
      	(Incremental_inputs::sized_create_incremental_inputs_data): New method.
      	* incremental.h: New file.
      	* layout.cc (Layout::Layout): Handle new incremental_inputs_.
             (Layout::finalize): Create incremental inputs section in
      	incremental builds.
             (Layout::create_incremental_info_sections): New method.
      	* layout.h (Layout::incremental_inputs): New method.
             (Layout::create_incremental_info_sections): New method.
             (Layout::incremental_inputs_): New field.
      	* main.cc (main): Notify Incremental_input of the command line.
      3ce2c28e
  25. 02 Apr, 2009 1 commit
    • Ian Lance Taylor's avatar
      * gold.h (reserve_unordered_map): Define, three versions, one for · e55bde5e
      Ian Lance Taylor authored
      	each version of Unordered_map.
      	* layout.cc (Layout::Layout): Remove options parameter.  Add
      	number_of_input_files parameter.  Don't initialize options_.
      	Initialize number_of_input_files_ and resized_signatures_.  Move
      	sections_are_attached_.
      	(Layout::layout_group): Reserve space for group_signatures_.
      	(Layout::find_or_add_kept_section): Change name parameter to be a
      	reference.  Resize signatures_ map when it gets large enough.
      	(Layout::layout_eh_frame): Use parameters->options() instead of
      	this->options_.
      	(Layout::make_output_section): Likewise.
      	(Layout::attach_allocated_section_to_segment): Likewise.
      	(Layout::finalize, Layout::create_executable_stack): Likewise.
      	(Layout::set_segment_offsets, Layout::create_interp): Likewise.
      	(Layout::finish_dynamic_section, Layout::write_binary): Likewise.
      	* layout.h (class Layout): Update declarations.  Remove options_
      	field.  Add number_of_input_files_ and resized_signatures_
      	fields.  Move sections_are_attached_ field.
      	* main.cc (main): Pass number of input files to Layout
      	constructor.  Don't pass options.
      e55bde5e
  26. 28 Jan, 2009 1 commit
    • Sriraman Tallam's avatar
      2009-01-20 Sriraman Tallam <tmsriram@google.com> · 6d03d481
      Sriraman Tallam authored
      	* Makefile.am (CCFILES): Add gc.cc.
      	(HFILES): Add gc.h.
      	* Makefile.in: Regenerate.
      	* gold.cc (Gc_runner): New class.
      	(queue_initial_tasks): Call garbage collection related tasks
      	when corresponding options are invoked.
      	(queue_middle_gc_tasks): New function.
      	(queue_middle_tasks): Reorder tasks to allow relocs to be read and
      	processed early before laying out sections during garbage collection.
      	* gold.h (queue_middle_gc_tasks): New function.
      	(is_prefix_of): Move from "layout.cc".
      	* i386.cc (Target_i386::gc_process_relocs): New function.
      	* layout.cc (is_prefix_of): Remove. Move to "gold.h"
      	* main.cc (main): Create object of class "Garbage_collection".
      	* object.cc (Relobj::copy_symbols_data): New function.
      	(Relobj::is_section_name_included): New function.
      	(Sized_relobj::do_layout): Allow this function to be called twice
      	during garbage collection and defer layout of section during the
      	first call.
      	* object.h (Relobj::get_symbols_data): New function.
      	(Relobj::is_section_name_included): New function.
      	(Relobj::copy_symbols_data): New function.
      	(Relobj::set_symbols_data): New function.
      	(Relobj::get_relocs_data): New function.
      	(Relobj::set_relocs_data): New function.
      	(Relobj::is_output_section_offset_invalid): New pure virtual function.
      	(Relobj::gc_process_relocs): New function.
      	(Relobj::do_gc_process_relocs): New pure virtual function.
      	(Relobj::sd_): New data member.
      	(Sized_relobj::is_output_section_offset_invalid): New function.
      	(Sized_relobj::do_gc_process_relocs): New function.
      	* options.h (General_options::gc_sections): Modify to not be a no-op.
      	(General_options::print_gc_sections): New option.
      	* plugin.cc (Plugin_finish::run): Remove function call to
      	Plugin_manager::layout_deferred_objects.  Move it to "gold.cc".
      	* powerpc.cc (Target_powerpc::gc_process_relocs): New function.
      	* reloc.cc (Read_relocs::run): Add task to process relocs and
      	determine unreferenced sections when doing garbage collection.
      	(Gc_process_relocs): New class.
      	(Sized_relobj::do_gc_process_relocs): New function.
      	(Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
      	sections that are garbage collected.
      	* reloc.h (Gc_process_relocs): New class.
      	* sparc.cc (Target_sparc::gc_process_relocs): New function.
      	* symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
      	symbols whose corresponding sections are garbage collected.
      	(Symbol_table::Symbol_table): Add new parameter for the garbage
      	collection object.
      	(Symbol_table::gc_mark_undef_symbols): New function.
      	(Symbol_table::gc_mark_symbol_for_shlib): New function.
      	(Symbol_table::gc_mark_dyn_syms): New function.
      	(Symbol_table::resolve): Do not treat symbols seen in dynamic objects
      	as garbage.
      	(Symbol_table::add_from_object): Likewise.
      	(Symbol_table::add_from_relobj): When building shared objects, do not
      	treat externally visible symbols as garbage.
      	(Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
      	table information for static and relocatable links.
      	* symtab.h (Symbol_table::set_gc): New function.
      	(Symbol_table::gc): New function.
      	(Symbol_table::gc_mark_undef_symbols): New function.
      	(Symbol_table::gc_mark_symbol_for_shlib): New function.
      	(Symbol_table::gc_mark_dyn_syms): New function.
      	(Symbol_table::gc_): New data member.
      	* target.h (Sized_target::gc_process_relocs): New pure virtual
      	function.
      	* x86_64.cc (Target_x86_64::gc_process_relocs): New function.
      	* testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
      6d03d481
  27. 19 Sep, 2008 1 commit
    • Cary Coutant's avatar
      Add plugin functionality for link-time optimization (LTO). · 89fc3421
      Cary Coutant authored
      include/:
      	* plugin-api.h: New file.
      
      gold/:
      	* configure.ac (plugins): Add --enable-plugins option.
      	* configure: Regenerate.
      	* config.in: Regenerate.
      	* Makefile.am (LIBDL): New variable.
      	(CCFILES): Add plugin.cc.
      	(HFILES): Add plugin.h.
      	(ldadd_var): Add LIBDL.
      	* Makefile.in: Regenerate.
      
      	* archive.cc: Include "plugin.h".
      	(Archive::setup): Don't preread archive symbols when using a plugin.
      	(Archive::get_file_and_offset): Add memsize parameter.  Change callers.
      	(Archive::get_elf_object_for_member): Call plugin hooks for claiming
      	files.
      	(Archive::include_member): Add symbols from plugin objects.
      	* archive.h (Archive::get_file_and_offset): Add memsize parameter.
      	* descriptors.cc (Descriptors::open): Check for file descriptors
      	abandoned by plugins.
      	(Descriptors::claim_for_plugin): New function.
      	* descriptors.h (Descriptors::claim_for_plugin): New function.
      	(Open_descriptor::is_claimed): New field.
      	(claim_descriptor_for_plugin): New function.
      	* fileread.cc (File_read::claim_for_plugin): New function.
      	* fileread.h (File_read::claim_for_plugin): New function.
      	(File_read::descriptor): New function.
      	* gold.cc: Include "plugin.h".
      	(queue_initial_tasks): Add task to call plugin hooks for generating
      	new object files.
      	* main.cc: Include "plugin.h".
      	(main): Load plugin libraries.
      	* object.h (Pluginobj): Declare.
      	(Object::pluginobj): New function.
      	(Object::do_pluginobj): New function.
      	(Object::set_target): New function.
      	* options.cc: Include "plugin.h".
      	(General_options::parse_plugin): New function.
      	(General_options::General_options): Initialize plugins_ field.
      	(General_options::add_plugin): New function.
      	* options.h (Plugin_manager): Declare.
      	(General_options): Add --plugin option.
      	(General_options::has_plugins): New function.
      	(General_options::plugins): New function.
      	(General_options::add_plugin): New function.
      	(General_options::plugins_): New field.
      	* plugin.cc: New file.
      	* plugin.h: New file.
      	* readsyms.cc: Include "plugin.h".
      	(Read_symbols::do_read_symbols): Check for archive before checking
      	for ELF file.  Call plugin hooks to claim files.
      	* resolve.cc (Symbol_table::resolve): Record when symbol is referenced
      	from a real object file; force override when processing replacement
      	files.
      	* symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
      	(Symbol::init_base_object): Likewise.
      	(Symbol::init_base_output_data): Likewise.
      	(Symbol::init_base_output_segment): Likewise.
      	(Symbol::init_base_constant): Likewise.
      	(Symbol::init_base_undefined): Likewise.
      	(Symbol::output_section): Assert that object is not a plugin.
      	(Symbol_table::add_from_pluginobj): New function.
      	(Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
      	undefined.
      	(Symbol_table::sized_write_globals): Likewise.
      	(Symbol_table::add_from_pluginobj): Instantiate template.
      	* symtab.h (Sized_pluginobj): Declare.
      	(Symbol::in_real_elf): New function.
      	(Symbol::set_in_real_elf): New function.
      	(Symbol::in_real_elf_): New field.
      	(Symbol_table::add_from_pluginobj): New function.
      
      	* testsuite/Makefile.am (AM_CFLAGS): New variable.
      	(LIBDL): New variable.
      	(LDADD): Add LIBDL.
      	(check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
      	(check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
      	(check_DATA): Add plugin_test_1.err and plugin_test_2.err.
      	(MOSTLYCLEANFILES): Likewise.
      	* testsuite/Makefile.in: Regenerate.
      	* testsuite/plugin_test.c: New file.
      	* testsuite/plugin_test_1.sh: New file.
      	* testsuite/plugin_test_2.sh: New file.
      89fc3421
  28. 07 Aug, 2008 1 commit
    • Cary Coutant's avatar
      2008-08-06 Cary Coutant <ccoutant@google.com> · ac45a351
      Cary Coutant authored
      	* archive.cc (Archive::total_archives, Archive::total_members)
      	(Archive::total_members_loaded): New variables.
      	(Archive::setup): Add parameter.  Add option to preread
      	archive symbols.
      	(Archive::read_armap): Add counter.
      	(Archive::get_file_and_offset): New function.
      	(Archive::get_elf_object_for_member): New function.
      	(Archive::read_all_symbols): New function.
      	(Archive::read_symbols): New function.
      	(Archive::add_symbols): Add counters.
      	(Archive::include_all_members): Use armap to find members if it's
      	already built.
      	(Archive::include_member): Skip reading symbols if already read.
      	Factored code into Archive::get_file_and_offset and
      	Archive::get_elf_object_for_member.  Changed call to
      	Mapfile::report_include_archive_member.
      	(Archive::print_stats): New function.
      	* archive.h: Declare Object and Read_symbols_data classes.
      	(Archive::Archive): Add initializers for new members.
      	(Archive::setup): Add parameter.
      	(Archive::print_stats): New function.
      	(Archive::total_archives, Archive::total_members)
      	(Archive::total_members_loaded): New variables.
      	(Archive::get_file_and_offset): New function.
      	(Archive::get_elf_object_for_member): New function.
      	(Archive::read_all_symbols): New function.
      	(Archive::read_symbols): New function.
      	(Archive::Archive_member): New class.
      	(Archive::members_): New member.
      	(Archive::num_members_): New member.
      	* main.cc: Include archive.h.
      	(main): Call Archive::print_stats.
      	* mapfile.cc (Mapfile::report_include_archive_member): Delete
      	archive parameter; member_name is now the fully-decorated name.
      	* mapfile.h (Mapfile::report_include_archive_member): Likewise.
      	* options.h: (General_options): Add --preread-archive-symbols option.
      	* readsyms.cc (Read_symbols::do_read_symbols): Change call to
      	Archive::setup.
      ac45a351
  29. 22 Jul, 2008 1 commit
    • Ian Lance Taylor's avatar
      * cref.cc: New file. · 92de84a6
      Ian Lance Taylor authored
      	* cref.h: New file.
      	* options.h (class General_options): Add --print-symbol-counts.
      	* main.cc (main): Issue defined symbol report if requested.
      	* archive.cc (Archive::interpret_header): Make into a const member
      	function.
      	(Archive::add_symbols): Call Input_objects::archive_start and
      	archive_stop.
      	(Archive::const_iterator): Define new class.
      	(Archive::begin, Archive::end): New functions.
      	(Archive::include_all_members): Rewrite to use iterator.
      	(Archive::count_members): New function.
      	* archive.h (class Archive): Update declarations.
      	(Archive::filename): New function.
      	* object.cc: Include "cref.h".
      	(Sized_relobj::Sized_relobj): Initialize defined_count_.
      	(Sized_relobj::do_get_global_symbol_counts): New function.
      	(Input_objects::add_object): Add object to cross-referencer.
      	(Input_objects::archive_start): New function.
      	(Input_objects::archive_stop): New function.
      	(Input_objects::print_symbol_counts): New function.
      	* object.h: Declare Cref and Archive.
      	(Object::get_global_symbol_counts): New function.
      	(Object::do_get_global_symbol_counts): New pure virtual function.
      	(class Sized_relobj): Add defined_count_ field.  Update
      	declarations.
      	(class Input_objects): Add cref_ field.  Update constructor.
      	Update declarations.
      	* dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
      	defined_count_.
      	(Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
      	symbol counts.
      	(Sized_dynobj::do_get_global_symbol_counts): New function.
      	* dynobj.h (class Sized_dynobj): Add fields symbols_ and
      	defined_count_.  Update declarations.  Define Symbols typedef.
      	* symtab.cc (Symbol_table::add_from_relobj): Add defined
      	parameter.  Change all callers.
      	(Symbol_table::add_from_dynobj): Add sympointers and defined
      	parameters.  Change all callers.
      	* symtab.h (class Symbol_table): Update declarations.
      	* Makefile.am (CCFILES): Add cref.cc.
      	(HFILES): Add cref.h.
      	* Makefile.in: Rebuild.
      92de84a6
  30. 21 May, 2008 1 commit
    • Ian Lance Taylor's avatar
      * mapfile.cc: New file. · 7d9e3d98
      Ian Lance Taylor authored
      	* mapfile.h: New file.
      	* options.h (class General_options): Add -M/--print-map and -Map.
      	* options.cc (General_options::finalize): Make -M equivalent to
      	-Map -.
      	* main.cc: Include <cstdio> and "mapfile.h".
      	(main): Open mapfile if requested.
      	* gold.cc (class Middle_runner): Add mapfile_ field.  Update
      	constructor.  Change caller.
      	(queue_initial_tasks): Add mapfile parameter.  Change caller.
      	(queue_middle_tasks): Likewise.
      	* gold.h (queue_initial_tasks, queue_middle_tasks): Update
      	declarations.
      	* archive.cc: Include "mapfile.h".
      	(Archive::add_symbols): Add mapfile parameter.  Change all
      	callers.  Pass mapfile, symbol, and reason to include_member.
      	(Archive::include_all_members): Add mapfile parameter.  Change all
      	callers.
      	(Archive::include_member): Add mapfile, sym, and why parameters.
      	Change all callers.  Report inclusion to map file.
      	* archive.h: Include "fileread.h".
      	(class Archive): Update declarations.
      	(Archive::file): New const method.
      	(class Add_archive_symbols): Add mapfile_ field.  Update
      	constructor.  Change all callers.
      	* readsyms.h (class Read_symbols): Likewise.
      	(class Finish_group): Likewise.
      	(class Read_script): Likewise.
      	* common.cc: Include "mapfile.h".
      	(Symbol_table::allocate_commons): Add mapfile parameter.  Change
      	all callers.
      	(Symbol_table::do_allocate_commons): Likewise.
      	(Symbol_table::do_allocate_commons_list): Likewise.  Report common
      	symbol allocation to mapfile.
      	* common.h (class Allocate_commons_task): Add mapfile_ field.
      	Update constructor.  Change all callers.
      	* symtab.h (class Symbol_table): Update declarations.
      	* layout.cc: Include "mapfile.h".
      	(Layout_task_runner::run): Print information to mapfile.
      	(Layout::create_gold_note): Change Output_data_fixed_space to
      	Output_data_zero_fill.
      	(Layout::create_build_id): Likewise.
      	(Layout::print_to_mapfile): New function.
      	* layout.h (class Layout_task_runner): Add mapfile_ field.  Update
      	constructor.  Change caller.
      	(class Layout): Declare print_to_mapfile.
      	* output.cc (Output_section::Input_section::print_to_mapfile): New
      	function.
      	(Output_section::add_input_section): If producing a map, always
      	add to input_sections_ list.
      	(Output_section::do_print_to_mapfile): New function.
      	(Output_segment::print_sections_to_mapfile): New function.
      	(Output_segment::print_section_list_to_mapfile): New function.
      	* output.h: Include "mapfile.h".
      	(Output_data::print_to_mapfile): New function.
      	(Output_data::do_print_to_mapfile): New virtual function.
      	(Output_segment_headers::do_print_to_mapfile): New function.
      	(Output_file_header::do_print_to_mapfile): New function.
      	(Output_data_const::do_print_to_mapfile): New function.
      	(class Output_data_const_buffer): Add map_name_ field.  Update
      	constructor.  Change all callers.  Add do_print_to_mapfile
      	function.
      	(class Output_data_fixed_space): Likewise.
      	(class Output_data_space): Likewise.
      	(class Output_data_zero_fill): New class.
      	(Output_data_strtab::do_print_to_mapfile): New function.
      	(Output_data_reloc_base::do_print_to_mapfile): New function.
      	(Output_relocatable_relocs::do_print_to_mapfile): New function.
      	(Output_data_group::do_print_to_mapfile): New function.
      	(Output_data_got::do_print_to_mapfile): New function.
      	(Output_data_dynamic::do_print_to_mapfile): New function.
      	(Output_symtab_xindex::do_print_to_mapfile): New function.
      	(class Output_section): Declare do_print_to_mapflie.  Declare
      	print_to_mapfile in Input_section.
      	(class Output_segment): Declare new functions.
      	* object.h (Sized_relobj::symbol_count): New function.
      	* script-sections.cc
      	(Output_section_element_dot_assignment::set_section_addresses):
      	Change Output_data_fixed_space to Output_data_zero_fill.
      	(Output_data_expression::do_print_to_mapfile): New function.
      	* script.cc (read_input_script): Add mapfile parameter.  Change
      	all callers.
      	* script.h (read_input_script): Update declaration.
      	* ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.
      	(Eh_frame::do_print_to_mapfile): New function.
      	* merge.h (Output_merge_data::do_print_to_mapfile): New function.
      	(Output_merge_string::do_print_to_mapfile): New function.
      	* i386.cc (Output_data_plt_i386::do_print_to_mapfile): New
      	function.
      	* sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): New
      	function.
      	* x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): New
      	function.
      	* Makefile.am (CCFILES): Add mapfile.cc.
      	(HFILES): Add mapfile.h.
      	* Makefile.in: Rebuild.
      7d9e3d98
  31. 06 May, 2008 1 commit
  32. 09 Apr, 2008 1 commit
  33. 26 Mar, 2008 1 commit
    • Ian Lance Taylor's avatar
      PR gold/5986 · 04bf7072
      Ian Lance Taylor authored
      	Fix problems building gold with gcc 4.3.0.
      	* gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.
      	(gold_error_at_location, gold_warning_at_location): Use it.
      	* configure.ac: Check whether we can compile and use a template
      	function with a printf attribute.
      	* x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value
      	when jumping over bytes.
      	* object.cc: Instantiate Object::read_section_data.
      	* debug.h: Include <cstring>
      	* dwarf_reader.cc: Include <algorithm>
      	* main.cc: Include <cstring>.
      	* options.cc: Include <cstring>.
      	* output.cc: Include <cstring>.
      	* script.cc: Include <cstring>.
      	* script.h: Include <string>.
      	* symtab.cc: Include <cstring> and <algorithm>.
      	* target-select.cc: Include <cstring>.
      	* version.cc: Include <string>.
      	* testsuite/testmain.cc: Include <cstdlib>.
      	* configure, config.in: Rebuild.
      04bf7072
  34. 04 Mar, 2008 2 commits
  35. 28 Feb, 2008 1 commit
  36. 26 Feb, 2008 1 commit
  37. 07 Feb, 2008 1 commit
  38. 04 Feb, 2008 1 commit
  39. 24 Jan, 2008 1 commit