aboutsummaryrefslogtreecommitdiff
path: root/gold
AgeCommit message (Collapse)AuthorFilesLines
2009-06-22 * layout.cc (Layout::make_output_section): CallIan Lance Taylor22-98/+622
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-052009-06-05 Doug Kwan <dougkwan@google.com>Doug Kwan12-13/+267
* 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-052009-06-05 Doug Kwan <dougkwan@google.com>Doug Kwan5-16/+77
* 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-042009-06-04 Doug Kwan <dougkwan@google.com>Doug Kwan2-0/+9
* layout.cc (Layout::section_name_mapping): Add mapping for special ARM sections.
2009-06-042009-06-03 Doug Kwan <dougkwan@google.com>Doug Kwan2-2/+7
* arm.cc (utils::sign_extend): Reverse test in gold_assert. (utils::has_overflow): Same.
2009-06-04 * layout.cc (Layout::section_name_mapping): New array, replacingIan Lance Taylor3-109/+78
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-032009-06-03 Doug Kwan <dougkwan@google.com>Doug Kwan2-10/+510
* 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 * arm.cc (Target_arm::scan::global): Use || instead of |.Ian Lance Taylor2-1/+5
2009-06-032009-06-02 Doug Kwan <dougkwan@google.com>Doug Kwan1-15/+354
* 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 * incremental.cc (Incremental_inputs::report_command_line): FilterIan Lance Taylor2-0/+11
out --incremental-* options.
2009-05-302009-05-29 Doug Kwan <dougkwan@google.com>Doug Kwan2-8/+457
* 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-292009-05-28 Doug Kwan <dougkwan@google.com>Doug Kwan5-4/+700
* configure.ac: Support gold for target arm*-*-*. * configure: Regenerate. * gold/Makefile.am (TARGETSOURCES): Add arm.cc. (ALL_TARGETOBJECTS): Add arm.$(OBJEXT) * gold/Makefile.in: Regenerate. * gold/arm.cc: New file. * gold/configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
2009-05-26Add missing ChangeLog entry in previous check-inDoug Kwan1-0/+18
2009-05-262009-05-26 Doug Kwan <dougkwan@google.com>Doug Kwan6-20/+62
* 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-26Update Indonesian translations.Nick Clifton3-282/+2543
Update translation templates.
2009-05-22 * testsuite/Makefile.am: Add -ffunction-sections to compileSriraman Tallam4-7/+15
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-22 * object.cc (Sized_relobj::map_to_kept_section): Return NULL if theSriraman Tallam7-44/+196
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-192009-05-19 Doug Kwan <dougkwan@google.com>Cary Coutant13-17/+341
* 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 * configure.ac: Check for declarations for cases where libiberty.hIan Lance Taylor4-0/+526
checks HAVE_DECL_xxx. * configure, config.in: Rebuild.
2009-05-15 * gold.h (Incremental_argument_list): Remove (invalid) forwardIan Lance Taylor10-23/+317
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-30Fix date in revision 1.220. (Was 2008-04-23, should have been 2009-04-23).Chris Demetriou1-1/+1
2009-04-27 * x86_64.cc (do_adjust_output_section): Set entsize toIan Lance Taylor2-3/+6
plt_entry_size.
2009-04-242008-04-23 Elliott Hughes <enh@google.com>Chris Demetriou2-2/+12
* output.cc (Output_file::close): After short writes, continue writing from the correct offset in the buffer being written.
2009-04-242009-04-23 Chris Demetriou <cgd@google.com>Chris Demetriou5-1/+93
* 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-24 * incremental.cc (Incremental_inputs_header_data): Renamed fromIan Lance Taylor6-15/+284
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-02 * gold.h (reserve_unordered_map): Define, three versions, one forIan Lance Taylor5-33/+85
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 * ffsll.c (ffsll): Correct implementation.Ian Lance Taylor2-3/+12
2009-03-28 * ffsll.c: New file.Ian Lance Taylor10-5/+72
* 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.
2009-03-27 * mremap.c: New file.Ian Lance Taylor7-3/+78
* 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 * powerpc.cc (Target_powerpc::check_non_pic): Assert that output isCary Coutant4-1/+11
position independent. * sparc.cc (Target_sparc::check_non_pic): Likewise. * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
2009-03-25 * symtab.h (needs_plt_entry): Check for unsatisfied reference fromCary Coutant2-2/+12
an executable. (needs_dynamic_reloc): Likewise.
2009-03-24 * yyscript.y (file_cmd): Recognize EXTERN.Ian Lance Taylor4-1/+47
(extern_name_list, extern_name_list_body): New nonterminals. * script.cc (script_add_extern): Define. * script-c.h (script_add_extern): Declare.
2009-03-24 * object.cc (is_elf_object): Define.Ian Lance Taylor5-81/+95
* 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.
2009-03-24 * output.cc (Output_file::map_anonymous): Define.Ian Lance Taylor3-7/+35
(Output_file::map): Use map_anonymous. If the regular mmap fails, try an anonymous one. Report the size if the mmap fails. * output.h (class Output_file): Declare map_anonymous.
2009-03-24 * target-select.cc (instantiate_target): Don't acquire the lock ifIan Lance Taylor3-4/+14
the instantiated_target_ field has already been set.
2009-03-242009-03-23 Ian Lance Taylor <iant@google.com>Ian Lance Taylor11-39/+220
* gold-threads.h (class Initialize_lock): Define. * gold-threads.cc (class Initialize_lock_once): Define. (initialize_lock_control): New static variable. (initialize_lock_pointer): New static variable. (initialize_lock_once): New static function. (Initialize_lock::Initialize_lock): Define. (Initialize_lock::initialize): Define. * target-select.h: Include "gold-threads.h". (class Target_selector): Add lock_ and initialize_lock_ fields. Don't define instantiate_target, just declare it. * target-select.cc (Target_selector::Target_selector): Initialize new fields. (Target_selector::instantiate_target): Define. * descriptors.h: Include "gold-threads.h". (class Descriptors): Add initialize_lock_ field. * descriptors.cc (Descriptors::Descriptors): Initialize new field. (Descriptors::open): Use initialize_lock_ field * errors.h (class Errors): Add initialize_lock_ field. * errors.cc (Errors::Errors): Initialize new field. (Errors::initialize_lock): Use initialize_lock_ field. * powerpc.cc (class Target_selector_powerpc): Remove instantiated_target_ field. In do_recognize call instantiate_target rather than do_instantiate_target. In do_instantiate_target just allocate a new target. * sparc.cc (class Target_selector_sparc): Likewise.
2009-03-242009-03-23 Ian Lance Taylor <iant@google.com>Ian Lance Taylor14-16/+259
* freebsd.h: New file. * i386.cc: Include "freebsd.h". (Target_i386): Derive from Target_freebsd rather than Sized_target. (Target_selector_i386): Derive from Target_selector_freebsd rather than Target_selector. * x86_64.cc: Include "freebsd.h". (Target_x86_64): Derive from Target_freebsd rather than Sized_target. (Target_selector_x86_64): Derive from Target_selector_freebsd rather than Target_selector. * target.h (class Target): Add adjust_elf_header and do_adjust_elf_header. * output.cc (Output_file_header:: do_sized_write): Call target adjust_elf_header routine. * configure.tgt: Set targ_osabi. * configure.ac: Define GOLD_DEFAULT_OSABI. * parameters.cc (Parameters::default_target): Pass GOLD_DEFAULT_OSABI to select_target. * target-select.h (class Target_selector): Make instantiate_target protected rather than private. * Makefile.am (HFILES): Add freebsd.h. * configure, Makefile.in, config.in: Rebuild.
2009-03-23 * merge.cc (do_add_input_section): Correct pend value. ChangeIan Lance Taylor2-3/+11
message about last entry not being null terminated from error to warning.
2009-03-20include/elf:Ian Lance Taylor4-7/+162
* common.h (SHT_GNU_INCREMENTAL_INPUTS): Define. elfcpp: * elfcpp.h (SHT_GNU_INCREMENTAL_INPUTS): Define. gold: * incremental.cc: New file. * Makefile.am (CCFILES): Add incremental.cc. * Makefile.in: Rebuild.
2009-03-192009-03-19 Paul Pluzhnikov <ppluzhnikov@google.com>Paul Pluzhnikov2-0/+10
* layout.cc (Layout::output_section_name): Preserve names of '.note.' sections.
2009-03-19 * descriptors.cc (Descriptors::open): Check that the options areIan Lance Taylor2-1/+8
valid before using them.
2009-03-19 * script-sections.h: Include <list>.Ian Lance Taylor3-182/+376
(class Script_sections): Change Sections_elements from std::vector to std::list. Typedef public Elements_iterator. Add orphan_section_placement_, data_segment_align_start_, and saw_data_segment_align_ fields. Remove data_segment_align_index_ field. * script-sections.cc (class Orphan_section_placement): New class. (class Sections_element): Add virtual functions is_relro and orphan_section_init. Remove virtual function place_orphan_here. (class Output_section_definition): Add is_relro and orphan_section_init. Remove place_orphan_here. (class Orphan_output_section): Likewise. (Script_sections::Script_sections): Update for field changes. (Script_sections::data_segment_align): Set saw_data_segment_align_ and data_segment_align_start_, not data_segment_align_index. (Script_sections::data_segment_relro_end): Check saw_data_segment_align_. Use data_segment_align_start_ rather than data_segment_align_index_. (Script_sections::place_orphan): Rewrite to use Orphan_section_placement.
2009-03-18 * archive.cc (Archive::add_symbols): Check for a version attachedIan Lance Taylor4-13/+87
to the symbol name in the archive map. * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11. (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define. (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define. (ver_test_11.a): New target. * testsuite/Makefile.in: Rebuild.
2009-03-17 * configure.ac: Check for chsize and posix_fallocate. ReplaceIan Lance Taylor8-11/+248
ftruncate. * ftruncate.c: New file, from gnulib. * output.cc (posix_fallocate): Define dummy version if not HAVE_POSIX_FALLOCATE. (Output_file::map): Call posix_fallocate rather than lseek and write. * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE. * configure, Makefile.in, config.in: Rebuild.
2009-03-172009-03-17 Paul Pluzhnikov <ppluzhnikov@google.com>Paul Pluzhnikov3-8/+17
* layout.h (Layout::create_note): Add section_name parameter. * layout.cc (Layout::create_note): Likewise. (Layout::create_build_id, Layout::create_gold_note): Fix callers.
2009-03-17 * descriptors.cc: Include "options.h".Ian Lance Taylor2-18/+50
(FD_CLOEXEC, O_CLOEXEC): Define if not defined. (Descriptors::open): Always use O_CLOEXEC when opening a new descriptor. If we have a plugin, and O_CLOEXEC was not defined, then set FD_CLOEXEC.
2009-03-17 * sparc.cc (class Target_sparc): Add has_got_section.Ian Lance Taylor2-2/+36
(Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_, make sure we have a GOT section. * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD. (Target_sparc::Scan::local): Likewise. (Target_sparc::Scan::global): Likewise. (Target_sparc::Relocate::relocate): Likewise. (Target_sparc::Relocate::relocate_tls): Likewise.
2009-03-17 * symtab.cc (Symbol_table::define_default_version): New function,Ian Lance Taylor3-109/+234
broken out of add_from_object. (Symbol_table::add_from_object): Call define_default_version. (Symbol_table::define_special_symbol): Add resolve_oldsym parameter. Change all callers. If the version for a symbol comes from a version script, resolve it with the symbol with the same name with no version. Also add the symbol without a version if appropriate. (do_define_in_output_data): If resolving with oldsym, don't delete sym. (do_define_in_output_segment): Likewise. (do_define_as_constant): Likewise. * symtab.h (class Symbol_table): Update declarations.
2009-03-14 * readsyms.cc (Read_symbols::incompatible_warning): New function.Ian Lance Taylor24-139/+587
(Read_symbols::requeue): New function. (Read_symbols::do_read_symbols): If make_elf_object fails because the target type is not configured, and the file was searched for, issue a warning and retry with the next directory. (Add_symbols::run): If the file has an incompatible format, and it was searched for, requeue the Read_symbols task. On error, release the object. * readsyms.h (class Read_symbols): Add dirindex_ field. Add dirindex parameter to constructor. Change all callers. Declare incompatible_warning and requeue. (class Add_symbols): Add dirpath_, dirindex_, mapfile_, input_argument_ and input_group_ fields. Add them to constructor. Change all callers. (class Read_script): Add dirindex_ field. Add it to constructor. Change all callers. * archive.cc (Archive::setup): Remove input_objects parameter. Change all callers. (Archive::get_file_and_offset): Likewise. (Archive::read_all_symbols): Likewise. (Archive::read_symbols): Likewise. (Archive::get_elf_object_for_member): Remove input_objects parameter. Add punconfigured parameter. Change all callers. (Archive::add_symbols): Change return type to bool. Check return value of include_member. (Archive::include_all_members): Likewise. (Archive::include_member): Change return type to bool. Return false if first included object has incompatible target. Set included_member_ field. (Add_archive_symbols::run): If add_symbols returns false, requeue Read_symbols task. * archive.h (class Archive): Add included_member_ field. Initialize it in constructor. Add input_file and searched_for methods. Update declarations. (class Add_archive_symbols): Add dirpath_, dirindex_, and input_argument_ fields. Add them to constructor. Change all callers. * script.cc: Include "target-select.h". (class Parser_closure): Add skip_on_incompatible_target_ and found_incompatible_target_ fields. Add skip_on_incompatible_target parameter to constructor. Change all callers. Add methods skip_on_incompatible_target, clear_skip_on_incompatible_target, found_incompatible_target, and set_found_incompatible_target. (read_input_script): Add dirindex parameter. Change all callers. If parser finds an incompatible target, requeue Read_symbols task. (script_set_symbol): Clear skip_on_incompatible_target in closure. (script_add_assertion, script_parse_option): Likewise. (script_start_sections, script_add_phdr): Likewise. (script_check_output_format): New function. * script.h (read_input_script): Update declaration. * script-c.h (script_check_output_format): Declare. * yyscript.y (file_cmd): Handle OUTPUT_FORMAT. (ignore_cmd): Remove OUTPUT_FORMAT. * fileread.cc (Input_file::Input_file): Add explicit this. (Input_file::will_search_for): New function. (Input_file::open): Add pindex parameter. Change all callers. * fileread.h (class Input_file): Add input_file_argument method. Declare will_search_for. Update declarations. * object.cc (make_elf_object): Add punconfigured parameter. Change all callers. * object.h (class Object): Make input_file public. Add searched_for method. (make_elf_object): Update declaration. * dirsearch.cc (Dirsearch::find): Add pindex parameter. Use it to restart search. * dirsearch.h (class Dirsearch): Update declaration. * options.h (class General_options): Add --warn-search-mismatch. * parameters.cc (Parameters::is_compatible_target): New function. * parameters.h (class Parameters): Declare is_compatible_target. * workqueue.cc (Workqueue::add_blocker): New function. * workqueue.h (class Workqueue): Declare add_blocker.
2009-03-13 * fileread.cc (Input_file::open): Remove options parameter.Ian Lance Taylor10-43/+43
Change all callers. (Input_file::open_binary): Likewise. * script.cc (read_input_script): Likewise. * readsyms.h (class Read_symbols): Remove options_ field. Remove options parameter from constructor. Change all callers. (class Read_script): Likewise. * fileread.h (class Input_file): Update declarations. * script.h (read_input_script): Update declaration.