* output.h (class Output_data): Add const version of
[deliverable/binutils-gdb.git] / gold / ChangeLog
index 86ed4e8f6f5d6434333498867a097d4ecc5c705f..a96d0794f82a6ce47d88543069f9dbea088eb383 100644 (file)
@@ -1,3 +1,494 @@
+2010-01-07  Ian Lance Taylor  <iant@google.com>
+
+       * output.h (class Output_data): Add const version of
+       output_section and do_output_section.
+       (class Output_section_data): Add const version of
+       do_output_section.
+       (class Output_section): Likewise.
+       * layout.cc (Layout::add_target_dynamic_tags): New function.
+       * layout.h (class Layout): Update declarations.
+       * arm.cc (Target_arm::do_finalize_sections): Use
+       add_target_dynamic_tags.
+       * i386.cc (Target_i386::do_finalize_sections): Likewise.
+       * powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
+       * sparc.cc (Target_sparc::do_finalize_sections): Likewise.
+       * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
+
+2010-01-07  Ian Lance Taylor  <iant@google.com>
+
+       PR 11042
+       * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Mark the dynamic
+       object as needed.
+
+2010-01-07  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
+           Ian Lance Taylor  <iant@google.com>
+
+       PR 11019
+       * object.cc: Instantiate Xindex::initialize_symtab_xindex and
+       Xindex::read_symtab_xindex.
+
+2010-01-07  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Insn_template::Type): New enum value THUMB16_SPECIAL_TYPE.
+       (Insn_template::thumb16_bcond_insn): New method declaration.
+       (Insn_template): Fix spelling.
+       (Stub::thumb16_special): New method declaration.
+       (Stub::do_write): Define virtual method which was previously pure
+       virtual.
+       (Stub::do_thumb16_special): New method declaration.
+       (Stub::do_fixed_endian_write): New template member.
+       (Reloc_stub::do_write): Remove.
+       (Reloc_stub::do_fixed_endian_write): Remove.
+       (Cortex_a8_stub): New class definition.
+       (Stub_factory::make_cortex_a8_stub): New method definition.
+       (Stub_factory::Stub_factory): Add missing static storage class
+       qualifier for elf32_arm_stub_a8_veneer_blx.
+
+2010-01-07  Ian Lance Taylor  <iant@google.com>
+
+       PR 10980
+       * options.h (class General_options): Add --warn-unresolved-symbols
+       and --error-unresolved-symbols.
+       * errors.cc (Errors::undefined_symbol): Implement
+       --warn-unresolved-symbols.
+
+       * options.h (class General_options): Add -z text and -z textoff.
+       * layout.cc (Layout::finish_dynamic_section): Implement -z text.
+
+2010-01-06  Sriraman Tallam  <tmsriram@google.com>
+
+       * gc.h (Garbage_collection::Cident_section_map): New typedef.
+       (Garbage_collection::cident_sections): New function.
+       (Garbage_collection::add_cident_section): New function.
+       (Garbage_collection::cident_sections_): New member.
+       (gc_process_relocs): Add references to sections whose names are C
+       identifiers.
+       * gold.h (cident_section_start_prefix): New constant.
+       (cident_section_stop_prefix): New constant.
+       (is_cident): New function.
+       * layout.cc (Layout::define_section_symbols): Replace string constants
+       with the newly defined constants.
+       * object.cc (Sized_relobj::do_layout): Track sections whose names are
+       C identifiers.
+       * testsuite/Makefile.am: Add gc_orphan_section_test.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/gc_orphan_section_test.cc: New file.
+       * testsuite/gc_orphan_section_test.sh: New file.
+
+2010-01-06  Ian Lance Taylor  <iant@google.com>
+
+       PR 10980
+       * options.h (class General_options): Add --warn-shared-textrel.
+       * layout.cc (Layout::finish_dynamic_section): Implement
+       --warn-shared-textrel.
+
+       PR 10980
+       * options.h (class General_options): Add --warn-multiple-gp.
+
+2010-01-06  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
+
+       * Makefile.am (incremental_dump_DEPENDENCIES): Remove
+       $(THREADSLIB) and $(LIBDL).
+       * Makefile.in: Rebuild.
+
+2010-01-06  Ian Lance Taylor  <iant@google.com>
+
+       PR 10980
+       * options.cc (General_options::parse_section_start): New function.
+       (General_options::section_start): New function.
+       (General_options::General_options): Initialize all members.
+       * options.h: Include <map>
+       (class General_options): Add --section-start.  Add section_starts_
+       member.
+       * layout.cc (Layout::attach_allocated_section_to_segment): If
+       --section-start was used, set the address of the segment.  Remove
+       local sort_sections.
+       (Layout::relaxation_loop_body): If the address of the load segment
+       has been set by --section-start, don't use it.
+       * output.h (Output_segment::update_flags_for_output_section): New
+       function.
+       * output.cc (Output_segment::add_output_section): Call
+       update_flags_for_output_section.
+
+2010-01-05  Ian Lance Taylor  <iant@google.com>
+
+       PR 10980
+       * options.h (class General_options): Add --undefined-version.
+       * script.cc (struct Version_expression): Add was_matched_by_symbol
+       field.
+       (Version_script_info::matched_symbol): New function.
+       (Version_script_info::get_symbol_version_helper): Call
+       matched_symbol.
+       (Version_script_info::check_unmatched_names): New function.
+       * script.h (class Version_script_info): Update declarations.
+       * gold.cc (queue_middle_tasks): Handle --no-undefined-version.
+
+       * options.h (class General_options): Use DEFINE_bool_alias for
+       allow_multiple_definition.
+       * resolve.cc (Symbol_table::should_override): Don't test
+       allow_multiple_definition.
+
+       PR 10980
+       * 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.
+
+2010-01-05  Ian Lance Taylor  <iant@google.com>
+
+       * symtab.cc (Symbol_table::add_from_object): Rename def parameter
+       to is_default_version.  Rename insdef to insdefault.
+       (Symbol_table::add_from_relobj): Rename def to is_default_version
+       and local to is_forced_local.
+       (Symbol_table::add_from_pluginobj): Likewise.
+       (Symbol_table::add_from_dynobj): Likewise.
+       (Symbol_table::define_special_symbol): Rename insdef to
+       insdefault.
+
+2010-01-04  Ian Lance Taylor  <iant@google.com>
+
+       PR 10980
+       * options.h (class General_options): Add
+       --allow-multiple-definition and -z muldefs.
+       * resolve.cc (Symbol_table::should_override): Don't warn about a
+       multiple symbol definition if --allow-multiple-definition or -z
+       muldefs.
+
+       PR 10980
+       * options.h (class General_options): Add --add-needed and
+       --copy-dt-needed-entries.  Tweak --as-needed help entry.
+       * object.cc (Input_objects::check_dynamic_dependencies): Give an
+       error if --copy-dt-needed-entries aka --add-needed is used and
+       would cause a change in behaviour.
+
+       PR 10980
+       * options.h (class General_options): Add -G as a short version of
+       --shared.  Add no-op options -assert, -g, and -i.
+
+2010-01-04  Sriraman Tallam  <tmsriram@google.com>
+
+       * gc.h (gc_process_relocs): Call is_section_foldable_candidate to
+       check for .text or .gnu.linkonce.t sections.
+       * icf.cc (Icf::find_identical_sections): Ditto.
+       Change the detection for mangled function name within the section
+       name.
+       * icf.h (is_section_foldable_candidate): New function.
+
+2009-12-30  Ian Lance Taylor  <iant@google.com>
+
+       PR 10980
+       * options.h (class General_options): Permit two dashes with
+       --retain-symbols-file.
+
+2009-12-30  Ian Lance Taylor  <iant@google.com>
+
+       PR 10979
+       * layout.cc (Layout::relaxation_loop_body): If -Ttext was used,
+       don't put the file header and segment headers in the text
+       segment.
+
+       PR 10979
+       * common.cc (Sort_commons::operator()): Stabilize sort when both
+       entries are NULL.
+       (Symbol_table::do_allocate_commons_list): When allocating common
+       symbols, skip a symbol which is no longer common.
+       * symtab.h (Symbol::is_common): Test whether the symbol comes from
+       an object before checking its type.
+       * testsuite/common_test_2.c: New file.
+       * testsuite/common_test_3.c: New file.
+       * testsuite/Makefile.am (check_PROGRAMS): Add common_test_2.
+       (common_test_2_SOURCES, common_test_2_DEPENDENCIES): Define.
+       (common_test_2_LDFLAGS, common_test_2_LDADD): Define.
+       (common_test_2_pic.o, common_test_2.so): New targets.
+       (common_test_3_pic.o, common_test_3.so): New targets.
+       * testsuite/Makefile.in: Rebuild.
+
+       PR 10979
+       * script.cc (read_input_script): If we see a new SECTIONS clause,
+       and we have added an input section, give an error.
+       * layout.h (class Layout): Add have_added_input_section function.
+       Add have_added_input_section_ field.
+       * layout.cc (Layout::Layout): Initialize
+       have_added_input_section_.
+       (Layout::layout): Set have_added_input_section_.
+       (Layout::layout_eh_frame): Likewise.
+
+2009-12-30  Ian Lance Taylor  <iant@google.com>
+
+       PR 10931
+       * options.h (class General_options): Add --sort-common option.
+       * symtab.h (class Symbol_table): Define Sort_commons_order enum.
+       * common.cc (Sort_common): Add sort_order parameter to
+       constructor.  Add sort_order_ field.
+       (Sort_commons::operator): Check sort_order_.
+       (Symbol_table::allocate_commons): Determine the sort order.
+       (Symbol_table::do_allocate_commons): Add sort_order parameter.
+       Change all callers.
+       (Symbol_table::do_allocate_commons_list): Likewise.
+
+2009-12-30  Ian Lance Taylor  <iant@google.com>
+
+       PR 10916
+       * symtab.cc (Symbol_table::add_from_relobj): When not exporting
+       symbols from this object, don't change the visibility of an
+       undefined symbol.
+       * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
+
+2009-12-30  Ian Lance Taylor  <iant@google.com>
+
+       PR 10861
+       * script.h (class Version_script_info): Define Language enum.
+       Update declarations.  Define Glob, Exact, and Lookup types.  Add
+       new fields globals_, locals_, and is_finalized_.
+       * script.cc: Various formatting fixes.
+       (class Parser_closure): Change language_stack_ from a vector of
+       std::string to one of Version_script_info::Language.  Adjust all
+       uses accordingly.
+       (class Lazy_demangler): Remove.
+       (struct Version_expression): Change language from std::string to
+       Version_script_info::Language.
+       (Version_script_info::Version_script_info): New function.
+       (Version_script_info::~Version_script_info): Don't call clear.
+       (Version_script_info::finalize): New function.
+       (Version_script_info::build_lookup_tables): New function.
+       (Version_script_info::build_expression_list_lookup): New
+       function.
+       (Version_script_info::get_symbol_version_helper): Rewrite to use
+       lookup tables.
+       (Version_script_info::print_expression_list): Adjust to use
+       Version_script_info::Language.
+       (script_push_lex_into_version_mode): Check that the version script
+       has not been finalized.
+       (version_script_push_lang): Change language string to
+       Version_script_info::Language.
+       * options.cc (Command_line::version_script): New function.
+       * options.h (class General_options): Add finalize_dynamic_list
+       function.  Change version_script from declaration to definition.
+       * testsuite/ver_test_4.script: Remove duplicate def of t2_2.
+       * testsuite/version_script.map: Remove duplicate def of foo.
+       * testsuite/Makefile.am (ver_matching_def.so): Depend upon
+       version_script.map.
+       * testsuite/Makefile.in: Rebuild.
+
+2009-12-30  Ian Lance Taylor  <iant@google.com>
+
+       PR 10843
+       * target-reloc.h (relocate_for_relocatable): When copying a reloc,
+       if the input symbol index is 0, make the output symbol index 0.
+
+2009-12-30  Ian Lance Taylor  <iant@google.com>
+
+       PR 10670
+       * options.h (class General_options): Add -x/--discard-all.
+       * object.cc (Sized_relobj::do_count_local_symbols): Handle
+       --discard-all.  If the local symbol needs a dynamic entry, check
+       that before handling --discard-locals.
+
+2009-12-30  Ian Lance Taylor  <iant@google.com>
+
+       PR 10450
+       * output.cc (Output_segment::Output_segment): If PT_TLS, set the
+       flags to PF_R.
+       (Output_segment::add_output_section): Don't change the flags if
+       the type is PT_TLS.
+
+       PR 10450
+       * dynobj.cc (Dynobj::create_gnu_hash_table): Add symbols to the
+       GNU hash table if they need a dynamic value.  Otherwise, don't add
+       them if they are defined in a dynamic object or are forced local.
+
+2009-12-29  Ian Lance Taylor  <iant@google.com>
+
+       PR 10450
+       * layout.cc (Layout::create_dynamic_symtab): Only set entsize of
+       .gnu.hash table for a 32-bit target.
+
+       PR 10450
+       * symtab.h (Symbol::needs_dynsym_entry): A symbol in both a
+       regular and a dynamic object only needs a dynamic symbol table
+       entry if it is externally visible.
+
+       PR 10450
+       * i386.cc (class Target_i386): Initialize global_offset_table_ in
+       constructor.  Add global_offset_table_ field.
+       (Target_i386::got_section): Set global_offset_table_.
+       (Target_i386::do_finalize_sections): Set global_offset_table_
+       size.
+       * x86_64.cc (class Target_x86_64): Initialize global_offset_table_
+       in constructor.  Add global_offset_table_ field.
+       (Target_x86_64::got_section): Set global_offset_table_.
+       (Target_x86_64::do_finalize_sections): Set global_offset_table_
+       size.
+
+       * layout.cc (Layout::Layout): Initialize increase_relro_.
+       (Layout::get_output_section): Add is_relro, is_last_relro, and
+       is_first_non_relro parameters.  Change all callers.
+       (Layout::choose_output_section): Likewise.
+       (Layout::add_output_section_data): Likewise.
+       (Layout::make_output_section): Likewise.
+       (Layout::set_segment_offsets): Clear increase_relro when using a
+       linker script.
+       * layout.h (class Layout): Add increase_relro method.  Add
+       increase_relro_ field.  Update declarations.
+       * output.cc (Output_section::Output_section): Initialize
+       is_last_relro_ and is_first_non_relro_.
+       (Output_segment::add_output_section): Group relro sections is
+       do_sort is true.  Handle is_last_relro and is_first_non_relro.
+       (Output_segment::maximum_alignment): Remove relro handling.
+       (Output_segment::set_section_addresses): Add increase_relro
+       parameter.  Change all callers.  Add initial alignment to align
+       relro sections on separate page.  Remove old relro handling.
+       (Output_segment::set_section_list_addresses): Remove in_relro
+       parameter.  Change all callers.
+       (Output_segment::set_offset): Add increase parameter.  Change all
+       callers.  Remove old relro handling.
+       * output.h (class Output_section): Add new methods: is_last_relro,
+       set_is_last_relro, is_first_non_relro, set_is_first_non_relro.
+       Add is_last_relro_ and is_first_non_relro_ fields.
+       * i386.cc (Target_i386::got_section): Don't call set_is_relro.
+       Create separate .got.plt section.  Call increase_relro.
+       * x86_64.cc (Target_x86_64::got_section): Likewise.
+       * testsuite/relro_script_test.t: Add .got.plt.
+
+       PR 10450
+       * layout.cc (Layout::Layout): Initialize dynamic_symbol_ field.
+       (Layout::create_initial_dynamic_sections): Set dynamic_symbol_.
+       (Layout::finalize): Call set_dynamic_symbol_size.
+       (Layout::set_dynamic_symbol_size): New function.
+       * layout.h (class Layout): Add dynamic_symbol_ field.  Declare
+       set_dynamic_symbol_size.
+
+       PR 10450
+       * output.h (class Output_section): Add is_entsize_zero_ field.
+       * output.cc (Output_section::Output_section): Initialize
+       is_entsize_zero_.
+       (Output_section::set_entsize): If two different entsizes are
+       requested, force it to zero.
+       (Output_section::add_input_section): Set flags for .debug_str
+       before updating section flags.  Set entsize.
+       (Output_section::update_flags_for_input_section): Set SHF_MERGE
+       and SHF_STRING if all input sections have those flags.
+
+2009-12-29   Rafael Espindola  <espindola@google.com>
+
+       * main.cc (main): Fix the sys time reporting.
+       * workqueue.cc (Workqueue::find_and_run_task): Fix the sys time
+       reporting.
+
+2009-12-29  Sriraman Tallam  <tmsriram@google.com>
+
+       * options.cc (General_options::parse_version): Allow -v to exit
+       without an error if there is nothing to link.
+
+2009-12-29  Ian Lance Taylor  <iant@google.com>
+
+       * configure.ac: Set the MCMODEL_MEDIUM conditional to false if
+       using a version of gcc before 4.1.
+       * configure: Rebuild.
+
+2009-12-28  Chris Demetriou  <cgd@google.com>
+
+       * attributes.cc (Output_attributes_section_data::do_write): Use
+       std::vector::front rather than std::vector::data.
+
+2009-12-28  Ian Lance Taylor  <iant@google.com>
+
+       * symtab.h (class Symbol_table): Add enum Defined.
+       * resolve.cc (Symbol_table::should_override): Add defined
+       parameter.  Change all callers.  Test whether object is NULL
+       before calling a method on it.
+       (Symbol_table::report_resolve_problem): Add defined parameter.
+       Change all callers.
+       (Symbol_table::should_override_with_special): Likewise.
+       * symtab.cc (Symbol_table::define_in_output_data): Add defined
+       parameter.  Change all callers.
+       (Symbol_table::do_define_in_output_data): Likewise.
+       (Symbol_table::define_in_output_segment): Likewise.
+       (Symbol_table::do_define_in_output_segment): Likewise.
+       (Symbol_table::define_as_constant): Likewise.
+       (Symbol_table::do_define_as_constant): Likewise.
+       * script.h (class Symbol_assignment): Add is_defsym parameter to
+       constructor; change all callers.
+       * script.cc (Script_options::add_symbol_assignment): Add is_defsym
+       parameter.  Change all callers.  Add is_defsym_ field.
+       (class Parser_closure): Add parsing_defsym parameter to
+       constructor; change all callers.  Add parsing_defsym accessor
+       function.  Add parsing_defsym_ field.
+
+2009-12-28  Ian Lance Taylor  <iant@google.com>
+
+       * gold.cc (queue_middle_tasks): Fix formatting.
+       * object.cc (Relobj::is_section_name_included): Likewise.
+
+2009-12-23  Ian Lance Taylor  <iant@google.com>
+
+       * i386.cc (Target_i386::do_calls_non_split): Recognize
+       -fsplit-stack prologue for a function with a static chain.
+       * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize
+       -fsplit-stack prologue when using %r11.
+
+2009-12-21  Sriraman Tallam  <tmsriram@google.com>
+
+       * options.cc (General_options::parse_version): Make -v continue and do
+       the link like GNU ld does.
+
+2009-12-17  Rafael Avila de Espindola  <espindola@google.com>
+
+       * 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.
+
+2009-12-16  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_relobj::scan_sections_for_stubs): Exclude ICF-eliminated
+       sections.
+       * object.cc (Sized_relobj::do_finalize_local_symbols): Handle
+       relaxed input sections.
+       * output.cc (Output_section::find_relaxed_input_section): Change
+       return type to Output_relaxed_input_section pointer.  Adjust code
+       for new type of relaxed_input_section_map_.
+       * output.h (Output_section::find_relaxed_input_section): Change
+       return type to Output_relaxed_input_section pointer.
+       (Output_section::Output_relaxed_input_section_by_input_section_map):
+       New type.
+       (Output_section::relaxed_input_section_map_): Change type to
+       Output_section::Output_relaxed_input_section_by_input_section_map.
+       * symtab.cc (Symbol_table::compute_final_value): Handle relaxed
+       input section.
+
 2009-12-15  Ian Lance Taylor  <iant@google.com>
 
        * layout.cc (Layout::create_shstrtab): Only write out after input
This page took 0.029747 seconds and 4 git commands to generate.