+2009-06-21 Ian Lance Taylor <ian@airs.com>
+
+ * layout.cc (Layout::make_output_section): Call
+ Target::new_output_section.
+ (Layout::attach_allocated_section_to_segment): Put large section
+ sections in a separate load segment with the large segment flag
+ set.
+ (Layout::segment_precedes): Sort large data segments after other
+ load segments.
+ (align_file_offset): New static function.
+ (Layout::set_segment_offsets): Use align_file_offset.
+ * output.h (class Output_section): Add is_small_section_ and
+ is_large_section_ fields.
+ (Output_section::is_small_section): New function.
+ (Output_section::set_is_small_section): New function.
+ (Output_section::is_large_section): New function.
+ (Output_section::set_is_large_section): New function.
+ (Output_section::is_large_data_section): New function.
+ (class Output_segment): Add is_large_data_segment_ field.
+ (Output_segment::is_large_data_segment): New function.
+ (Output_segment::set_is_large_data_segment): New function.
+ * output.cc (Output_section::Output_section): Initialize new
+ fields.
+ (Output_segment::Output_segment): Likewise.
+ (Output_segment::add_output_section): Add assertion that large
+ data sections always go in large data segments. Force small data
+ sections to the end of the list of data sections. Force small BSS
+ sections to the start of the list of BSS sections. For large BSS
+ sections to the end of the list of BSS sections.
+ * symtab.h (class Symbol): Declare is_common_shndx.
+ (Symbol::is_defined): Check Symbol::is_common_shndx.
+ (Symbol::is_common): Likewise.
+ (class Symbol_table): Define enum Commons_section_type. Update
+ declarations. Add small_commons_ and large_commons_ fields.
+ * symtab.cc (Symbol::is_common_shndx): New function.
+ (Symbol_table::Symbol_table): Initialize new fields.
+ (Symbol_table::add_from_object): Put small and large common
+ symbols in the right list.
+ (Symbol_table::sized_finalized_symbol): Check
+ Symbol::is_common_shndx.
+ (Symbol_table::sized_write_globals): Likewise.
+ * common.cc (Symbol_table::do_allocate_commons): Allocate new
+ common symbol lists. Don't call do_allocate_commons_list if the
+ list is empty.
+ (Symbol_table::do_allocate_commons_list): Remove is_tls
+ parameter. Add comons_section_type parameter. Change all
+ callers. Handle small and large common symbols.
+ * object.cc (Sized_relobj::do_finalize_local_symbols): Check
+ Symbol::is_common_shndx.
+ * resolve.cc (symbol_to_bits): Likewise.
+ * target.h (Target::small_common_shndx): New function.
+ (Target::small_common_section_flags): New function.
+ (Target::large_common_shndx): New function.
+ (Target::large_common_section_flags): New function.
+ (Target::new_output_section): New function.
+ (Target::Target_info): Add small_common_shndx, large_common_shndx,
+ small_common_section_flags, and large_common_section_flags
+ fields.
+ (Target::do_new_output_section): New virtual function.
+ * arm.cc (Target_arm::arm_info): Initialize new fields.
+ * i386.cc (Target_i386::i386_info): Likewise.
+ * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
+ Likewise.
+ * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
+ * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
+ (Target_x86_64::do_new_output_section): New function.
+ * configure.ac: Define conditional MCMODEL_MEDIUM.
+ * testsuite/Makefile.am (check_PROGRAMS): Add large.
+ (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
+ (large_LDFLAGS): Define.
+ * testsuite/large.c: New file.
+ * testsuite/testfile.cc (Target_test::test_target_info):
+ Initialize new fields.
+ * configure, testsuite/Makefile.in: Rebuild.
+
+2009-06-05 Doug Kwan <dougkwan@google.com>
+
+ * Makefile.am (CCFILES): Add target.cc.
+ * Makefile.in: Regenerate.
+ * i386.cc (class Target_i386): Define new virtual method to
+ override do_is_local_label_name in parent.
+ * object.cc (Sized_relobj::do_count_local_symbols): Discard
+ local symbols if --discard-locals or -X is given.
+ * options.h (class General_options): Declare new options
+ '--discard-locals' and '-X' for discarding locals.
+ * target.h (class Target): Define new methods is_local_label_name.
+ Declare new virtual method do_is_local_label_name.
+ * target.cc: New file.
+ * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
+ (check_SCRIPTS): Add discard_locals_test.sh.
+ (check_DATA): Add discard_local_tests.syms.
+ (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
+ (discard_local_tests.syms, discard_locals_test.o): New make rules.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/discard_locals_test.c: New file.
+ * testsuite/discard_locals_test.sh: Same.
+
+2009-06-05 Doug Kwan <dougkwan@google.com>
+
+ * object.cc (Sized_relobj::Sized_relobj): Initialize
+ discarded_eh_frame_shndx_ to -1U.
+ (Sized_relobj::do_layout): Record index of a discard .eh_frame
+ section.
+ (Sized_relobj::do_count_local_symbols): Skip local symbols in
+ a discarded .eh_frame section.
+ (Sized_relobj::do_finalize_local_symbols): Ditto.
+ * object.h (class Sized_relobj): Declare new member
+ discarded_eh_frame_shndx_.
+ * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
+ (local_labels_test.o, local_labels_test): New rules.
+ * testsuite/Makefile.in: Regenerate.
+
+2009-06-04 Doug Kwan <dougkwan@google.com>
+
+ * layout.cc (Layout::section_name_mapping): Add mapping for
+ special ARM sections.
+
+2009-06-03 Doug Kwan <dougkwan@google.com>
+
+ * arm.cc (utils::sign_extend): Reverse test in gold_assert.
+ (utils::has_overflow): Same.
+
+2009-06-03 Ian Lance Taylor <iant@google.com>
+
+ * layout.cc (Layout::section_name_mapping): New array, replacing
+ Layout::linkonce_mapping.
+ (Layout::section_name_mapping_count): New variable, replacing
+ Layout::linkonce_mapping_count.
+ (Layout::linkonce_output_name): Remove.
+ (Layout::output_section_name): Rewrite.
+ * layout.h (class Layout): Rename Linkonce_mapping to
+ Section_name_mapping, linkonce_mapping to section_name_mapping,
+ linkonce_mapping_count to section_name_mapping_count. Don't
+ declare linkonce_output_name.
+
+2009-06-03 Doug Kwan <dougkwan@google.com>
+
+ * gold/arm.cc (namespace utils): New.
+ (Target_arm::reloc_is_non_pic): Define new method.
+ (class Arm_relocate_functions): New.
+ (Target_arm::Relocate::relocate): Handle relocation types used by
+ Android.
+
+2009-06-03 Ian Lance Taylor <iant@google.com>
+
+ * arm.cc (Target_arm::scan::global): Use || instead of |.
+
+2009-06-02 Doug Kwan <dougkwan@google.com>
+
+ * gold/arm.cc (Target_arm::Scan::Scan): Initialize
+ issued_non_pic_error_.
+ (class Target_arm::Scan): Declare new method check_non_pic.
+ Define new method symbol_needs_plt_entry.
+ Declare new data member issued_non_pic_error_.
+ (class Target_arm::Relocate): Declare new method
+ should_apply_static_reloc.
+ (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
+ (Target_arm::Scan::check_non_pic): Define new method.
+ (Target_arm::Scan::local): Handle a small subset of reloc types used
+ by Android.
+ (Target_arm::Scan::local): Same.
+ (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
+
+2009-05-31 Mikolaj Zalewski <mikolajz@google.com>
+
+ * incremental.cc (Incremental_inputs::report_command_line): Filter
+ out --incremental-* options.
+
+2009-05-29 Doug Kwan <dougkwan@google.com>
+
+ * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
+ template class.
+ (class Target_arm): Update comment.
+ (Target_arm::Target_arm): Initialize new data members GOT_,
+ PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
+ Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
+ and Target_arm::rel_dyn_section.
+ Declare new_enum Target_arm::Got_type.
+ Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
+ and DYNBSS_.
+ Update commments for member do_dynsym_value.
+ (Target_arm::got_size, Target_arm::plt_section,
+ Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
+ new methods inside class defintion.
+ (Target_arm::got_section): Define new method.
+ (Target_arm::rel_dyn_section): Same.
+ (Output_data_plt_arm): New template class.
+ (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
+ (Output_data_plt_arm:do_adjust_output_section): Define new method.
+ (Output_data_plt_arm::add_entry): Same.
+ (Output_data_plt_arm::first_plt_entry): Define new
+ static data member for PLT instruction template.
+ (Output_data_plt_arm::plt_entry): Same.
+ (Output_data_plt_arm::do_write): Define new method.
+ (Target_arm::make_plt_entry): Same.
+ (Target_arm::do_finalize_sections): Same.
+ (Target_arm::do_dynsym_value): Same.
+
+2009-05-28 Doug Kwan <dougkwan@google.com>
+
+ * Makefile.am (TARGETSOURCES): Add arm.cc.
+ (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
+ * Makefile.in: Regenerate.
+ * arm.cc: New file.
+ * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
+
+2009-05-26 Doug Kwan <dougkwan@google.com>
+
+ * options.cc (General_options::parse_exclude_libs). Fix a comment.
+ (General_options::check_excluded_libs): Strip off directories in
+ archive name before matching like GNU ld does.
+ * testsuite/Makefile.am (MOSTLYCLEANFILES,
+ exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
+ (exclude_libs_test_LDFLAGS): Add linker option
+ -Wl,--exclude-libs,libexclude_libs_test_3
+ (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
+ an explicit archive without using -l.
+ (alt/libexclude_libs_test_3.a): New make rule.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/exclude_libs_test.c : Declare lib3_default().
+ (main): Call it.
+ * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
+ * exclude_libs_test_3.c: New file.
+
+2009-05-26 Nick Clifton <nickc@redhat.com>
+
+ * po/id.po: New Indonesian translation.
+ * po/gold.pot: Updated template file.
+
+2009-05-22 Sriraman Tallam <tmsriram@google.com>
+
+ * testsuite/Makefile.am: Add -ffunction-sections to compile
+ gc_comdat_test files. Add -Wl,--gc-sections to build
+ gc_comdat_test.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/gc_comdat_test.sh: Fix the condition around grep.
+
+2009-05-21 Sriraman Tallam <tmsriram@google.com>
+
+ * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
+ kept comdat section was garbage collected.
+ * testsuite/Makefile.am: Add test gc_comdat_test.sh.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/gc_comdat_test.sh: New file.
+ * testsuite/gc_comdat_test_1.cc: New file.
+ * testsuite/gc_comdat_test_2.cc: New file.
+
+2009-05-19 Doug Kwan <dougkwan@google.com>
+
+ * archive.cc (Archive::Archive): Move constructor from archive.h
+ to here. Initialize no_export_.
+ (Archive::get_elf_object_for_member): Set no_export flag of object.
+ * archive.h (Archive::Archive): Move constructor body to
+ archive.cc.
+ (Archive::no_export): New method.
+ (Archive::no_export_): New field.
+ * object.h (Object::Object): Initialize no_export_ to false.
+ (Object::no_export, Object::set_no_export): New methods.
+ (Object::no_export_): New field.
+ * options.cc (General_options::parse_exclude_libs): New method.
+ (General_options::check_excluded_libs) Same.
+ * options.h (exclude_libs): New option.
+ (General_options::check_excluded_libs): New method declaration.
+ (General_options::excluded_libs_): New field.
+ * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
+ default or protected visibility if an object has no-export flag set.
+ testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
+ (check_SCRIPTS): Add exclude_libs_test.sh.
+ (check_DATA): Add exclude_libs_test.syms.
+ (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
+ libexclude_libs_test_1.a and libexclude_libs_test_2.a.
+ (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
+ exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
+ (exclude_libs_test.syms, libexclude_libs_test_1.a,
+ libexclude_libs_test_2.a): New rules.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/exclude_libs_test.c: New file.
+ * testsuite/exclude_libs_test.sh: Ditto.
+ * testsuite/exclude_libs_test_1.c: Ditto.
+ * testsuite/exclude_libs_test_2.c: Ditto.
+
+2009-05-15 Ian Lance Taylor <iant@google.com>
+
+ * configure.ac: Check for declarations for cases where libiberty.h
+ checks HAVE_DECL_xxx.
+ * configure, config.in: Rebuild.
+
+2009-05-15 Mikolaj Zalewski <mikolajz@google.com>
+
+ * gold.h (Incremental_argument_list): Remove (invalid) forward
+ 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.
+
+2009-04-27 Ian Lance Taylor <iant@google.com>
+
+ * x86_64.cc (do_adjust_output_section): Set entsize to
+ plt_entry_size.
+
+2009-04-23 Elliott Hughes <enh@google.com>
+
+ * output.cc (Output_file::close): After short writes, continue
+ writing from the correct offset in the buffer being written.
+
+2009-04-23 Chris Demetriou <cgd@google.com>
+
+ * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+ * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
+ if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
+
+2009-04-21 Mikolaj Zalewski <mikolajz@google.com>
+
+ * incremental.cc (Incremental_inputs_header_data): Renamed from
+ 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.
+
+2009-04-01 Ian Lance Taylor <iant@google.com>
+ Mikolaj Zalewski <mikolajz@google.com>
+
+ * gold.h (reserve_unordered_map): Define, three versions, one for
+ 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.
+
+2009-03-30 Ian Lance Taylor <iant@google.com>
+
+ * ffsll.c (ffsll): Correct implementation.
+
+2009-03-27 Ian Lance Taylor <iant@google.com>
+
+ * ffsll.c: New file.
+ * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
+ * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
+ * ftruncate.c (ftruncate): Declare before definition.
+ * mremap.c (mremap): Likewise.
+ * pread.c (pread): Likewise.
+ * configure, Makefile.in, config.in: Rebuild.
+
+ * mremap.c: New file.
+ * configure.ac: Call AC_REPLACE_FUNCS on mremap.
+ * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
+ (mremap): Declare if HAVE_MREMAP is not defined.
+ * configure, Makefile.in, config.in: Rebuild.
+
+2009-03-27 Cary Coutant <ccoutant@google.com>
+
+ * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
+ position independent.
+ * sparc.cc (Target_sparc::check_non_pic): Likewise.
+ * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
+
2009-03-24 Cary Coutant <ccoutant@google.com>
* symtab.h (needs_plt_entry): Check for unsatisfied reference from
* object.h (is_elf_object): Declare.
* archive.cc (Archive::get_elf_object_for_member): Call
is_elf_object.
- * readsymc.cc (Read_symbols::do_read_symbols): Likewise.
+ * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
2009-03-24 Elliott Hughes <enh@google.com>