+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.