* layout.cc (Layout::make_output_section): Call
[deliverable/binutils-gdb.git] / gold / ChangeLog
index c1bc8d0da8e4df7aa4fa26d323586f0c7cfbdbc9..308441a3a83e6c7625dd3e3ecaaa54b5ada94b68 100644 (file)
@@ -1,3 +1,227 @@
+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.
This page took 0.0254760000000001 seconds and 4 git commands to generate.