aboutsummaryrefslogtreecommitdiff
path: root/gold
diff options
context:
space:
mode:
Diffstat (limited to 'gold')
-rw-r--r--gold/ChangeLog370
-rw-r--r--gold/ChangeLog-2017848
-rw-r--r--gold/Makefile.am2
-rw-r--r--gold/Makefile.in6
-rw-r--r--gold/NEWS2
-rw-r--r--gold/README2
-rw-r--r--gold/aarch64-reloc-property.cc2
-rw-r--r--gold/aarch64-reloc-property.h2
-rw-r--r--gold/aarch64-reloc.def2
-rw-r--r--gold/aarch64.cc311
-rw-r--r--gold/archive.cc2
-rw-r--r--gold/archive.h2
-rw-r--r--gold/arm-reloc-property.cc2
-rw-r--r--gold/arm-reloc-property.h2
-rw-r--r--gold/arm-reloc.def2
-rw-r--r--gold/arm.cc43
-rw-r--r--gold/attributes.cc2
-rw-r--r--gold/attributes.h2
-rw-r--r--gold/binary.cc2
-rw-r--r--gold/binary.h2
-rw-r--r--gold/common.cc2
-rw-r--r--gold/common.h2
-rw-r--r--gold/compressed_output.cc6
-rw-r--r--gold/compressed_output.h2
-rw-r--r--gold/config.in3
-rwxr-xr-xgold/configure27
-rw-r--r--gold/configure.ac22
-rw-r--r--gold/configure.tgt2
-rw-r--r--gold/copy-relocs.cc2
-rw-r--r--gold/copy-relocs.h2
-rw-r--r--gold/cref.cc2
-rw-r--r--gold/cref.h2
-rw-r--r--gold/debug.h2
-rw-r--r--gold/defstd.cc2
-rw-r--r--gold/defstd.h2
-rw-r--r--gold/descriptors.cc2
-rw-r--r--gold/descriptors.h2
-rw-r--r--gold/dirsearch.cc2
-rw-r--r--gold/dirsearch.h2
-rw-r--r--gold/dwarf_reader.cc21
-rw-r--r--gold/dwarf_reader.h9
-rw-r--r--gold/dwp.cc4
-rw-r--r--gold/dwp.h2
-rw-r--r--gold/dynobj.cc2
-rw-r--r--gold/dynobj.h2
-rw-r--r--gold/ehframe.cc48
-rw-r--r--gold/ehframe.h15
-rw-r--r--gold/errors.cc2
-rw-r--r--gold/errors.h2
-rw-r--r--gold/expression.cc2
-rw-r--r--gold/ffsll.c2
-rw-r--r--gold/fileread.cc2
-rw-r--r--gold/fileread.h2
-rw-r--r--gold/freebsd.h2
-rw-r--r--gold/ftruncate.c2
-rw-r--r--gold/gc.cc2
-rw-r--r--gold/gc.h2
-rw-r--r--gold/gdb-index.cc2
-rw-r--r--gold/gdb-index.h2
-rw-r--r--gold/gold-threads.cc2
-rw-r--r--gold/gold-threads.h2
-rw-r--r--gold/gold.cc4
-rw-r--r--gold/gold.h2
-rw-r--r--gold/i386.cc2
-rw-r--r--gold/icf.cc2
-rw-r--r--gold/icf.h2
-rw-r--r--gold/incremental-dump.cc2
-rw-r--r--gold/incremental.cc6
-rw-r--r--gold/incremental.h2
-rw-r--r--gold/int_encoding.cc2
-rw-r--r--gold/int_encoding.h2
-rw-r--r--gold/layout.cc100
-rw-r--r--gold/layout.h9
-rw-r--r--gold/main.cc2
-rw-r--r--gold/mapfile.cc2
-rw-r--r--gold/mapfile.h2
-rw-r--r--gold/merge.cc2
-rw-r--r--gold/merge.h2
-rw-r--r--gold/mips.cc4
-rw-r--r--gold/mremap.c2
-rw-r--r--gold/nacl.cc2
-rw-r--r--gold/nacl.h2
-rw-r--r--gold/object.cc52
-rw-r--r--gold/object.h5
-rw-r--r--gold/options.cc10
-rw-r--r--gold/options.h28
-rw-r--r--gold/output.cc20
-rw-r--r--gold/output.h2
-rw-r--r--gold/parameters.cc2
-rw-r--r--gold/parameters.h2
-rw-r--r--gold/plugin.cc69
-rw-r--r--gold/plugin.h21
-rw-r--r--gold/po/Make-in8
-rw-r--r--gold/po/es.po1
-rw-r--r--gold/po/fi.po1
-rw-r--r--gold/po/fr.po1
-rw-r--r--gold/po/id.po1410
-rw-r--r--gold/po/it.po1
-rw-r--r--gold/po/ja.po2241
-rw-r--r--gold/po/sv.po4733
-rw-r--r--gold/po/uk.po3451
-rw-r--r--gold/po/vi.po323
-rw-r--r--gold/po/zh_CN.po1
-rw-r--r--gold/powerpc.cc519
-rw-r--r--gold/pread.c2
-rw-r--r--gold/readsyms.cc2
-rw-r--r--gold/readsyms.h2
-rw-r--r--gold/reduced_debug_output.cc2
-rw-r--r--gold/reduced_debug_output.h2
-rw-r--r--gold/reloc-types.h2
-rw-r--r--gold/reloc.cc2
-rw-r--r--gold/reloc.h2
-rw-r--r--gold/resolve.cc99
-rw-r--r--gold/s390.cc2
-rw-r--r--gold/script-c.h2
-rw-r--r--gold/script-sections.cc2
-rw-r--r--gold/script-sections.h2
-rw-r--r--gold/script.cc2
-rw-r--r--gold/script.h2
-rw-r--r--gold/sparc.cc4
-rw-r--r--gold/stringpool.cc2
-rw-r--r--gold/stringpool.h2
-rw-r--r--gold/symtab.cc108
-rw-r--r--gold/symtab.h133
-rw-r--r--gold/system.h12
-rw-r--r--gold/target-reloc.h21
-rw-r--r--gold/target-select.cc2
-rw-r--r--gold/target-select.h2
-rw-r--r--gold/target.cc2
-rw-r--r--gold/target.h4
-rw-r--r--gold/testsuite/Makefile.am132
-rw-r--r--gold/testsuite/Makefile.in292
-rw-r--r--gold/testsuite/aarch64_tlsdesc.s12
-rwxr-xr-xgold/testsuite/aarch64_tlsdesc.sh110
-rw-r--r--gold/testsuite/aarch64_tlsdesc.t6
-rwxr-xr-xgold/testsuite/arm_abs_global.sh2
-rwxr-xr-xgold/testsuite/arm_farcall_arm_arm.sh2
-rwxr-xr-xgold/testsuite/arm_farcall_arm_arm_be8.sh41
-rwxr-xr-xgold/testsuite/arm_farcall_arm_thumb.sh2
-rwxr-xr-xgold/testsuite/arm_farcall_thumb_thumb_be8.sh47
-rwxr-xr-xgold/testsuite/arm_target2_got_rel.sh2
-rwxr-xr-xgold/testsuite/arm_target2_rel.sh2
-rwxr-xr-xgold/testsuite/bnd_ifunc_1.sh2
-rw-r--r--gold/testsuite/common_test_1.c2
-rw-r--r--gold/testsuite/copy_test_2.cc2
-rwxr-xr-xgold/testsuite/debug_msg.sh6
-rw-r--r--gold/testsuite/discard_locals_relocatable_test.c2
-rw-r--r--gold/testsuite/dwp_test.h2
-rw-r--r--gold/testsuite/dwp_test_2.cc2
-rw-r--r--gold/testsuite/dwp_test_main.cc2
-rw-r--r--gold/testsuite/dyn_weak_ref_1.c2
-rw-r--r--gold/testsuite/dynamic_list_2.t2
-rw-r--r--gold/testsuite/ehdr_start_def.cc2
-rw-r--r--gold/testsuite/ehdr_start_test.cc2
-rwxr-xr-xgold/testsuite/empty_command_line_test.sh43
-rw-r--r--gold/testsuite/export_dynamic_plugin.cc29
-rwxr-xr-xgold/testsuite/file_in_many_sections_test.sh2
-rw-r--r--gold/testsuite/gc_dynamic_list_test.c2
-rwxr-xr-xgold/testsuite/gc_dynamic_list_test.sh2
-rw-r--r--gold/testsuite/gc_orphan_section_test.cc2
-rw-r--r--gold/testsuite/gc_tls_test.cc2
-rw-r--r--gold/testsuite/gdb_index_test.cc2
-rwxr-xr-xgold/testsuite/gdb_index_test_1.sh2
-rwxr-xr-xgold/testsuite/icf_preemptible_functions_test.sh2
-rw-r--r--gold/testsuite/icf_safe_so_test.cc2
-rw-r--r--gold/testsuite/icf_sht_rel_addend_test_1.cc2
-rw-r--r--gold/testsuite/icf_string_merge_test.cc2
-rw-r--r--gold/testsuite/icf_test.cc2
-rwxr-xr-xgold/testsuite/incremental_test.sh2
-rw-r--r--gold/testsuite/incremental_test_2.c2
-rw-r--r--gold/testsuite/initpri3.c2
-rw-r--r--gold/testsuite/justsyms.t2
-rw-r--r--gold/testsuite/justsyms_exec.c2
-rw-r--r--gold/testsuite/justsyms_lib.c2
-rwxr-xr-xgold/testsuite/memory_test.sh2
-rwxr-xr-xgold/testsuite/missing_key_func.sh2
-rw-r--r--gold/testsuite/no_version_test.c2
-rw-r--r--gold/testsuite/odr_violation2.cc8
-rw-r--r--gold/testsuite/pie_copyrelocs_shared_test.cc2
-rw-r--r--gold/testsuite/plugin_common_test_1.c2
-rwxr-xr-xgold/testsuite/plugin_final_layout.sh16
-rw-r--r--gold/testsuite/plugin_new_section_layout.c182
-rw-r--r--gold/testsuite/plugin_section_alignment.cc2
-rw-r--r--gold/testsuite/plugin_test.c2
-rwxr-xr-xgold/testsuite/plugin_test_10.sh2
-rwxr-xr-xgold/testsuite/plugin_test_11.sh2
-rwxr-xr-xgold/testsuite/plugin_test_12.sh52
-rwxr-xr-xgold/testsuite/plugin_test_2.sh2
-rw-r--r--gold/testsuite/plugin_test_7_2.c2
-rwxr-xr-xgold/testsuite/plugin_test_start_lib.sh2
-rwxr-xr-xgold/testsuite/pr20717.sh2
-rw-r--r--gold/testsuite/pr22266_a.c13
-rw-r--r--gold/testsuite/pr22266_main.c13
-rw-r--r--gold/testsuite/pr22266_script.t24
-rwxr-xr-xgold/testsuite/relro_test.sh2
-rw-r--r--gold/testsuite/relro_test_main.cc2
-rwxr-xr-xgold/testsuite/script_test_14.sh2
-rwxr-xr-xgold/testsuite/script_test_4.sh2
-rw-r--r--gold/testsuite/script_test_5.cc2
-rw-r--r--gold/testsuite/script_test_5.t2
-rwxr-xr-xgold/testsuite/script_test_9.sh2
-rw-r--r--gold/testsuite/section_sorting_name.cc2
-rwxr-xr-xgold/testsuite/section_sorting_name.sh2
-rwxr-xr-xgold/testsuite/split_x32.sh2
-rw-r--r--gold/testsuite/strong_ref_weak_def_2.c2
-rw-r--r--gold/testsuite/test.cc2
-rwxr-xr-xgold/testsuite/text_section_grouping.sh2
-rw-r--r--gold/testsuite/text_unlikely_segment.cc30
-rwxr-xr-xgold/testsuite/text_unlikely_segment.sh60
-rw-r--r--gold/testsuite/thin_archive_test_2.cc2
-rw-r--r--gold/testsuite/thin_archive_test_4.cc2
-rw-r--r--gold/testsuite/tls_test.cc2
-rwxr-xr-xgold/testsuite/two_file_shared.sh2
-rw-r--r--gold/testsuite/two_file_test.h2
-rw-r--r--gold/testsuite/two_file_test_1.cc3
-rw-r--r--gold/testsuite/two_file_test_1_v1.cc3
-rw-r--r--gold/testsuite/two_file_test_main.cc2
-rw-r--r--gold/testsuite/two_file_test_tls.cc2
-rwxr-xr-xgold/testsuite/ver_matching_test.sh2
-rw-r--r--gold/testsuite/ver_test.h2
-rwxr-xr-xgold/testsuite/ver_test_1.sh2
-rw-r--r--gold/testsuite/ver_test_10.script2
-rwxr-xr-xgold/testsuite/ver_test_10.sh2
-rw-r--r--gold/testsuite/ver_test_4.cc2
-rw-r--r--gold/testsuite/ver_test_4.script2
-rw-r--r--gold/testsuite/ver_test_6.c2
-rw-r--r--gold/testsuite/ver_test_8.script2
-rw-r--r--gold/testsuite/weak_alias_test_1.cc2
-rwxr-xr-xgold/testsuite/weak_plt.sh2
-rw-r--r--gold/testsuite/weak_undef_file1.cc2
-rw-r--r--gold/testsuite/weak_undef_file3.cc2
-rwxr-xr-xgold/testsuite/x32_overflow_pc32.sh2
-rwxr-xr-xgold/testsuite/x86_64_mov_to_lea.sh2
-rw-r--r--gold/tilegx.cc2
-rw-r--r--gold/timer.cc2
-rw-r--r--gold/timer.h2
-rw-r--r--gold/tls.h2
-rw-r--r--gold/token.h2
-rw-r--r--gold/version.cc4
-rw-r--r--gold/workqueue-internal.h2
-rw-r--r--gold/workqueue-threads.cc2
-rw-r--r--gold/workqueue.cc2
-rw-r--r--gold/workqueue.h2
-rw-r--r--gold/x86_64.cc42
-rw-r--r--gold/yyscript.y2
245 files changed, 14895 insertions, 1759 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 7a0a1cf..2b8e7c5 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,374 +1,10 @@
-2017-06-23 Alan Modra <amodra@gmail.com>
-
- * options.h (General_options): Add plt_localentry.
- * powerpc.cc (Target_powerpc::st_other): New function.
- (Target_powerpc::plt_localentry0_, plt_localentry0_init_,
- has_localentry0_): New vars.
- (Target_powerpc::plt_localentry0, set_has_localentry0,
- is_elfv2_localentry0): New functions.
- (Target_powerpc::Branch_info::mark_pltcall): Don't set tocsave or
- return true for localentry:0 calls.
- (Stub_table::Plt_stub_ent::localentry0_): New var.
- (Stub_table::add_plt_call_entry): Set localentry0_ and has_localentry0_.
- Don't set r2save_ for localentry:0 calls.
- (Output_data_glink::do_write): Save r2 in __glink_PLTresolve for elfv2.
- (Target_powerpc::scan_relocs): Default plt_localentry0_.
- (Target_powerpc::do_finalize_sections): Set DT_PPC64_OPT.
- (Target_powerpc::Relocate::relocate): Don't require nop following
- calls for localentry:0 plt calls, and don't change nop.
-
-2017-06-23 Alan Modra <amodra@gmail.com>
-
- * powerpc.cc (Target_powerpc::tocsave_loc_): New var.
- (Target_powerpc::mark_pltcall, add_tocsave, tocsave_loc): New functions.
- (Target_powerpc::Branch_info::tocsave_): New var.
- (Target_powerpc::Branch_info::mark_pltcall): New function.
- (Target_powerpc::Branch_info::make_stub): Pass tocsave_ to
- add_plt_call_entry.
- (Stub_table::Plt_stub_ent): Make public. Add r2save_.
- (Stub_table::add_plt_call_entry): Add bool tocsave_ param. Set
- r2save_.
- (Stub_table::find_plt_call_entry): Return Plt_stub_ent*. Adjust
- use throughout.
- (Stub_table::do_write): Conditionally output r2 save in plt stubs.
- (Target_powerpc::Scan::local): Handle R_PPC64_TOCSAVE.
- (Target_powerpc::Scan::global): Likewise.
- (Target_powerpc::Relocate::relocate): Skip r2 save in plt call stub
- with tocsave reloc. Replace header tocsave nop with r2 save.
- * symtab.h (struct Symbol_location_hash): Make public.
-
-2017-06-21 Alan Modra <amodra@gmail.com>
-
- * powerpc.cc (Plt_stub_key): Rename from Plt_stub_ent. Remove indx_.
- (Plt_stub_key_hash): Rename from Plt_stub_ent_hash.
- (struct Plt_stub_ent): New.
- (Plt_stub_entries): Map from Plt_stub_key to Plt_stub_ent. Adjust
- use throughout file.
-
-2017-06-20 Eric Christopher <echristo@gmail.com>
-
- * aarch64.cc (scan_reloc_for_stub): Use plt_address_for_global to
- calculate the symbol value.
- (scan_reloc_section_for_stubs): Allow stubs to be created for
- section symbols.
- (maybe_apply_stub): Handle creating stubs for weak symbols to
- match the code in scan_reloc_for_stub.
-
-2017-06-20 James Clarke <jrtc27@jrtc27.com>
-
- * powerpc.cc (Stub_table::define_stub_syms): Always include object's
- uniq_ value.
-
-2017-06-15 Eric Christopher <echristo@gmail.com>
-
- * aarch64.cc: Fix a few typos and grammar-os.
-
-2017-06-15 Jiong Wang <jiong.wang@arm.com>
-
- * aarch64.cc (Insn_utilities::is_mrs_tpidr_el0): New method.
- (AArch64_relobj<size, big_endian>::try_fix_erratum_843419_optimized):
- Return ture for some TLS relaxed sequences.
-
-2017-06-07 Eric Christopher <echristo@gmail.com>
-
- * aarch64.cc (maybe_apply_stub): Add debug logging for looking
- up stubs to undefined symbols and early return rather than
- fail to look them up.
- (scan_reloc_for_stub): Add debug logging for no stub creation
- for undefined symbols.
-
-2017-05-23 Alan Modra <amodra@gmail.com>
-
- PR 21503
- * options.h: Add --emit-stub-syms option.
- * powerpc.cc (object_id): New.
- (Powerpc_relobj): Add uniq_ and accessor. Sort variables for
- better packing.
- (Powerpc_dynobj): Sort variables for better packing.
- (Target_powerpc::define_local): New function.
- (Target_powerpc::group_sections): Pass stub table size to
- Stub_table constructor.
- (Target_powerpc::do_relax): Define stub and glink symbols.
- (Stub_table): Add uniq_ variable, and id param to constructor.
- (Stub_table::Plt_stub_ent): Add indx_ variable.
- (Stub_table::Branch_stub_entries): Move typedef earlier.
- (Stub_table::branch_stub_size): Replace "to" parameter with a
- Branch_stub_entries iterator.
- (Stub_table::add_long_branch_entry): Adjust to suit.
- (Stub_table::add_plt_call_entry): Set indx_.
- (Stub_table::define_stub_syms): New function.
-
-2017-05-15 Eric Christopher <echristo@gmail.com>
-
- * layout.cc (Layout::segment_precedes): Add a case for testing
- pointer equality when determining which segment precedes
- another.
-
-2017-05-13 James Clarke <jrtc27@jrtc27.com>
-
- PR gold/21444
- * gold.cc (Target_sparc::Relocate::relocate_tls): Local
- variables are final for position-independent executables. This
- has to be consistent with Target_sparc::Scan::local otherwise
- they will disagree as to whether local-exec is used.
-
-2017-05-12 Igor Kudrin <ikudrin@accesssoftek.com>
-
- PR gold/21430
- * aarch64.cc
- (AArch64_relobj::convert_input_section_to_relaxed_section):
- Set the section offset to -1ULL.
- (Target_aarch64::relocate_section): Adjust the view in case
- of a relaxed input section.
- * testsuite/Makefile.am (pr21430): New test.
- * testsuite/Makefile.in: Regenerate
- * testsuite/pr21430.s: New test source file.
- * testsuite/pr21430.sh: New test script.
-
-2017-04-27 Alan Modra <amodra@gmail.com>
-
- * testsuite/plugin_section_order.c (onload): Add missing break.
-
-2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
-
- * mips.cc (Mips_got_entry::hash()): Shift addend to reduce
- possibility of collisions.
- (Mips_got_entry::equals): Fix case for GOT_TLS_LDM
- entries.
-
-2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
-
- * mips.cc (Mips_relobj::merge_processor_specific_data_): New data
- member.
- (Mips_relobj::merge_processor_specific_data): New method.
- (Mips_relobj::do_read_symbols): Set merge_processor_specific_data_
- to false, only if the input file is a binary or if object has no
- contents except the section name string table and an empty symbol
- table with the undefined symbol.
- (Target_mips::do_finalize_sections): Refactor. Skip empty object files
- for merging processor-specific data.
-
-2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
-
- * mips.cc (Target_mips::Relocate::calculated_value_): New data
- member.
- (Target_mips::Relocate::calculate_only_): Likewise.
- (Target_mips::Relocate::relocate): Handle multiple consecutive
- relocations with the same offset.
-
-2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
-
- * mips.cc (Target_mips::Relocate::relocate): Remove redundant
- checks for relocatable link.
- (Mips_relocate_functions::reljalr): Likewise.
-
-2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
-
- * mips.cc (class Mips_output_section_options): New class.
- (Target_mips::do_make_output_section): New method.
-
-2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
-
- * mips.cc (Mips_relocate_functions::rel26): Don't print relocation
- overflow error message.
- (Target_mips::relocate_special_relocatable): Improve relocation
- overflow error message.
- (Target_mips::Relocate::relocate): Likewise.
-
-2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
-
- * mips.cc (symbol_refs_local): Return false if a symbol
- is from a dynamic object.
- (Target_mips::got_section): Make _GLOBAL_OFFSET_TABLE_ STV_HIDDEN.
- (Target_mips::set_gp): Refactor. Make _gp STT_NOTYPE and
- STB_LOCAL.
- (Target_mips::do_finalize_sections): Set _gp after all the checks
- for creating .got are done.
- (Target_mips::Scan::global): Remove unused code.
-
-2017-02-22 Alan Modra <amodra@gmail.com>
-
- * powerpc.cc (Target_powerpc::make_iplt_section): Check that
- output_section exists before attempting add_output_section_data.
- (Target_powerpc::make_brlt_section): Likewise.
-
-2017-02-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
-
- * mips.cc (Target_mips::Scan::get_reference_flags): Remove
- gold_unreachable from default case.
-
-2017-02-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
-
- PR gold/21111
- * mips.cc (Mips_relocate_functions::relhigher): New method.
- (Mips_relocate_functions::relhighest): Likewise.
- (mips_get_size_for_reloc): Add support for relocs: R_MIPS_HIGHER and
- R_MIPS_HIGHEST.
- (Target_mips::Scan::local): Add support for relocs: R_MIPS_HIGHER,
- R_MIPS_HIGHEST, R_MICROMIPS_HIGHER and R_MICROMIPS_HIGHEST.
- (Target_mips::Scan::global): Likewise.
- (Target_mips::Scan::get_reference_flags): Likewise.
- (Target_mips::Relocate::relocate): Call static methods for resolving
- HIGHER and HIGHEST relocations.
-
-2017-02-03 Rahul Chaudhry <rahulchaudhry@google.com>
-
- * x86_64.cc (Target_x86_64::do_can_check_for_function_pointers):
- Return true even when building pie binaries.
- (Target_x86_64::possible_function_pointer_reloc): Check opcode
- for R_X86_64_PC32 relocations.
- (Target_x86_64::local_reloc_may_be_function_pointer): Pass
- extra arguments to local_reloc_may_be_function_pointer.
- (Target_x86_64::global_reloc_may_be_function_pointer): Likewise.
- * gc.h (gc_process_relocs): Add check for STT_FUNC.
- * testsuite/Makefile.am (icf_safe_pie_test): New test case.
- * testsuite/Makefile.in: Regenerate.
- * testsuite/icf_safe_pie_test.sh: New shell script.
-
-2017-02-03 Alan Modra <amodra@gmail.com>
-
- * powerpc.cc (Powerpc_relobj::make_toc_relative): Don't crash
- when no .toc section exists.
-
-2017-01-31 Cary Coutant <ccoutant@gmail.com>
-
- PR gold/21090
- * x86_64.cc (Target_x86_64::can_convert_mov_to_lea): Add check
- for predefined symbol.
- (Target_x86_64::Relocate::relocate): Fix formatting.
-
-2017-01-23 Rahul Chaudhry <rahulchaudhry@google.com>
-
- * testsuite/icf_safe_so_test.sh: Use "set -e".
- * testsuite/icf_safe_test.sh: Likewise.
- * testsuite/icf_test.sh: Likewise.
-
-2017-01-23 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
-
- * mips.cc (Mips_output_data_plt::rel_plt): Remove const from return
- type.
- (Target_mips::make_plt_entry): Make the sh_info field of .rel.plt
- point to .plt.
-
-2017-01-23 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
-
- PR gold/21054
- * mips.cc (Mips_got_info::record_global_got_symbol): Don't add symbol
- to the dynamic symbol table if it is forced to local visibility.
- (Target_mips::do_finalize_sections): Don't add __RLD_MAP symbol to the
- dynamic symbol table if it is forced to local visibility.
-
-2017-01-20 Nick Clifton <nickc@redhat.com>
-
- * aarch64.cc (Stub_template_repertoire): Change ST_E_835769_INSNS
- from a pointer to an array.
-
-2017-01-13 H.J. Lu <hongjiu.lu@intel.com>
-
- PR gold/21040
- * powerpc.cc (Powerpc_relobj<size, big_endian>::make_toc_relative):
- Cast 0x80008000 to uint64_t.
-
-2017-01-12 Cary Coutant <ccoutant@gmail.com>
-
- * object.cc (Sized_relobj_file): Fix byte counts for calls to memmem.
-
-2017-01-11 Cary Coutant <ccoutant@gmail.com>
-
- PR gold/21040
- * x86_64.cc (Output_data_plt_x86_64_bnd::do_fill_first_plt_entry):
- Remove unnecessary 'typename' keyword.
- (Output_data_plt_x86_64_bnd::do_fill_plt_entry): Likewise.
- (Output_data_plt_x86_64_bnd::fill_aplt_entry): Likewise.
- (Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry): Likewise.
- (Output_data_plt_x86_64_bnd::do_write): Likewise.
-
-2017-01-11 Cary Coutant <ccoutant@gmail.com>
-
- PR gold/21040
- * x86_64.cc (Output_data_plt_x86_64_bnd::do_fill_first_plt_entry):
- Remove unnecessary 'typename' keyword.
- (Output_data_plt_x86_64_bnd::do_fill_plt_entry): Likewise.
- (Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry): Likewise.
- (Output_data_plt_x86_64_bnd::fill_aplt_entry): Likewise.
- * testsuite/copy_test_relro_1.cc (p, b, c, q): Add separate extern
- declarations.
-
-2017-01-11 Cary Coutant <ccoutant@gmail.com>
-
- PR gold/21039
- * testsuite/script_test_13.sh: Adjust patterns to work for i386.
- * testsuite/script_test_15a.sh: Likewise.
- * testsuite/script_test_15b.sh: Likewise.
- * testsuite/script_test_15c.sh: Likewise.
-
-2017-01-11 Alan Modra <amodra@gmail.com>
-
- * powerpc.cc (class Powerpc_copy_relocs): New.
- (Powerpc_copy_relocs::emit): New function.
- (Powerpc_relobj::relatoc_, toc_, no_toc_opt_): New variables.
- (Powerpc_relobj::toc_shndx, set_no_toc_opt, no_toc_opt): New inlines.
- (Powerpc_relobj::do_relocate_sections): New function.
- (Powerpc_relobj::make_toc_relative): Likewise.
- (Powerpc_relobj::do_find_special_sections): Stash away .rela.toc
- and .toc too.
- (ok_lo_toc_insn): Move earlier, and handle more insns.
- (Target_powerpc::Scan::local): If optimizing toc accesses, set
- no_toc_opt for entries we can't edit. Check insn validity.
- Emit "toc optimization is not supported" warning, downgraded
- from error.
- (Target_powerpc::Scan::global): Likewise.
- (Target_powerpc::Relocate::relocate): Edit TOC indirect code
- to TOC relative. Don't emit "toc optimization is not supported"
- error here.
-
-2017-01-10 Cary Coutant <ccoutant@gmail.com>
-
- * aarch64.cc (AArch64_relobj::do_relocate_sections): Call
- Sized_relobj_file::relocate_section_range().
- * arm.cc (Arm_relobj::do_relocate_sections): Likewise.
- * object.h (Sized_relobj_file::relocate_section_range): New method.
- * reloc.cc (Sized_relobj_file::do_relocate_sections): Move
- implementation...
- (Sized_relobj_file::relocate_section_range): ...to new method.
-
-2017-01-10 Alan Modra <amodra@gmail.com>
-
- * testsuite/ver_test_8.sh: Accept .TOC. in lieu of
- _GLOBAL_OFFSET_TABLE_. Allow zero count.
- * testsuite/copy_test_relro_1.cc (c, q): New vars.
- * testsuite/copy_test_relro.cc: Rewrite to test read-only
- status of variables directly. Reference new vars in
- read-only data.
-
-2017-01-10 Alan Modra <amodra@gmail.com>
-
- * options.h: Add --secure-plt option.
- * powerpc.cc (Target_powerpc::Scan::local): Detect and error
- on -fPIC -mbss-plt code.
- (Target_powerpc::Scan::global): Likewise.
-
-2017-01-09 Alan Modra <amodra@gmail.com>
-
- * powerpc.cc (Target_powerpc::make_plt_section): Point sh_info of
- ".rela.plt" at ".plt".
-
-2017-01-07 Alan Modra <amodra@gmail.com>
-
- * powerpc.cc: Use shorter equivalent elfcpp typedef for
- Reltype and reloc_size throughout.
- (Target_powerpc::symval_for_branch): Exclude dynamic symbols.
- (Target_powerpc::Scan::local): Use local var r_sym.
- (Target_powerpc::Scan::global: Likewise.
- (Target_powerpc::Relocate::relocate): Delete shadowing r_sym.
-
-2017-01-02 Alan Modra <amodra@gmail.com>
+2018-01-03 Alan Modra <amodra@gmail.com>
Update year range in copyright notice of all files.
-For older changes see ChangeLog-2016
+For older changes see ChangeLog-2017
-Copyright (C) 2017 Free Software Foundation, Inc.
+Copyright (C) 2018 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/gold/ChangeLog-2017 b/gold/ChangeLog-2017
new file mode 100644
index 0000000..b2a4771
--- /dev/null
+++ b/gold/ChangeLog-2017
@@ -0,0 +1,848 @@
+2017-12-15 Alan Modra <amodra@gmail.com>
+
+ PR 22602
+ * powerpc.cc (Target_powerpc::Branch_info::mark_pltcall): Resolve
+ forwards before replacing __tls_get_addr.
+ (Target_powerpc::Branch_info::make_stub): Likewise.
+
+2017-12-11 Stephen Crane <sjc@immunant.com>
+
+ * plugin.cc (Plugin::load): Include hooks for register_new_input
+ in transfer vector.
+ (Plugin::new_input): New function.
+ (register_new_input): New function.
+ (Plugin_manager::claim_file): Call Plugin::new_input if in
+ replacement phase.
+ * plugin.h (Plugin::set_new_input_handler): New function.
+ * testsuite/plugin_new_section_layout.c: New plugin to test
+ new_input plugin API.
+ * testsuite/plugin_final_layout.sh: Add new input test.
+ * testsuite/Makefile.am (plugin_layout_new_file): New test case.
+ * testsuite/Makefile.in: Regenerate.
+
+2017-12-02 Vladimir Kondratyev <vladimir@kondratyev.su>
+ Cary Coutant <ccoutant@gmail.com>
+
+ PR gold/22540
+ * output.cc (gold_fallocate): Trivial return for len == 0.
+ Add fallback options when posix_fallocate and fallocate return
+ not-supported errors.
+
+2017-12-01 Cary Coutant <ccoutant@gmail.com>
+
+ PR gold/21090
+ * incremental.cc (Sized_relobj_incr::do_relocate): Fix comment.
+ * options.cc (General_options::finalize): Disallow -pie with
+ incremental linking.
+ * x86_64.cc (Target_x86_64::Scan::local): Don't do mov-to-lea
+ or callq-to-direct optimizations for incremental links.
+ (Target_x86_64::Scan::global): Likewise.
+ (Target_x86_64::Relocate::relocate): Likewise.
+ * testsuite/Makefile.am (incremental_test): Force -no-pie.
+ (incremental_test_2): Likewise.
+ (incremental_test_3): Likewise.
+ (incremental_test_4): Likewise.
+ (incremental_test_5): Likewise.
+ (incremental_test_6): Likewise.
+ (incremental_copy_test): Likewise.
+ (incremental_common_test_1): Likewise.
+ (incremental_comdat_test_1): Likewise.
+ * testsuite/Makefile.in: Regenerate.
+
+2017-12-01 Cary Coutant <ccoutant@gmail.com>
+
+ PR gold/21841
+ * testsuite/debug_msg.sh: Adjust expected line numbers.
+ * testsuite/odr_violation2.cc (DummyFunction): New function.
+
+2017-12-01 Cary Coutant <ccoutant@gmail.com>
+
+ PR gold/22309
+ * testsuite/Makefile.am (two_file_test_1_v1_ndebug.o): Compile with
+ no EH information.
+ (two_file_test_1_ndebug.o): Likewise.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/two_file_test_1.cc: Touch to force recompilation with new
+ flags.
+ * testsuite/two_file_test_1_v1.cc: Likewise.
+
+2017-12-01 Cary Coutant <ccoutant@gmail.com>
+
+ PR gold/22042
+ * options.h (-fuse-ld): Use NULL instead of empty string.
+
+2017-12-01 Benjamin Peterson <bp@benjamin.pe>
+
+ PR gold/22406
+ * gold.cc (queue_initial_tasks) Check for number of real input files.
+ * options.cc (Command_line::process) Check for unterminated --start-lib
+ options.
+ * testsuite/Makefile.am: Add new test script.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/check_empty_command_lines.sh: New test script.
+
+2017-11-17 Stephen Crane <sjc@immunant.com>
+
+ PR gold/22448
+ * symtab.cc (Symbol_table::add_from_object): Only rescan for
+ undefined symbols in regular, not dynamic, objects.
+
+2017-11-30 Peter Smith <peter.smith@linaro.org>
+
+ PR gold/20765
+ * aarch64.cc (Aarch64_relobj::update_erratum_address): New method.
+ (AArch64_relobj::scan_errata): Update addresses in stub table after
+ relaxation pass.
+
+2017-11-30 Peter Smith <peter.smith@linaro.org>
+ Cary Coutant <ccoutant@gmail.com>
+
+ PR gold/20765
+ * aarch64.cc (Erratum_stub::invalidate_erratum_stub): Use erratum_insn_
+ instead of relobj_ to invalidate the stub.
+ (Erratum_stub::is_invalidated_erratum_stub): Likewise.
+
+2017-11-30 Peter Smith <peter.smith@linaro.org>
+
+ PR gold/22233
+ * aarch64.cc (AArch64_relobj::fix_errata_and_relocate_erratum_stubs):
+ Fix calculation of stub address.
+
+2017-11-29 Stefan Stroe <stroestefan@gmail.com>
+
+ * po/Make-in (datadir): Define as @datadir@.
+ (localedir): Define as @localedir@.
+ (gnulocaledir, gettextsrcdir): Use @datarootdir@.
+
+2017-11-28 Cary Coutant <ccoutant@gmail.com>
+
+ * resolve.cc (Symbol_table::resolve): Allow multiply-defined absolute
+ symbols when they have the same value.
+
+2017-11-28 Cary Coutant <ccoutant@gmail.com>
+
+ * object.h (class Sized_relobj_file): Remove discarded_eh_frame_shndx_.
+ * object.cc (Sized_relobj_file::Sized_relobj_file): Likewise.
+ (Sized_relobj_file::layout_eh_frame_section): Likewise.
+ (Sized_relobj_file::do_count_local_symbols): Check for optimized
+ .eh_frame section by other means.
+ (Sized_relobj_file::compute_final_local_value_internal): Likewise.
+
+2017-11-28 H.J. Lu <hongjiu.lu@intel.com>
+
+ * testsuite/pr22266_a.c: Add a newline at end of file.
+
+2017-11-27 Cary Coutant <ccoutant@gmail.com>
+
+ PR gold/19291
+ PR gold/22266
+ * object.cc (Sized_relobj_file::compute_final_local_value_internal):
+ Revert changes from 2017-11-08 patch. Adjust symbol value in
+ relocatable links for non-section symbols.
+ (Sized_relobj_file::compute_final_local_value): Revert changes from
+ 2017-11-08 patch.
+ (Sized_relobj_file::do_finalize_local_symbols): Likewise.
+ (Sized_relobj_file::write_local_symbols): Revert changes from
+ 2015-11-25 patch.
+ * object.h (Sized_relobj_file::compute_final_local_value_internal):
+ Revert changes from 2017-11-08 patch.
+ * powerpc.cc (Target_powerpc::relocate_relocs): Adjust addend for
+ relocatable links.
+ * target-reloc.h (relocate_relocs): Adjust addend for relocatable links.
+ * testsuite/pr22266_a.c (hello): New function.
+ * testsuite/pr22266_main.c (main): Add test for merge sections.
+ * testsuite/pr22266_script.t: Add rule for .rodata.
+
+2017-11-19 Ian Lance Taylor <iant@google.com>
+ Cary Coutant <ccoutant@gmail.com>
+
+ * dwarf_reader.h (class Dwarf_info_reader): Add ref_addr_size
+ method.
+ * dwarf_reader.cc (Dwarf_die::read_attributes): Use ref_addr_size
+ for DW_FORM_ref_addr_size.
+ (Dwarf_die::skip_attributes): Likewise.
+
+2017-11-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gold/22291
+ * layout.cc (Layout::define_section_symbols): Use STV_PROTECTED
+ for __start and __stop symbols.
+ * symtab.cc (Symbol_table::define_special_symbol): Add an
+ argument, visibility. Ignore definition and reference from
+ a dynamic object, depending on visibility.
+ (Symbol_table::do_define_in_output_data): Pass visibility to
+ define_special_symbol.
+ (Symbol_table::do_define_in_output_segment): Likewise.
+ (Symbol_table::do_define_as_constant): Likewise.
+ (Symbol_table::add_undefined_symbol_from_command_line): Pass
+ STV_DEFAULT to define_special_symbol.
+ * symtab.h (Symbol_table::define_special_symbol): Add an
+ argument, visibility.
+
+2017-11-08 James Clarke <jrtc27@jrtc27.com>
+
+ PR gold/22266
+ * object.cc (Sized_relobj_file::compute_final_local_value_internal):
+ Drop relocatable parameter and stop adjusting output value based on
+ it.
+ (Sized_relobj_file::compute_final_local_value): Stop passing
+ relocatable to compute_final_local_value_internal.
+ (Sized_relobj_file::do_finalize_local_symbols): Ditto.
+ * object.h (Sized_relobj_file::compute_final_local_value_internal):
+ Drop relocatable parameter.
+
+2017-11-08 Kyle Butt <iteratee@google.com>
+
+ * object.cc (do_find_special_sections): Fix a thinko with memmem return
+ values and check for != NULL rather than == 0.
+
+2017-11-07 Alan Modra <amodra@gmail.com>
+
+ * system.h (textdomain, bindtextdomain): Use safer "do nothing".
+ (ngettext, dngettext, dcngettext): Define when !ENABLE_NLS.
+
+2017-10-25 Alan Modra <amodra@gmail.com>
+
+ * symtab.cc (Symbol_table::add_from_relobj): Match "__gnu_lto_slim"
+ optionally prefixed with "_".
+
+2017-10-20 Sriraman Tallam <tmsriram@google.com>
+
+ * options.h (-z,text_unlikely_segment): New option.
+ * layout.cc (Layout::layout): Create new output section
+ for .text.unlikely sections with the new option.
+ (Layout::segment_precedes): Check for the new option
+ when segment flags match.
+ * testsuite/text_unlikely_segment.cc: New test source.
+ * testsuite/text_unlikely_segment.sh: New test script.
+ * testsuite/Makefile.am (text_unlikely_segment): New test.
+ * testsuite/Makefile.in: Regenerate.
+
+2017-10-19 Umesh Kalappa <ukalappa@cisco.com>
+
+ * arm.cc (Stub::do_fixed_endian_write):Far call stubs support for arm
+ in the be8 mode.
+ * testsuite/Makefile.am: New test cases.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/arm_farcall_arm_arm_be8.sh: New script for arm to arm far
+ call stubs.
+ * testsuite/arm_farcall_thumb_thumb_be8.sh: New script for thumb to
+ thumb far call stubs.
+
+2017-10-18 Kyle Butt <iteratee@google.com>
+ Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (Target_powerpc::Scan::local): Correct dst_off
+ calculation for TOC16 relocs.
+ (Target_powerpc::Scan::global): Likewise.
+
+2017-09-26 Cary Coutant <ccoutant@gmail.com>
+
+ PR gold/22213
+ * sparc.cc (Target_sparc): Fix incorrect register mask.
+
+2017-09-22 Jim Wilson <jim.wilson@linaro.org>
+
+ * aarch64.cc (Target_aarch64::aarch64_info): Set
+ is_default_stack_executable to false.
+
+2017-09-22 Alan Modra <amodra@gmail.com>
+
+ * resolve.cc (clone): Fix got_offset_list test.
+
+2017-09-22 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (Target_powerpc<64,*>::powerpc_info): Set
+ is_default_stack_executable false.
+
+2017-09-20 Teresa Johnson <tejohnson@google.com>
+
+ * plugin.cc (is_visible_from_outside): Check for export dynamic symbol
+ option and list.
+ * testsuite/Makefile.am (plugin_test_12): New test.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/export_dynamic_plugin.cc: New test source.
+ * testsuite/plugin_test_12.sh: New test script.
+
+2017-09-20 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (Target_powerpc::Branch_info::make_stub): Put
+ stubs for ppc32 non-branch relocs in first stub table.
+ (Target_powerpc::Relocate::relocate): Resolve similarly.
+
+2017-09-19 Alan Modra <amodra@gmail.com>
+
+ * options.h (stub-group-multi): Default to true. Add
+ --no-stub-group-multi.
+
+2017-08-30 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (Target_powerpc::Relocate::relocate): Nop addis on
+ TPREL16_HA, and convert insn on TPREL16_LO and TPREL16_LO_DS
+ relocs to use r2/r13 when addis would add zero.
+
+2017-08-29 Alan Modra <amodra@gmail.com>
+
+ * options.h (tls_get_addr_optimize): New option.
+ * symtab.h (Symbol::clear_in_reg, clone): New functions.
+ (Sized_symbol::clone): New function.
+ (Symbol_table::clone): New function.
+ * resolve.cc (Symbol::clone, Sized_symbol::clone): New functions.
+ * powerpc.cc (Target_powerpc::has_tls_get_addr_opt_,
+ tls_get_addr_, tls_get_addr_opt_): New vars.
+ (Target_powerpc::tls_get_addr_opt, tls_get_addr,
+ is_tls_get_addr_opt, replace_tls_get_addr,
+ set_has_tls_get_addr_opt, stk_linker): New functions.
+ (Target_powerpc::Track_tls::maybe_skip_tls_get_addr_call): Add
+ target param. Update callers. Compare symbols rather than names.
+ (Target_powerpc::do_define_standard_symbols): Init tls_get_addr_
+ and tls_get_addr_opt_.
+ (Target_powerpc::Branch_info::mark_pltcall): Translate tls_get_addr
+ sym to tls_get_addr_opt.
+ (Target_powerpc::Branch_info::make_stub): Likewise.
+ (Stub_table::define_stub_syms): Likewise.
+ (Target_powerpc::Scan::global): Likewise.
+ (Target_powerpc::Relocate::relocate): Likewise.
+ (add_3_12_2, add_3_12_13, bctrl, beqlr, cmpdi_11_0, cmpwi_11_0,
+ ld_11_1, ld_11_3, ld_12_3, lwz_11_3, lwz_12_3, mr_0_3, mr_3_0,
+ mtlr_11, std_11_1): New constants.
+ (Stub_table::eh_frame_added_): Delete.
+ (Stub_table::tls_get_addr_opt_bctrl_, plt_fde_len_, plt_fde_): New vars.
+ (Stub_table::init_plt_fde): New functions.
+ (Stub_table::add_eh_frame, replace_eh_frame): Move definition out
+ of line. Init and use plt_fde_.
+ (Stub_table::plt_call_size): Return size for tls_get_addr stub.
+ Extract alignment code to..
+ (Stub_table::plt_call_align): ..this new function. Adjust all callers.
+ (Stub_table::add_plt_call_entry): Set has_tls_get_addr_opt and
+ tls_get_addr_opt_bctrl, and align after that.
+ (Stub_table::do_write): Write out tls_get_addr stub.
+ (Target_powerpc::do_finalize_sections): Emit DT_PPC_OPT
+ PPC_OPT_TLS/PPC64_OPT_TLS bit.
+ (Target_powerpc::Relocate::relocate): Don't check for or modify
+ nop following bl for tls_get_addr stub.
+
+2017-08-29 Alan Modra <amodra@gmail.com>
+
+ * symtab.h (Symbol): Split u_ into u1_ and u2_. Adjust accessors
+ to suit. Move plt_offset_ before got_offsets_.
+ * symtab.cc (Symbol::init_fields): Adjust for union change.
+ (Symbol::init_base_output_data): Likewise.
+ (Symbol::init_base_output_segment): Likewise.
+ (Symbol::allocate_base_common): Likewise.
+ (Symbol::output_section): Likewise.
+ (Symbol::set_output_section): Likewise.
+ (Symbol::set_output_segment): Likewise.
+ * resolve.cc (Symbol::override_base): Likewise.
+ (Symbol::override_base_with_special): Likewise.
+
+2017-08-28 Igor Kudrin <ikudrin@accesssoftek.com>
+
+ * aarch64.cc (Target_aarch64::Relocate::relocate_tls):
+ Make got_tlsdesc_offset signed and fix its calculation.
+ * testsuite/Makefile.am (aarch64_tlsdesc): New test.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/aarch64_tlsdesc.s: New test source file.
+ * testsuite/aarch64_tlsdesc.sh: New test script.
+ * testsuite/aarch64_tlsdesc.t: New test linker script.
+
+2017-08-28 Alan Modra <amodra@gmail.com>
+
+ PR 21847
+ * powerpc.cc (Target_powerpc::is_elfv2_localentry0): Test
+ non_zero_localentry.
+ (Target_powerpc::resolve): New function.
+ (powerpc_info): Set has_resolve for 64-bit.
+ * target.h (Sized_target::resolve): Return bool.
+ * resolve.cc (Symbol_table::resolve): Continue with normal
+ processing when target resolve returns false.
+ * symtab.h (Symbol::non_zero_localentry, set_non_zero_localentry):
+ New accessors.
+ (Symbol::non_zero_localentry_): New flag bit.
+ * symtab.cc (Symbol::init_fields): Init non_zero_localentry_.
+
+2017-08-08 Romain Geissler <romain.geissler@gmail.com>
+ Alan Modra <amodra@gmail.com>
+
+ * configure.ac: Add --enable-default-hash-style option.
+ * options.h (hash_style): Use DEFAULT_HASH_STYLE as default value.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+
+2017-08-03 James Clarke <jrtc27@jrtc27.com>
+
+ * options.h (General_options): Set a non-NULL second help string
+ argument for relax to allow --no-relax.
+
+2017-08-01 Alan Modra <amodra@gmail.com>
+
+ * ehframe.cc (Fde::operator==): New.
+ (Cie::remove_fde, Eh_frame::remove_ehframe_for_plt): New.
+ * ehframe.h (Fde::operator==): Declare.
+ (Cie::remove_fde, Eh_frame::remove_ehframe_for_plt): Likewise.
+ * layout.cc (Layout::remove_eh_frame_for_plt): New.
+ * layout.h (Layout::remove_eh_frame_for_plt): Declare.
+ * powerpc.cc (Target_powerpc::do_relax): Remove old eh_frame FDEs.
+ (Stub_table::add_eh_frame): Delete eh_frame_added_ condition.
+ Don't add eh_frame for empty stub section.
+ (Stub_table::remove_eh_frame): New.
+
+2017-07-31 Alan Modra <amodra@gmail.com>
+
+ * options.h (no_tls_optimize): New powerpc option.
+ * powerpc.cc (Target_powerpc::abiversion, set_abiversion): Formatting.
+ (Target_powerpc::stk_toc): Formatting, fix comment.
+ (Target_powerpc::Track_tls::tls_get_addr_state): Rename from
+ tls_get_addr.
+ (Target_powerpc::optimize_tls_gd, optimize_tls_ld, optimize_tls_ie):
+ Return TLSOPT_NONE when !tls_optimize.
+ (Target_powerpc::add_global_pair_with_rel): Check
+ for existing reloc before reserving.
+ (Target_powerpc::add_local_tls_pair): Likewise.
+
+2017-07-31 Alan Modra <amodra@gmail.com>
+
+ PR 21847
+ * powerpc.cc (Target_powerpc::scan_relocs): Warn on --plt-localentry
+ without ld.so checks.
+
+2017-07-29 Alan Modra <amodra@gmail.com>
+
+ PR 21847
+ * powerpc.cc (Target_powerpc::scan_relocs): Default to
+ --no-plt-localentry.
+
+2017-07-28 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gold/21857
+ * compressed_output.cc (Output_compressed_section::set_final_data_size):
+ Call put_ch_reserved to clear the reserved field for 64-bit ELF.
+
+2017-07-26 H.J. Lu <hongjiu.lu@intel.com>
+
+ * mips.cc (Mips_relocate_functions): Add "llu" suffix to
+ 0x800080008000.
+
+2017-07-23 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (glink_eh_frame_fde_64v2): Correct advance to
+ restore of LR.
+ (glink_eh_frame_fde_64v1): Advance to restore of LR at latest
+ possible insn.
+
+2017-07-18 Nick Clifton <nickc@redhat.com>
+
+ PR 21775
+ * aarch64.cc: Fix spelling typos.
+ * arm.cc: Likewise.
+ * layout.cc: Likewise.
+ * powerpc.cc: Likewise.
+ * x86_64.cc: Likewise.
+
+2017-07-12 Alan Modra <amodra@gmail.com>
+
+ * po/es.po: Update from translationproject.org/latest/gold/.
+ * po/fi.po: Likewise.
+ * po/fr.po: Likewise.
+ * po/id.po: Likewise.
+ * po/it.po: Likewise.
+ * po/vi.po: Likewise.
+ * po/zh_CN.po: Likewise.
+ * po/ja.po: New file from translationproject.org.
+ * po/sv.po: Likewise.
+ * po/uk.po: Likewise.
+
+2017-07-06 Han Shen <shenhan@google.com>
+
+ PR gold/21491
+ * aarch64.cc (Erratum_stub::invalidate_erratum_stub): New method.
+ (Erratum_stub::is_invalidated_erratum_stub): New method.
+ (Stub_table::relocate_reloc_stub): Renamed from "relocate_stub".
+ (Stub_table::relocate_reloc_stubs): Renamed from "relocate_stubs".
+ (Stub_table::relocate_erratum_stub): New method.
+ (AArch64_relobj::fix_errata_and_relocate_erratum_stubs): Renamed from
+ "fix_errata".
+ (Target_aarch64::relocate_reloc_stub): Renamed from "relocate_stub".
+
+2017-06-23 Alan Modra <amodra@gmail.com>
+
+ * options.h (General_options): Add plt_localentry.
+ * powerpc.cc (Target_powerpc::st_other): New function.
+ (Target_powerpc::plt_localentry0_, plt_localentry0_init_,
+ has_localentry0_): New vars.
+ (Target_powerpc::plt_localentry0, set_has_localentry0,
+ is_elfv2_localentry0): New functions.
+ (Target_powerpc::Branch_info::mark_pltcall): Don't set tocsave or
+ return true for localentry:0 calls.
+ (Stub_table::Plt_stub_ent::localentry0_): New var.
+ (Stub_table::add_plt_call_entry): Set localentry0_ and has_localentry0_.
+ Don't set r2save_ for localentry:0 calls.
+ (Output_data_glink::do_write): Save r2 in __glink_PLTresolve for elfv2.
+ (Target_powerpc::scan_relocs): Default plt_localentry0_.
+ (Target_powerpc::do_finalize_sections): Set DT_PPC64_OPT.
+ (Target_powerpc::Relocate::relocate): Don't require nop following
+ calls for localentry:0 plt calls, and don't change nop.
+
+2017-06-23 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (Target_powerpc::tocsave_loc_): New var.
+ (Target_powerpc::mark_pltcall, add_tocsave, tocsave_loc): New functions.
+ (Target_powerpc::Branch_info::tocsave_): New var.
+ (Target_powerpc::Branch_info::mark_pltcall): New function.
+ (Target_powerpc::Branch_info::make_stub): Pass tocsave_ to
+ add_plt_call_entry.
+ (Stub_table::Plt_stub_ent): Make public. Add r2save_.
+ (Stub_table::add_plt_call_entry): Add bool tocsave_ param. Set
+ r2save_.
+ (Stub_table::find_plt_call_entry): Return Plt_stub_ent*. Adjust
+ use throughout.
+ (Stub_table::do_write): Conditionally output r2 save in plt stubs.
+ (Target_powerpc::Scan::local): Handle R_PPC64_TOCSAVE.
+ (Target_powerpc::Scan::global): Likewise.
+ (Target_powerpc::Relocate::relocate): Skip r2 save in plt call stub
+ with tocsave reloc. Replace header tocsave nop with r2 save.
+ * symtab.h (struct Symbol_location_hash): Make public.
+
+2017-06-21 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (Plt_stub_key): Rename from Plt_stub_ent. Remove indx_.
+ (Plt_stub_key_hash): Rename from Plt_stub_ent_hash.
+ (struct Plt_stub_ent): New.
+ (Plt_stub_entries): Map from Plt_stub_key to Plt_stub_ent. Adjust
+ use throughout file.
+
+2017-06-20 Eric Christopher <echristo@gmail.com>
+
+ * aarch64.cc (scan_reloc_for_stub): Use plt_address_for_global to
+ calculate the symbol value.
+ (scan_reloc_section_for_stubs): Allow stubs to be created for
+ section symbols.
+ (maybe_apply_stub): Handle creating stubs for weak symbols to
+ match the code in scan_reloc_for_stub.
+
+2017-06-20 James Clarke <jrtc27@jrtc27.com>
+
+ * powerpc.cc (Stub_table::define_stub_syms): Always include object's
+ uniq_ value.
+
+2017-06-15 Eric Christopher <echristo@gmail.com>
+
+ * aarch64.cc: Fix a few typos and grammar-os.
+
+2017-06-15 Jiong Wang <jiong.wang@arm.com>
+
+ * aarch64.cc (Insn_utilities::is_mrs_tpidr_el0): New method.
+ (AArch64_relobj<size, big_endian>::try_fix_erratum_843419_optimized):
+ Return ture for some TLS relaxed sequences.
+
+2017-06-07 Eric Christopher <echristo@gmail.com>
+
+ * aarch64.cc (maybe_apply_stub): Add debug logging for looking
+ up stubs to undefined symbols and early return rather than
+ fail to look them up.
+ (scan_reloc_for_stub): Add debug logging for no stub creation
+ for undefined symbols.
+
+2017-05-23 Alan Modra <amodra@gmail.com>
+
+ PR 21503
+ * options.h: Add --emit-stub-syms option.
+ * powerpc.cc (object_id): New.
+ (Powerpc_relobj): Add uniq_ and accessor. Sort variables for
+ better packing.
+ (Powerpc_dynobj): Sort variables for better packing.
+ (Target_powerpc::define_local): New function.
+ (Target_powerpc::group_sections): Pass stub table size to
+ Stub_table constructor.
+ (Target_powerpc::do_relax): Define stub and glink symbols.
+ (Stub_table): Add uniq_ variable, and id param to constructor.
+ (Stub_table::Plt_stub_ent): Add indx_ variable.
+ (Stub_table::Branch_stub_entries): Move typedef earlier.
+ (Stub_table::branch_stub_size): Replace "to" parameter with a
+ Branch_stub_entries iterator.
+ (Stub_table::add_long_branch_entry): Adjust to suit.
+ (Stub_table::add_plt_call_entry): Set indx_.
+ (Stub_table::define_stub_syms): New function.
+
+2017-05-15 Eric Christopher <echristo@gmail.com>
+
+ * layout.cc (Layout::segment_precedes): Add a case for testing
+ pointer equality when determining which segment precedes
+ another.
+
+2017-05-13 James Clarke <jrtc27@jrtc27.com>
+
+ PR gold/21444
+ * gold.cc (Target_sparc::Relocate::relocate_tls): Local
+ variables are final for position-independent executables. This
+ has to be consistent with Target_sparc::Scan::local otherwise
+ they will disagree as to whether local-exec is used.
+
+2017-05-12 Igor Kudrin <ikudrin@accesssoftek.com>
+
+ PR gold/21430
+ * aarch64.cc
+ (AArch64_relobj::convert_input_section_to_relaxed_section):
+ Set the section offset to -1ULL.
+ (Target_aarch64::relocate_section): Adjust the view in case
+ of a relaxed input section.
+ * testsuite/Makefile.am (pr21430): New test.
+ * testsuite/Makefile.in: Regenerate
+ * testsuite/pr21430.s: New test source file.
+ * testsuite/pr21430.sh: New test script.
+
+2017-04-27 Alan Modra <amodra@gmail.com>
+
+ * testsuite/plugin_section_order.c (onload): Add missing break.
+
+2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
+
+ * mips.cc (Mips_got_entry::hash()): Shift addend to reduce
+ possibility of collisions.
+ (Mips_got_entry::equals): Fix case for GOT_TLS_LDM
+ entries.
+
+2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
+
+ * mips.cc (Mips_relobj::merge_processor_specific_data_): New data
+ member.
+ (Mips_relobj::merge_processor_specific_data): New method.
+ (Mips_relobj::do_read_symbols): Set merge_processor_specific_data_
+ to false, only if the input file is a binary or if object has no
+ contents except the section name string table and an empty symbol
+ table with the undefined symbol.
+ (Target_mips::do_finalize_sections): Refactor. Skip empty object files
+ for merging processor-specific data.
+
+2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
+
+ * mips.cc (Target_mips::Relocate::calculated_value_): New data
+ member.
+ (Target_mips::Relocate::calculate_only_): Likewise.
+ (Target_mips::Relocate::relocate): Handle multiple consecutive
+ relocations with the same offset.
+
+2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
+
+ * mips.cc (Target_mips::Relocate::relocate): Remove redundant
+ checks for relocatable link.
+ (Mips_relocate_functions::reljalr): Likewise.
+
+2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
+
+ * mips.cc (class Mips_output_section_options): New class.
+ (Target_mips::do_make_output_section): New method.
+
+2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
+
+ * mips.cc (Mips_relocate_functions::rel26): Don't print relocation
+ overflow error message.
+ (Target_mips::relocate_special_relocatable): Improve relocation
+ overflow error message.
+ (Target_mips::Relocate::relocate): Likewise.
+
+2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
+
+ * mips.cc (symbol_refs_local): Return false if a symbol
+ is from a dynamic object.
+ (Target_mips::got_section): Make _GLOBAL_OFFSET_TABLE_ STV_HIDDEN.
+ (Target_mips::set_gp): Refactor. Make _gp STT_NOTYPE and
+ STB_LOCAL.
+ (Target_mips::do_finalize_sections): Set _gp after all the checks
+ for creating .got are done.
+ (Target_mips::Scan::global): Remove unused code.
+
+2017-02-22 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (Target_powerpc::make_iplt_section): Check that
+ output_section exists before attempting add_output_section_data.
+ (Target_powerpc::make_brlt_section): Likewise.
+
+2017-02-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
+
+ * mips.cc (Target_mips::Scan::get_reference_flags): Remove
+ gold_unreachable from default case.
+
+2017-02-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
+
+ PR gold/21111
+ * mips.cc (Mips_relocate_functions::relhigher): New method.
+ (Mips_relocate_functions::relhighest): Likewise.
+ (mips_get_size_for_reloc): Add support for relocs: R_MIPS_HIGHER and
+ R_MIPS_HIGHEST.
+ (Target_mips::Scan::local): Add support for relocs: R_MIPS_HIGHER,
+ R_MIPS_HIGHEST, R_MICROMIPS_HIGHER and R_MICROMIPS_HIGHEST.
+ (Target_mips::Scan::global): Likewise.
+ (Target_mips::Scan::get_reference_flags): Likewise.
+ (Target_mips::Relocate::relocate): Call static methods for resolving
+ HIGHER and HIGHEST relocations.
+
+2017-02-03 Rahul Chaudhry <rahulchaudhry@google.com>
+
+ * x86_64.cc (Target_x86_64::do_can_check_for_function_pointers):
+ Return true even when building pie binaries.
+ (Target_x86_64::possible_function_pointer_reloc): Check opcode
+ for R_X86_64_PC32 relocations.
+ (Target_x86_64::local_reloc_may_be_function_pointer): Pass
+ extra arguments to local_reloc_may_be_function_pointer.
+ (Target_x86_64::global_reloc_may_be_function_pointer): Likewise.
+ * gc.h (gc_process_relocs): Add check for STT_FUNC.
+ * testsuite/Makefile.am (icf_safe_pie_test): New test case.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/icf_safe_pie_test.sh: New shell script.
+
+2017-02-03 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (Powerpc_relobj::make_toc_relative): Don't crash
+ when no .toc section exists.
+
+2017-01-31 Cary Coutant <ccoutant@gmail.com>
+
+ PR gold/21090
+ * x86_64.cc (Target_x86_64::can_convert_mov_to_lea): Add check
+ for predefined symbol.
+ (Target_x86_64::Relocate::relocate): Fix formatting.
+
+2017-01-23 Rahul Chaudhry <rahulchaudhry@google.com>
+
+ * testsuite/icf_safe_so_test.sh: Use "set -e".
+ * testsuite/icf_safe_test.sh: Likewise.
+ * testsuite/icf_test.sh: Likewise.
+
+2017-01-23 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
+
+ * mips.cc (Mips_output_data_plt::rel_plt): Remove const from return
+ type.
+ (Target_mips::make_plt_entry): Make the sh_info field of .rel.plt
+ point to .plt.
+
+2017-01-23 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
+
+ PR gold/21054
+ * mips.cc (Mips_got_info::record_global_got_symbol): Don't add symbol
+ to the dynamic symbol table if it is forced to local visibility.
+ (Target_mips::do_finalize_sections): Don't add __RLD_MAP symbol to the
+ dynamic symbol table if it is forced to local visibility.
+
+2017-01-20 Nick Clifton <nickc@redhat.com>
+
+ * aarch64.cc (Stub_template_repertoire): Change ST_E_835769_INSNS
+ from a pointer to an array.
+
+2017-01-13 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gold/21040
+ * powerpc.cc (Powerpc_relobj<size, big_endian>::make_toc_relative):
+ Cast 0x80008000 to uint64_t.
+
+2017-01-12 Cary Coutant <ccoutant@gmail.com>
+
+ * object.cc (Sized_relobj_file): Fix byte counts for calls to memmem.
+
+2017-01-11 Cary Coutant <ccoutant@gmail.com>
+
+ PR gold/21040
+ * x86_64.cc (Output_data_plt_x86_64_bnd::do_fill_first_plt_entry):
+ Remove unnecessary 'typename' keyword.
+ (Output_data_plt_x86_64_bnd::do_fill_plt_entry): Likewise.
+ (Output_data_plt_x86_64_bnd::fill_aplt_entry): Likewise.
+ (Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry): Likewise.
+ (Output_data_plt_x86_64_bnd::do_write): Likewise.
+
+2017-01-11 Cary Coutant <ccoutant@gmail.com>
+
+ PR gold/21040
+ * x86_64.cc (Output_data_plt_x86_64_bnd::do_fill_first_plt_entry):
+ Remove unnecessary 'typename' keyword.
+ (Output_data_plt_x86_64_bnd::do_fill_plt_entry): Likewise.
+ (Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry): Likewise.
+ (Output_data_plt_x86_64_bnd::fill_aplt_entry): Likewise.
+ * testsuite/copy_test_relro_1.cc (p, b, c, q): Add separate extern
+ declarations.
+
+2017-01-11 Cary Coutant <ccoutant@gmail.com>
+
+ PR gold/21039
+ * testsuite/script_test_13.sh: Adjust patterns to work for i386.
+ * testsuite/script_test_15a.sh: Likewise.
+ * testsuite/script_test_15b.sh: Likewise.
+ * testsuite/script_test_15c.sh: Likewise.
+
+2017-01-11 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (class Powerpc_copy_relocs): New.
+ (Powerpc_copy_relocs::emit): New function.
+ (Powerpc_relobj::relatoc_, toc_, no_toc_opt_): New variables.
+ (Powerpc_relobj::toc_shndx, set_no_toc_opt, no_toc_opt): New inlines.
+ (Powerpc_relobj::do_relocate_sections): New function.
+ (Powerpc_relobj::make_toc_relative): Likewise.
+ (Powerpc_relobj::do_find_special_sections): Stash away .rela.toc
+ and .toc too.
+ (ok_lo_toc_insn): Move earlier, and handle more insns.
+ (Target_powerpc::Scan::local): If optimizing toc accesses, set
+ no_toc_opt for entries we can't edit. Check insn validity.
+ Emit "toc optimization is not supported" warning, downgraded
+ from error.
+ (Target_powerpc::Scan::global): Likewise.
+ (Target_powerpc::Relocate::relocate): Edit TOC indirect code
+ to TOC relative. Don't emit "toc optimization is not supported"
+ error here.
+
+2017-01-10 Cary Coutant <ccoutant@gmail.com>
+
+ * aarch64.cc (AArch64_relobj::do_relocate_sections): Call
+ Sized_relobj_file::relocate_section_range().
+ * arm.cc (Arm_relobj::do_relocate_sections): Likewise.
+ * object.h (Sized_relobj_file::relocate_section_range): New method.
+ * reloc.cc (Sized_relobj_file::do_relocate_sections): Move
+ implementation...
+ (Sized_relobj_file::relocate_section_range): ...to new method.
+
+2017-01-10 Alan Modra <amodra@gmail.com>
+
+ * testsuite/ver_test_8.sh: Accept .TOC. in lieu of
+ _GLOBAL_OFFSET_TABLE_. Allow zero count.
+ * testsuite/copy_test_relro_1.cc (c, q): New vars.
+ * testsuite/copy_test_relro.cc: Rewrite to test read-only
+ status of variables directly. Reference new vars in
+ read-only data.
+
+2017-01-10 Alan Modra <amodra@gmail.com>
+
+ * options.h: Add --secure-plt option.
+ * powerpc.cc (Target_powerpc::Scan::local): Detect and error
+ on -fPIC -mbss-plt code.
+ (Target_powerpc::Scan::global): Likewise.
+
+2017-01-09 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (Target_powerpc::make_plt_section): Point sh_info of
+ ".rela.plt" at ".plt".
+
+2017-01-07 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc: Use shorter equivalent elfcpp typedef for
+ Reltype and reloc_size throughout.
+ (Target_powerpc::symval_for_branch): Exclude dynamic symbols.
+ (Target_powerpc::Scan::local): Use local var r_sym.
+ (Target_powerpc::Scan::global: Likewise.
+ (Target_powerpc::Relocate::relocate): Delete shadowing r_sym.
+
+2017-01-02 Alan Modra <amodra@gmail.com>
+
+ Update year range in copyright notice of all files.
+
+For older changes see ChangeLog-2016
+
+Copyright (C) 2017 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/gold/Makefile.am b/gold/Makefile.am
index 59c17ba..675deec 100644
--- a/gold/Makefile.am
+++ b/gold/Makefile.am
@@ -1,6 +1,6 @@
## Process this file with automake to generate Makefile.in
#
-# Copyright (C) 2006-2017 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gold/Makefile.in b/gold/Makefile.in
index 9a51247..1f4f7ea 100644
--- a/gold/Makefile.in
+++ b/gold/Makefile.in
@@ -16,7 +16,7 @@
@SET_MAKE@
#
-# Copyright (C) 2006-2017 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -87,8 +87,8 @@ subdir = .
DIST_COMMON = NEWS README ChangeLog $(srcdir)/Makefile.in \
$(srcdir)/Makefile.am $(top_srcdir)/configure \
$(am__configure_deps) $(srcdir)/config.in \
- $(srcdir)/../mkinstalldirs $(top_srcdir)/po/Make-in pread.c \
- ffsll.c mremap.c ftruncate.c yyscript.h yyscript.c \
+ $(srcdir)/../mkinstalldirs $(top_srcdir)/po/Make-in ffsll.c \
+ ftruncate.c mremap.c pread.c yyscript.h yyscript.c \
$(srcdir)/../depcomp $(srcdir)/../ylwrap
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
diff --git a/gold/NEWS b/gold/NEWS
index 4ef3f78..c1af2f8 100644
--- a/gold/NEWS
+++ b/gold/NEWS
@@ -63,7 +63,7 @@ Changes in 1.3:
* gold added to GNU binutils.
-Copyright (C) 2012-2017 Free Software Foundation, Inc.
+Copyright (C) 2012-2018 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/gold/README b/gold/README
index f7c275b..a127d38 100644
--- a/gold/README
+++ b/gold/README
@@ -62,7 +62,7 @@ to fail. If you are building gold from an official binutils release,
the bison output should already be included.
-Copyright (C) 2012-2017 Free Software Foundation, Inc.
+Copyright (C) 2012-2018 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/gold/aarch64-reloc-property.cc b/gold/aarch64-reloc-property.cc
index 9900c59..0bda832 100644
--- a/gold/aarch64-reloc-property.cc
+++ b/gold/aarch64-reloc-property.cc
@@ -1,6 +1,6 @@
// aarch64-reloc-property.cc -- AArch64 relocation properties -*- C++ -*-
-// Copyright (C) 2014-2017 Free Software Foundation, Inc.
+// Copyright (C) 2014-2018 Free Software Foundation, Inc.
// Written by Han Shen <shenhan@google.com> and Jing Yu <jingyu@google.com>.
// This file is part of gold.
diff --git a/gold/aarch64-reloc-property.h b/gold/aarch64-reloc-property.h
index 97b09d7..adb85ac 100644
--- a/gold/aarch64-reloc-property.h
+++ b/gold/aarch64-reloc-property.h
@@ -1,6 +1,6 @@
// aarch64-reloc-property.h -- AArch64 relocation properties -*- C++ -*-
-// Copyright (C) 2014-2017 Free Software Foundation, Inc.
+// Copyright (C) 2014-2018 Free Software Foundation, Inc.
// Written by Han Shen <shenhan@google.com> and Jing Yu <jingyu@google.com>.
// This file is part of gold.
diff --git a/gold/aarch64-reloc.def b/gold/aarch64-reloc.def
index 65d7a6d..2fc0059 100644
--- a/gold/aarch64-reloc.def
+++ b/gold/aarch64-reloc.def
@@ -1,6 +1,6 @@
// aarch64-reloc.def -- AArch64 relocation definitions.
-// Copyright (C) 2014-2017 Free Software Foundation, Inc.
+// Copyright (C) 2014-2018 Free Software Foundation, Inc.
// Written by Han Shen <shenhan@google.com> and Jing Yu <jingyu@google.com>.
// This file is part of gold.
diff --git a/gold/aarch64.cc b/gold/aarch64.cc
index 11bb48e..1abdb27 100644
--- a/gold/aarch64.cc
+++ b/gold/aarch64.cc
@@ -1,6 +1,6 @@
// aarch64.cc -- aarch64 target support for gold.
-// Copyright (C) 2014-2017 Free Software Foundation, Inc.
+// Copyright (C) 2014-2018 Free Software Foundation, Inc.
// Written by Jing Yu <jingyu@google.com> and Han Shen <shenhan@google.com>.
// This file is part of gold.
@@ -270,7 +270,7 @@ public:
uint32_t v = 0;
uint32_t opc_v = 0;
- /* Bail out quickly if INSN doesn't fall into the the load-store
+ /* Bail out quickly if INSN doesn't fall into the load-store
encoding space. */
if (!aarch64_ldst (insn))
return false;
@@ -1031,6 +1031,18 @@ public:
set_erratum_address(AArch64_address addr)
{ this->erratum_address_ = addr; }
+ // Later relaxation passes of may alter the recorded erratum and destination
+ // address. Given an up to date output section address of shidx_ in
+ // relobj_ we can derive the erratum_address and destination address.
+ void
+ update_erratum_address(AArch64_address output_section_addr)
+ {
+ const int BPI = AArch64_insn_utilities<big_endian>::BYTES_PER_INSN;
+ AArch64_address updated_addr = output_section_addr + this->sh_offset_;
+ this->set_erratum_address(updated_addr);
+ this->set_destination_address(updated_addr + BPI);
+ }
+
// Comparator used to group Erratum_stubs in a set by (obj, shndx,
// sh_offset). We do not include 'type' in the calculation, because there is
// at most one stub type at (obj, shndx, sh_offset).
@@ -1049,6 +1061,17 @@ public:
return this->sh_offset_ < k.sh_offset_;
}
+ void
+ invalidate_erratum_stub()
+ {
+ gold_assert(this->erratum_insn_ != invalid_insn);
+ this->erratum_insn_ = invalid_insn;
+ }
+
+ bool
+ is_invalidated_erratum_stub()
+ { return this->erratum_insn_ == invalid_insn; }
+
protected:
virtual void
do_write(unsigned char*, section_size_type);
@@ -1090,7 +1113,7 @@ public:
private:
// Section offset of "adrp". (We do not need a "adrp_shndx_" field, because we
- // can can obtain it from its parent.)
+ // can obtain it from its parent.)
const unsigned int adrp_sh_offset_;
};
@@ -1346,7 +1369,8 @@ Reloc_stub<size, big_endian>::stub_type_for_reloc(
return ST_LONG_BRANCH_ABS;
}
-// A class to hold stubs for the ARM target.
+// A class to hold stubs for the ARM target. This contains 2 different types of
+// stubs - reloc stubs and erratum stubs.
template<int size, bool big_endian>
class Stub_table : public Output_data
@@ -1438,14 +1462,18 @@ class Stub_table : public Output_data
return (p != this->reloc_stubs_.end()) ? p->second : NULL;
}
- // Relocate stubs in this stub table.
+ // Relocate reloc stubs in this stub table. This does not relocate erratum stubs.
void
- relocate_stubs(const The_relocate_info*,
- The_target_aarch64*,
- Output_section*,
- unsigned char*,
- AArch64_address,
- section_size_type);
+ relocate_reloc_stubs(const The_relocate_info*,
+ The_target_aarch64*,
+ Output_section*,
+ unsigned char*,
+ AArch64_address,
+ section_size_type);
+
+ // Relocate an erratum stub.
+ void
+ relocate_erratum_stub(The_erratum_stub*, unsigned char*);
// Update data size at the end of a relaxation pass. Return true if data size
// is different from that of the previous relaxation pass.
@@ -1485,15 +1513,15 @@ class Stub_table : public Output_data
{ this->set_data_size(this->current_data_size()); }
private:
- // Relocate one stub.
+ // Relocate one reloc stub.
void
- relocate_stub(The_reloc_stub*,
- const The_relocate_info*,
- The_target_aarch64*,
- Output_section*,
- unsigned char*,
- AArch64_address,
- section_size_type);
+ relocate_reloc_stub(The_reloc_stub*,
+ const The_relocate_info*,
+ The_target_aarch64*,
+ Output_section*,
+ unsigned char*,
+ AArch64_address,
+ section_size_type);
private:
// Owner of this stub table.
@@ -1593,76 +1621,85 @@ Stub_table<size, big_endian>::add_reloc_stub(
}
-// Relocate all stubs in this stub table.
+// Relocate an erratum stub.
template<int size, bool big_endian>
void
Stub_table<size, big_endian>::
-relocate_stubs(const The_relocate_info* relinfo,
- The_target_aarch64* target_aarch64,
- Output_section* output_section,
- unsigned char* view,
- AArch64_address address,
- section_size_type view_size)
+relocate_erratum_stub(The_erratum_stub* estub,
+ unsigned char* view)
{
- // "view_size" is the total size of the stub_table.
- gold_assert(address == this->address() &&
- view_size == static_cast<section_size_type>(this->data_size()));
- for(Reloc_stub_map_const_iter p = this->reloc_stubs_.begin();
- p != this->reloc_stubs_.end(); ++p)
- relocate_stub(p->second, relinfo, target_aarch64, output_section,
- view, address, view_size);
-
// Just for convenience.
const int BPI = AArch64_insn_utilities<big_endian>::BYTES_PER_INSN;
- // Now 'relocate' erratum stubs.
- for(Erratum_stub_set_iter i = this->erratum_stubs_.begin();
- i != this->erratum_stubs_.end(); ++i)
+ gold_assert(!estub->is_invalidated_erratum_stub());
+ AArch64_address stub_address = this->erratum_stub_address(estub);
+ // The address of "b" in the stub that is to be "relocated".
+ AArch64_address stub_b_insn_address;
+ // Branch offset that is to be filled in "b" insn.
+ int b_offset = 0;
+ switch (estub->type())
{
- AArch64_address stub_address = this->erratum_stub_address(*i);
- // The address of "b" in the stub that is to be "relocated".
- AArch64_address stub_b_insn_address;
- // Branch offset that is to be filled in "b" insn.
- int b_offset = 0;
- switch ((*i)->type())
- {
- case ST_E_843419:
- case ST_E_835769:
- // The 1st insn of the erratum could be a relocation spot,
- // in this case we need to fix it with
- // "(*i)->erratum_insn()".
- elfcpp::Swap<32, big_endian>::writeval(
- view + (stub_address - this->address()),
- (*i)->erratum_insn());
- // For the erratum, the 2nd insn is a b-insn to be patched
- // (relocated).
- stub_b_insn_address = stub_address + 1 * BPI;
- b_offset = (*i)->destination_address() - stub_b_insn_address;
- AArch64_relocate_functions<size, big_endian>::construct_b(
- view + (stub_b_insn_address - this->address()),
- ((unsigned int)(b_offset)) & 0xfffffff);
- break;
- default:
- gold_unreachable();
- break;
- }
+ case ST_E_843419:
+ case ST_E_835769:
+ // The 1st insn of the erratum could be a relocation spot,
+ // in this case we need to fix it with
+ // "(*i)->erratum_insn()".
+ elfcpp::Swap<32, big_endian>::writeval(
+ view + (stub_address - this->address()),
+ estub->erratum_insn());
+ // For the erratum, the 2nd insn is a b-insn to be patched
+ // (relocated).
+ stub_b_insn_address = stub_address + 1 * BPI;
+ b_offset = estub->destination_address() - stub_b_insn_address;
+ AArch64_relocate_functions<size, big_endian>::construct_b(
+ view + (stub_b_insn_address - this->address()),
+ ((unsigned int)(b_offset)) & 0xfffffff);
+ break;
+ default:
+ gold_unreachable();
+ break;
}
+ estub->invalidate_erratum_stub();
}
-// Relocate one stub. This is a helper for Stub_table::relocate_stubs().
+// Relocate only reloc stubs in this stub table. This does not relocate erratum
+// stubs.
template<int size, bool big_endian>
void
Stub_table<size, big_endian>::
-relocate_stub(The_reloc_stub* stub,
- const The_relocate_info* relinfo,
- The_target_aarch64* target_aarch64,
- Output_section* output_section,
- unsigned char* view,
- AArch64_address address,
- section_size_type view_size)
+relocate_reloc_stubs(const The_relocate_info* relinfo,
+ The_target_aarch64* target_aarch64,
+ Output_section* output_section,
+ unsigned char* view,
+ AArch64_address address,
+ section_size_type view_size)
+{
+ // "view_size" is the total size of the stub_table.
+ gold_assert(address == this->address() &&
+ view_size == static_cast<section_size_type>(this->data_size()));
+ for(Reloc_stub_map_const_iter p = this->reloc_stubs_.begin();
+ p != this->reloc_stubs_.end(); ++p)
+ relocate_reloc_stub(p->second, relinfo, target_aarch64, output_section,
+ view, address, view_size);
+}
+
+
+// Relocate one reloc stub. This is a helper for
+// Stub_table::relocate_reloc_stubs().
+
+template<int size, bool big_endian>
+void
+Stub_table<size, big_endian>::
+relocate_reloc_stub(The_reloc_stub* stub,
+ const The_relocate_info* relinfo,
+ The_target_aarch64* target_aarch64,
+ Output_section* output_section,
+ unsigned char* view,
+ AArch64_address address,
+ section_size_type view_size)
{
// "offset" is the offset from the beginning of the stub_table.
section_size_type offset = stub->offset();
@@ -1670,8 +1707,8 @@ relocate_stub(The_reloc_stub* stub,
// "view_size" is the total size of the stub_table.
gold_assert(offset + stub_size <= view_size);
- target_aarch64->relocate_stub(stub, relinfo, output_section,
- view + offset, address + offset, view_size);
+ target_aarch64->relocate_reloc_stub(stub, relinfo, output_section,
+ view + offset, address + offset, view_size);
}
@@ -1829,15 +1866,17 @@ class AArch64_relobj : public Sized_relobj_file<size, big_endian>
Stringpool_template<char>*);
private:
- // Fix all errata in the object.
+ // Fix all errata in the object, and for each erratum, relocate corresponding
+ // erratum stub.
void
- fix_errata(typename Sized_relobj_file<size, big_endian>::Views* pviews);
+ fix_errata_and_relocate_erratum_stubs(
+ typename Sized_relobj_file<size, big_endian>::Views* pviews);
// Try to fix erratum 843419 in an optimized way. Return true if patch is
// applied.
bool
try_fix_erratum_843419_optimized(
- The_erratum_stub*,
+ The_erratum_stub*, AArch64_address,
typename Sized_relobj_file<size, big_endian>::View_size&);
// Whether a section needs to be scanned for relocation stubs.
@@ -1943,15 +1982,17 @@ AArch64_relobj<size, big_endian>::do_count_local_symbols(
}
-// Fix all errata in the object.
+// Fix all errata in the object and for each erratum, we relocate the
+// corresponding erratum stub (by calling Stub_table::relocate_erratum_stub).
template<int size, bool big_endian>
void
-AArch64_relobj<size, big_endian>::fix_errata(
+AArch64_relobj<size, big_endian>::fix_errata_and_relocate_erratum_stubs(
typename Sized_relobj_file<size, big_endian>::Views* pviews)
{
typedef typename elfcpp::Swap<32,big_endian>::Valtype Insntype;
unsigned int shnum = this->shnum();
+ const Relobj::Output_sections& out_sections(this->output_sections());
for (unsigned int i = 1; i < shnum; ++i)
{
The_stub_table* stub_table = this->stub_table(i);
@@ -1960,34 +2001,61 @@ AArch64_relobj<size, big_endian>::fix_errata(
std::pair<Erratum_stub_set_iter, Erratum_stub_set_iter>
ipair(stub_table->find_erratum_stubs_for_input_section(this, i));
Erratum_stub_set_iter p = ipair.first, end = ipair.second;
+ typename Sized_relobj_file<size, big_endian>::View_size&
+ pview((*pviews)[i]);
+ AArch64_address view_offset = 0;
+ if (pview.is_input_output_view)
+ {
+ // In this case, write_sections has not added the output offset to
+ // the view's address, so we must do so. Currently this only happens
+ // for a relaxed section.
+ unsigned int index = this->adjust_shndx(i);
+ const Output_relaxed_input_section* poris =
+ out_sections[index]->find_relaxed_input_section(this, index);
+ gold_assert(poris != NULL);
+ view_offset = poris->address() - pview.address;
+ }
+
while (p != end)
{
The_erratum_stub* stub = *p;
- typename Sized_relobj_file<size, big_endian>::View_size&
- pview((*pviews)[i]);
// Double check data before fix.
- gold_assert(pview.address + stub->sh_offset()
+ gold_assert(pview.address + view_offset + stub->sh_offset()
== stub->erratum_address());
// Update previously recorded erratum insn with relocated
// version.
Insntype* ip =
- reinterpret_cast<Insntype*>(pview.view + stub->sh_offset());
+ reinterpret_cast<Insntype*>(
+ pview.view + view_offset + stub->sh_offset());
Insntype insn_to_fix = ip[0];
stub->update_erratum_insn(insn_to_fix);
// First try to see if erratum is 843419 and if it can be fixed
// without using branch-to-stub.
- if (!try_fix_erratum_843419_optimized(stub, pview))
+ if (!try_fix_erratum_843419_optimized(stub, view_offset, pview))
{
// Replace the erratum insn with a branch-to-stub.
AArch64_address stub_address =
stub_table->erratum_stub_address(stub);
unsigned int b_offset = stub_address - stub->erratum_address();
AArch64_relocate_functions<size, big_endian>::construct_b(
- pview.view + stub->sh_offset(), b_offset & 0xfffffff);
+ pview.view + view_offset + stub->sh_offset(),
+ b_offset & 0xfffffff);
}
+
+ // Erratum fix is done (or skipped), continue to relocate erratum
+ // stub. Note, when erratum fix is skipped (either because we
+ // proactively change the code sequence or the code sequence is
+ // changed by relaxation, etc), we can still safely relocate the
+ // erratum stub, ignoring the fact the erratum could never be
+ // executed.
+ stub_table->relocate_erratum_stub(
+ stub,
+ pview.view + (stub_table->address() - pview.address));
+
+ // Next erratum stub.
++p;
}
}
@@ -2003,7 +2071,7 @@ AArch64_relobj<size, big_endian>::fix_errata(
template<int size, bool big_endian>
bool
AArch64_relobj<size, big_endian>::try_fix_erratum_843419_optimized(
- The_erratum_stub* stub,
+ The_erratum_stub* stub, AArch64_address view_offset,
typename Sized_relobj_file<size, big_endian>::View_size& pview)
{
if (stub->type() != ST_E_843419)
@@ -2013,9 +2081,11 @@ AArch64_relobj<size, big_endian>::try_fix_erratum_843419_optimized(
typedef typename elfcpp::Swap<32,big_endian>::Valtype Insntype;
E843419_stub<size, big_endian>* e843419_stub =
reinterpret_cast<E843419_stub<size, big_endian>*>(stub);
- AArch64_address pc = pview.address + e843419_stub->adrp_sh_offset();
+ AArch64_address pc =
+ pview.address + view_offset + e843419_stub->adrp_sh_offset();
unsigned int adrp_offset = e843419_stub->adrp_sh_offset ();
- Insntype* adrp_view = reinterpret_cast<Insntype*>(pview.view + adrp_offset);
+ Insntype* adrp_view =
+ reinterpret_cast<Insntype*>(pview.view + view_offset + adrp_offset);
Insntype adrp_insn = adrp_view[0];
// If the instruction at adrp_sh_offset is "mrs R, tpidr_el0", it may come
@@ -2031,8 +2101,9 @@ AArch64_relobj<size, big_endian>::try_fix_erratum_843419_optimized(
// return true.
if (!Insn_utilities::is_adrp(adrp_insn) && adrp_offset)
{
- Insntype* prev_view
- = reinterpret_cast<Insntype*>(pview.view + adrp_offset - 4);
+ Insntype* prev_view =
+ reinterpret_cast<Insntype*>(
+ pview.view + view_offset + adrp_offset - 4);
Insntype prev_insn = prev_view[0];
if (Insn_utilities::is_mrs_tpidr_el0(prev_insn))
@@ -2086,16 +2157,19 @@ AArch64_relobj<size, big_endian>::do_relocate_sections(
if (parameters->options().relocatable())
return;
+ // This part only relocates erratum stubs that belong to input sections of this
+ // object file.
if (parameters->options().fix_cortex_a53_843419()
|| parameters->options().fix_cortex_a53_835769())
- this->fix_errata(pviews);
+ this->fix_errata_and_relocate_erratum_stubs(pviews);
Relocate_info<size, big_endian> relinfo;
relinfo.symtab = symtab;
relinfo.layout = layout;
relinfo.object = this;
- // Relocate stub tables.
+ // This part relocates all reloc stubs that are contained in stub_tables of
+ // this object file.
unsigned int shnum = this->shnum();
The_target_aarch64* target = The_target_aarch64::current_target();
@@ -2124,8 +2198,8 @@ AArch64_relobj<size, big_endian>::do_relocate_sections(
unsigned char* view = view_struct.view + offset;
AArch64_address address = stub_table->address();
section_size_type view_size = stub_table->data_size();
- stub_table->relocate_stubs(&relinfo, target, os, view, address,
- view_size);
+ stub_table->relocate_reloc_stubs(&relinfo, target, os, view, address,
+ view_size);
}
}
}
@@ -2242,6 +2316,19 @@ AArch64_relobj<size, big_endian>::scan_errata(
output_address = poris->address();
}
+ // Update the addresses in previously generated erratum stubs. Unlike when
+ // we scan relocations for stubs, if section addresses have changed due to
+ // other relaxations we are unlikely to scan the same erratum instances
+ // again.
+ The_stub_table* stub_table = this->stub_table(shndx);
+ if (stub_table)
+ {
+ std::pair<Erratum_stub_set_iter, Erratum_stub_set_iter>
+ ipair(stub_table->find_erratum_stubs_for_input_section(this, shndx));
+ for (Erratum_stub_set_iter p = ipair.first; p != ipair.second; ++p)
+ (*p)->update_erratum_address(output_address);
+ }
+
section_size_type input_view_size = 0;
const unsigned char* input_view =
this->section_contents(shndx, &input_view_size, false);
@@ -3016,11 +3103,11 @@ class Target_aarch64 : public Sized_target<size, big_endian>
Address view_address,
section_size_type);
- // Relocate a single stub.
+ // Relocate a single reloc stub.
void
- relocate_stub(The_reloc_stub*, const Relocate_info<size, big_endian>*,
- Output_section*, unsigned char*, Address,
- section_size_type);
+ relocate_reloc_stub(The_reloc_stub*, const Relocate_info<size, big_endian>*,
+ Output_section*, unsigned char*, Address,
+ section_size_type);
// Get the default AArch64 target.
static This*
@@ -3461,7 +3548,7 @@ const Target::Target_info Target_aarch64<64, false>::aarch64_info =
false, // has_make_symbol
false, // has_resolve
false, // has_code_fill
- true, // is_default_stack_executable
+ false, // is_default_stack_executable
true, // can_icf_inline_merge_sections
'\0', // wrap_char
"/lib/ld.so.1", // program interpreter
@@ -3489,7 +3576,7 @@ const Target::Target_info Target_aarch64<32, false>::aarch64_info =
false, // has_make_symbol
false, // has_resolve
false, // has_code_fill
- true, // is_default_stack_executable
+ false, // is_default_stack_executable
false, // can_icf_inline_merge_sections
'\0', // wrap_char
"/lib/ld.so.1", // program interpreter
@@ -3517,7 +3604,7 @@ const Target::Target_info Target_aarch64<64, true>::aarch64_info =
false, // has_make_symbol
false, // has_resolve
false, // has_code_fill
- true, // is_default_stack_executable
+ false, // is_default_stack_executable
true, // can_icf_inline_merge_sections
'\0', // wrap_char
"/lib/ld.so.1", // program interpreter
@@ -3545,7 +3632,7 @@ const Target::Target_info Target_aarch64<32, true>::aarch64_info =
false, // has_make_symbol
false, // has_resolve
false, // has_code_fill
- true, // is_default_stack_executable
+ false, // is_default_stack_executable
false, // can_icf_inline_merge_sections
'\0', // wrap_char
"/lib/ld.so.1", // program interpreter
@@ -4035,16 +4122,16 @@ Target_aarch64<size, big_endian>::scan_section_for_stubs(
}
-// Relocate a single stub.
+// Relocate a single reloc stub.
template<int size, bool big_endian>
void Target_aarch64<size, big_endian>::
-relocate_stub(The_reloc_stub* stub,
- const The_relocate_info*,
- Output_section*,
- unsigned char* view,
- Address address,
- section_size_type)
+relocate_reloc_stub(The_reloc_stub* stub,
+ const The_relocate_info*,
+ Output_section*,
+ unsigned char* view,
+ Address address,
+ section_size_type)
{
typedef AArch64_relocate_functions<size, big_endian> The_reloc_functions;
typedef typename The_reloc_functions::Status The_reloc_functions_status;
@@ -7521,15 +7608,15 @@ Target_aarch64<size, big_endian>::Relocate::relocate_tls(
tls_got_offset_type = (tlsopt == tls::TLSOPT_TO_IE
? GOT_TYPE_TLS_OFFSET
: GOT_TYPE_TLS_DESC);
- unsigned int got_tlsdesc_offset = 0;
+ int got_tlsdesc_offset = 0;
if (r_type != elfcpp::R_AARCH64_TLSDESC_CALL
&& tlsopt == tls::TLSOPT_NONE)
{
// We created GOT entries in the .got.tlsdesc portion of the
// .got.plt section, but the offset stored in the symbol is the
// offset within .got.tlsdesc.
- got_tlsdesc_offset = (target->got_->data_size()
- + target->got_plt_section()->data_size());
+ got_tlsdesc_offset = (target->got_tlsdesc_->address()
+ - target->got_->address());
}
typename elfcpp::Elf_types<size>::Elf_Addr got_entry_address;
if (gsym != NULL)
diff --git a/gold/archive.cc b/gold/archive.cc
index b4a74ee..4df9e74 100644
--- a/gold/archive.cc
+++ b/gold/archive.cc
@@ -1,6 +1,6 @@
// archive.cc -- archive support for gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/archive.h b/gold/archive.h
index 2943c4e..299f603 100644
--- a/gold/archive.h
+++ b/gold/archive.h
@@ -1,6 +1,6 @@
// archive.h -- archive support for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/arm-reloc-property.cc b/gold/arm-reloc-property.cc
index 7b17b57..fe40791 100644
--- a/gold/arm-reloc-property.cc
+++ b/gold/arm-reloc-property.cc
@@ -1,6 +1,6 @@
// arm-reloc-property.cc -- ARM relocation property.
-// Copyright (C) 2010-2017 Free Software Foundation, Inc.
+// Copyright (C) 2010-2018 Free Software Foundation, Inc.
// Written by Doug Kwan <dougkwan@google.com>.
// This file is part of gold.
diff --git a/gold/arm-reloc-property.h b/gold/arm-reloc-property.h
index ddec32a..e7d625c 100644
--- a/gold/arm-reloc-property.h
+++ b/gold/arm-reloc-property.h
@@ -1,6 +1,6 @@
// arm-reloc-property.h -- ARM relocation properties -*- C++ -*-
-// Copyright (C) 2010-2017 Free Software Foundation, Inc.
+// Copyright (C) 2010-2018 Free Software Foundation, Inc.
// Written by Doug Kwan <dougkwan@google.com>.
// This file is part of gold.
diff --git a/gold/arm-reloc.def b/gold/arm-reloc.def
index d0e861c..1b5dc9b 100644
--- a/gold/arm-reloc.def
+++ b/gold/arm-reloc.def
@@ -1,6 +1,6 @@
// arm-reloc.def -- ARM relocation definitions.
-// Copyright (C) 2010-2017 Free Software Foundation, Inc.
+// Copyright (C) 2010-2018 Free Software Foundation, Inc.
// Written by Doug Kwan <dougkwan@google.com>.
// This file is part of gold.
diff --git a/gold/arm.cc b/gold/arm.cc
index ff472ea..6c57af5 100644
--- a/gold/arm.cc
+++ b/gold/arm.cc
@@ -1,6 +1,6 @@
// arm.cc -- arm target support for gold.
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Doug Kwan <dougkwan@google.com> based on the i386 code
// by Ian Lance Taylor <iant@google.com>.
// This file also contains borrowed and adapted code from
@@ -129,7 +129,7 @@ const size_t ARM_TCB_SIZE = 8;
// Target::do_select_as_default_target() hook so that we do not spend time
// building the table if we are not linking ARM objects.
//
-// An alternative is to to process the information in arm-reloc.def in
+// An alternative is to process the information in arm-reloc.def in
// compilation time and generate a representation of it in PODs only. That
// way we can avoid initialization when the linker starts.
@@ -4516,30 +4516,49 @@ Stub::do_fixed_endian_write(unsigned char* view, section_size_type view_size)
{
const Stub_template* stub_template = this->stub_template();
const Insn_template* insns = stub_template->insns();
+ const bool enable_be8 = parameters->options().be8();
- // FIXME: We do not handle BE8 encoding yet.
unsigned char* pov = view;
for (size_t i = 0; i < stub_template->insn_count(); i++)
{
switch (insns[i].type())
{
case Insn_template::THUMB16_TYPE:
- elfcpp::Swap<16, big_endian>::writeval(pov, insns[i].data() & 0xffff);
+ if (enable_be8)
+ elfcpp::Swap<16, false>::writeval(pov, insns[i].data() & 0xffff);
+ else
+ elfcpp::Swap<16, big_endian>::writeval(pov,
+ insns[i].data() & 0xffff);
break;
case Insn_template::THUMB16_SPECIAL_TYPE:
- elfcpp::Swap<16, big_endian>::writeval(
- pov,
- this->thumb16_special(i));
+ if (enable_be8)
+ elfcpp::Swap<16, false>::writeval(pov, this->thumb16_special(i));
+ else
+ elfcpp::Swap<16, big_endian>::writeval(pov,
+ this->thumb16_special(i));
break;
case Insn_template::THUMB32_TYPE:
{
uint32_t hi = (insns[i].data() >> 16) & 0xffff;
uint32_t lo = insns[i].data() & 0xffff;
- elfcpp::Swap<16, big_endian>::writeval(pov, hi);
- elfcpp::Swap<16, big_endian>::writeval(pov + 2, lo);
+ if (enable_be8)
+ {
+ elfcpp::Swap<16, false>::writeval(pov, hi);
+ elfcpp::Swap<16, false>::writeval(pov + 2, lo);
+ }
+ else
+ {
+ elfcpp::Swap<16, big_endian>::writeval(pov, hi);
+ elfcpp::Swap<16, big_endian>::writeval(pov + 2, lo);
+ }
}
break;
case Insn_template::ARM_TYPE:
+ if (enable_be8)
+ elfcpp::Swap<32, false>::writeval(pov, insns[i].data());
+ else
+ elfcpp::Swap<32, big_endian>::writeval(pov, insns[i].data());
+ break;
case Insn_template::DATA_TYPE:
elfcpp::Swap<32, big_endian>::writeval(pov, insns[i].data());
break;
@@ -11660,7 +11679,7 @@ Target_arm<big_endian>::merge_object_attributes(
if (in_attr[elfcpp::Tag_MPextension_use].int_value()
!= in_attr[i].int_value())
{
- gold_error(_("%s has has both the current and legacy "
+ gold_error(_("%s has both the current and legacy "
"Tag_MPextension_use attributes"),
name);
}
@@ -12775,7 +12794,7 @@ Target_arm<big_endian>::scan_span_for_cortex_a8_erratum(
Arm_address target = (pc_for_insn + offset) | (is_blx ? 0 : 1);
- // Add a new stub if destination address in in the same page.
+ // Add a new stub if destination address is in the same page.
if (((address + i) & ~0xfffU) == (target & ~0xfffU))
{
Cortex_a8_stub* stub =
@@ -12877,7 +12896,7 @@ Target_arm<big_endian>::fix_exidx_coverage(
const Task* task)
{
// We need to look at all the input sections in output in ascending
- // order of of output address. We do that by building a sorted list
+ // order of output address. We do that by building a sorted list
// of output sections by addresses. Then we looks at the output sections
// in order. The input sections in an output section are already sorted
// by addresses within the output section.
diff --git a/gold/attributes.cc b/gold/attributes.cc
index ee498a5..fb96100 100644
--- a/gold/attributes.cc
+++ b/gold/attributes.cc
@@ -1,6 +1,6 @@
// attributes.cc -- object attributes for gold
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Doug Kwan <dougkwan@google.com>.
// This file contains code adapted from BFD.
diff --git a/gold/attributes.h b/gold/attributes.h
index 20f6b38..396e98e 100644
--- a/gold/attributes.h
+++ b/gold/attributes.h
@@ -1,6 +1,6 @@
// attributes.h -- object attributes for gold -*- C++ -*-
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Doug Kwan <dougkwan@google.com>.
// This file contains code adapted from BFD.
diff --git a/gold/binary.cc b/gold/binary.cc
index 54c4939..d56d94c 100644
--- a/gold/binary.cc
+++ b/gold/binary.cc
@@ -1,6 +1,6 @@
// binary.cc -- binary input files for gold
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/binary.h b/gold/binary.h
index ee6003d..52db857 100644
--- a/gold/binary.h
+++ b/gold/binary.h
@@ -1,6 +1,6 @@
// binary.h -- binary input files for gold -*- C++ -*-
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/common.cc b/gold/common.cc
index 25b93b5..cd2020d 100644
--- a/gold/common.cc
+++ b/gold/common.cc
@@ -1,6 +1,6 @@
// common.cc -- handle common symbols for gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/common.h b/gold/common.h
index f02e172..2cdcee7 100644
--- a/gold/common.h
+++ b/gold/common.h
@@ -1,6 +1,6 @@
// common.h -- handle common symbols for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/compressed_output.cc b/gold/compressed_output.cc
index 4374ba1..4b3e095 100644
--- a/gold/compressed_output.cc
+++ b/gold/compressed_output.cc
@@ -1,6 +1,6 @@
// compressed_output.cc -- manage compressed debug sections for gold
-// Copyright (C) 2007-2017 Free Software Foundation, Inc.
+// Copyright (C) 2007-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -286,6 +286,8 @@ Output_compressed_section::set_final_data_size()
chdr.put_ch_type(elfcpp::ELFCOMPRESS_ZLIB);
chdr.put_ch_size(uncompressed_size);
chdr.put_ch_addralign(addralign);
+ // Clear the reserved field.
+ chdr.put_ch_reserved(0);
}
else
{
@@ -293,6 +295,8 @@ Output_compressed_section::set_final_data_size()
chdr.put_ch_type(elfcpp::ELFCOMPRESS_ZLIB);
chdr.put_ch_size(uncompressed_size);
chdr.put_ch_addralign(addralign);
+ // Clear the reserved field.
+ chdr.put_ch_reserved(0);
}
}
else
diff --git a/gold/compressed_output.h b/gold/compressed_output.h
index b2566db..cdec1b4 100644
--- a/gold/compressed_output.h
+++ b/gold/compressed_output.h
@@ -1,6 +1,6 @@
// compressed_output.h -- compressed output sections for gold -*- C++ -*-
-// Copyright (C) 2007-2017 Free Software Foundation, Inc.
+// Copyright (C) 2007-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/config.in b/gold/config.in
index d9f7b76..5855fca 100644
--- a/gold/config.in
+++ b/gold/config.in
@@ -10,6 +10,9 @@
/* Define if building universal (internal helper macro) */
#undef AC_APPLE_UNIVERSAL_BUILD
+/* Set the default --hash-style value */
+#undef DEFAULT_HASH_STYLE
+
/* Define to 1 if you want to enable -z relro in ELF linker by default. */
#undef DEFAULT_LD_Z_RELRO
diff --git a/gold/configure b/gold/configure
index cb020be..90a706d 100755
--- a/gold/configure
+++ b/gold/configure
@@ -797,6 +797,7 @@ enable_threads
enable_plugins
enable_relro
enable_targets
+enable_default_hash_style
with_lib_path
enable_dependency_tracking
enable_nls
@@ -1447,6 +1448,8 @@ Optional Features:
--enable-plugins linker plugins
--enable-relro enable -z relro in ELF linker by default
--enable-targets alternative target configurations
+ --enable-default-hash-style={sysv,gnu,both}
+ use this default hash style
--disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors
--disable-nls do not use Native Language Support
@@ -3410,6 +3413,30 @@ if test -n "$enable_targets"; then
done
fi
+# Decide which "--hash-style" to use by default
+# Provide a configure time option to override our default.
+# Check whether --enable-default-hash-style was given.
+if test "${enable_default_hash_style+set}" = set; then :
+ enableval=$enable_default_hash_style; case "${enable_default_hash_style}" in
+ sysv | gnu | both) ;;
+ *) as_fn_error "bad value ${enable_default_hash_style} for enable-default-hash-style option" "$LINENO" 5 ;;
+esac
+else
+ case "${target}" in
+ # Enable gnu hash only on GNU targets, but not mips
+ mips*-*-*) enable_default_hash_style=sysv ;;
+ *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;;
+ *) enable_default_hash_style=sysv ;;
+esac
+fi
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_HASH_STYLE "${enable_default_hash_style}"
+_ACEOF
+
+
# See which specific instantiations we need.
targetobjs=
all_targets=
diff --git a/gold/configure.ac b/gold/configure.ac
index cbe3380..5ba43f2 100644
--- a/gold/configure.ac
+++ b/gold/configure.ac
@@ -1,6 +1,6 @@
dnl Process this file with autoconf to produce a configure script.
dnl
-dnl Copyright (C) 2006-2017 Free Software Foundation, Inc.
+dnl Copyright (C) 2006-2018 Free Software Foundation, Inc.
dnl
dnl This file is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
@@ -161,6 +161,26 @@ if test -n "$enable_targets"; then
done
fi
+# Decide which "--hash-style" to use by default
+# Provide a configure time option to override our default.
+AC_ARG_ENABLE([default-hash-style],
+AS_HELP_STRING([--enable-default-hash-style={sysv,gnu,both}],
+ [use this default hash style]),
+[case "${enable_default_hash_style}" in
+ sysv | gnu | both) ;;
+ *) AC_MSG_ERROR([bad value ${enable_default_hash_style} for enable-default-hash-style option]) ;;
+esac],
+[case "${target}" in
+ # Enable gnu hash only on GNU targets, but not mips
+ mips*-*-*) enable_default_hash_style=sysv ;;
+ *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;;
+ *) enable_default_hash_style=sysv ;;
+esac])
+
+AC_DEFINE_UNQUOTED([DEFAULT_HASH_STYLE],
+ ["${enable_default_hash_style}"],
+ [Set the default --hash-style value])
+
# See which specific instantiations we need.
targetobjs=
all_targets=
diff --git a/gold/configure.tgt b/gold/configure.tgt
index 3d63027..8aef22a 100644
--- a/gold/configure.tgt
+++ b/gold/configure.tgt
@@ -1,6 +1,6 @@
# configure.tgt -- target configuration for gold -*- sh -*-
-# Copyright (C) 2006-2017 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
# Written by Ian Lance Taylor <iant@google.com>.
# This file is part of gold.
diff --git a/gold/copy-relocs.cc b/gold/copy-relocs.cc
index eae4467..91762d1 100644
--- a/gold/copy-relocs.cc
+++ b/gold/copy-relocs.cc
@@ -1,6 +1,6 @@
// copy-relocs.cc -- handle COPY relocations for gold.
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/copy-relocs.h b/gold/copy-relocs.h
index 60f1d43..f596d63 100644
--- a/gold/copy-relocs.h
+++ b/gold/copy-relocs.h
@@ -1,6 +1,6 @@
// copy-relocs.h -- handle COPY relocations for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/cref.cc b/gold/cref.cc
index d3337b9..84a9e46 100644
--- a/gold/cref.cc
+++ b/gold/cref.cc
@@ -1,6 +1,6 @@
// cref.cc -- cross reference for gold
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/cref.h b/gold/cref.h
index 086c6c6..3ab8b93 100644
--- a/gold/cref.h
+++ b/gold/cref.h
@@ -1,6 +1,6 @@
// cref.h -- cross reference reports for gold -*- C++ -*-
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/debug.h b/gold/debug.h
index 756d1a6..0da1f9c 100644
--- a/gold/debug.h
+++ b/gold/debug.h
@@ -1,6 +1,6 @@
// debug.h -- gold internal debugging support -*- C++ -*-
-// Copyright (C) 2007-2017 Free Software Foundation, Inc.
+// Copyright (C) 2007-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/defstd.cc b/gold/defstd.cc
index a7fdd93..c201ecb 100644
--- a/gold/defstd.cc
+++ b/gold/defstd.cc
@@ -1,6 +1,6 @@
// defstd.cc -- define standard symbols for gold.
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/defstd.h b/gold/defstd.h
index 20e5056..f8041d7 100644
--- a/gold/defstd.h
+++ b/gold/defstd.h
@@ -1,6 +1,6 @@
// defstd.h -- define standard symbols for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/descriptors.cc b/gold/descriptors.cc
index c71103d2..b00087d 100644
--- a/gold/descriptors.cc
+++ b/gold/descriptors.cc
@@ -1,6 +1,6 @@
// descriptors.cc -- manage file descriptors for gold
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/descriptors.h b/gold/descriptors.h
index bf878b2..5ddb0c2 100644
--- a/gold/descriptors.h
+++ b/gold/descriptors.h
@@ -1,6 +1,6 @@
// descriptors.h -- manage file descriptors for gold -*- C++ -*-
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/dirsearch.cc b/gold/dirsearch.cc
index f1dae70..a465594 100644
--- a/gold/dirsearch.cc
+++ b/gold/dirsearch.cc
@@ -1,6 +1,6 @@
// dirsearch.cc -- directory searching for gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/dirsearch.h b/gold/dirsearch.h
index 701a516..7230c92 100644
--- a/gold/dirsearch.h
+++ b/gold/dirsearch.h
@@ -1,6 +1,6 @@
// dirsearch.h -- directory searching for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/dwarf_reader.cc b/gold/dwarf_reader.cc
index 8c0d593..6350247 100644
--- a/gold/dwarf_reader.cc
+++ b/gold/dwarf_reader.cc
@@ -1,6 +1,6 @@
// dwarf_reader.cc -- parse dwarf2/3 debug information
-// Copyright (C) 2007-2017 Free Software Foundation, Inc.
+// Copyright (C) 2007-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -737,7 +737,6 @@ Dwarf_die::read_attributes()
break;
}
case elfcpp::DW_FORM_addr:
- case elfcpp::DW_FORM_ref_addr:
{
off_t sec_off;
if (this->dwinfo_->address_size() == 4)
@@ -751,6 +750,20 @@ Dwarf_die::read_attributes()
ref_form = true;
break;
}
+ case elfcpp::DW_FORM_ref_addr:
+ {
+ off_t sec_off;
+ if (this->dwinfo_->ref_addr_size() == 4)
+ sec_off = this->dwinfo_->read_from_pointer<32>(&pattr);
+ else
+ sec_off = this->dwinfo_->read_from_pointer<64>(&pattr);
+ unsigned int shndx =
+ this->dwinfo_->lookup_reloc(attr_off, &sec_off);
+ attr_value.aux.shndx = shndx;
+ attr_value.val.refval = sec_off;
+ ref_form = true;
+ break;
+ }
case elfcpp::DW_FORM_block1:
attr_value.aux.blocklen = *pattr++;
attr_value.val.blockval = pattr;
@@ -947,9 +960,11 @@ Dwarf_die::skip_attributes()
pattr += this->dwinfo_->offset_size();
break;
case elfcpp::DW_FORM_addr:
- case elfcpp::DW_FORM_ref_addr:
pattr += this->dwinfo_->address_size();
break;
+ case elfcpp::DW_FORM_ref_addr:
+ pattr += this->dwinfo_->ref_addr_size();
+ break;
case elfcpp::DW_FORM_block1:
pattr += 1 + *pattr;
break;
diff --git a/gold/dwarf_reader.h b/gold/dwarf_reader.h
index b41e057..f994bf2 100644
--- a/gold/dwarf_reader.h
+++ b/gold/dwarf_reader.h
@@ -1,6 +1,6 @@
// dwarf_reader.h -- parse dwarf2/3 debug information for gold -*- C++ -*-
-// Copyright (C) 2007-2017 Free Software Foundation, Inc.
+// Copyright (C) 2007-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -764,6 +764,13 @@ class Dwarf_info_reader
address_size() const
{ return this->address_size_; }
+ // Return the size of a DW_FORM_ref_addr.
+ // In DWARF v2, this was the size of an address; in DWARF v3 and later,
+ // it is the size of an DWARF offset.
+ unsigned int
+ ref_addr_size() const
+ { return this->cu_version_ > 2 ? this->offset_size_ : this->address_size_; }
+
// Set the section index of the .debug_abbrev section.
// We use this if there are no relocations for the .debug_info section.
// If not set, the code parse() routine will search for the section by name.
diff --git a/gold/dwp.cc b/gold/dwp.cc
index 3b10a04..8fdebfa 100644
--- a/gold/dwp.cc
+++ b/gold/dwp.cc
@@ -1,6 +1,6 @@
// dwp.cc -- DWARF packaging utility
-// Copyright (C) 2012-2017 Free Software Foundation, Inc.
+// Copyright (C) 2012-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of dwp, the DWARF packaging utility.
@@ -2334,7 +2334,7 @@ print_version()
{
// This output is intended to follow the GNU standards.
printf("GNU dwp %s\n", BFD_VERSION_STRING);
- printf(_("Copyright (C) 2017 Free Software Foundation, Inc.\n"));
+ printf(_("Copyright (C) 2018 Free Software Foundation, Inc.\n"));
printf(_("\
This program is free software; you may redistribute it under the terms of\n\
the GNU General Public License version 3 or (at your option) any later version.\n\
diff --git a/gold/dwp.h b/gold/dwp.h
index 9b2299e..9b83659 100644
--- a/gold/dwp.h
+++ b/gold/dwp.h
@@ -1,6 +1,6 @@
// dwp.h -- general definitions for dwp.
-// Copyright (C) 2012-2017 Free Software Foundation, Inc.
+// Copyright (C) 2012-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of dwp, the DWARF packaging utility.
diff --git a/gold/dynobj.cc b/gold/dynobj.cc
index 0d38418..d85adbc 100644
--- a/gold/dynobj.cc
+++ b/gold/dynobj.cc
@@ -1,6 +1,6 @@
// dynobj.cc -- dynamic object support for gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/dynobj.h b/gold/dynobj.h
index 8636d18..0c8a9f4 100644
--- a/gold/dynobj.h
+++ b/gold/dynobj.h
@@ -1,6 +1,6 @@
// dynobj.h -- dynamic object support for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/ehframe.cc b/gold/ehframe.cc
index fd72a4f..3898e1a 100644
--- a/gold/ehframe.cc
+++ b/gold/ehframe.cc
@@ -1,6 +1,6 @@
// ehframe.cc -- handle exception frame sections for gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -325,6 +325,21 @@ Eh_frame_hdr::get_fde_addresses(Output_file* of,
// Class Fde.
+bool
+Fde::operator==(const Fde& that) const
+{
+ if (this->object_ != that.object_
+ || this->contents_ != that.contents_)
+ return false;
+ if (this->object_ == NULL)
+ return (this->u_.from_linker.plt == that.u_.from_linker.plt
+ && this->u_.from_linker.post_map == that.u_.from_linker.post_map);
+ else
+ return (this->u_.from_object.shndx == that.u_.from_object.shndx
+ && (this->u_.from_object.input_offset
+ == that.u_.from_object.input_offset));
+}
+
// Write the FDE to OVIEW starting at OFFSET. CIE_OFFSET is the
// offset of the CIE in OVIEW. OUTPUT_OFFSET is the offset of the
// Eh_frame section within the output section. FDE_ENCODING is the
@@ -443,6 +458,15 @@ Cie::set_output_offset(section_offset_type output_offset,
return output_offset + length;
}
+// Remove FDE. Only the last FDE using this CIE may be removed.
+
+void
+Cie::remove_fde(const Fde* fde)
+{
+ gold_assert(*fde == *this->fdes_.back());
+ this->fdes_.pop_back();
+}
+
// Write the CIE to OVIEW starting at OFFSET. OUTPUT_OFFSET is the
// offset of the Eh_frame section within the output section. Round up
// the bytes to ADDRALIGN. ADDRESS is the virtual address of OVIEW.
@@ -1143,6 +1167,28 @@ Eh_frame::add_ehframe_for_plt(Output_data* plt, const unsigned char* cie_data,
this->final_data_size_ += align_address(fde_length + 8, this->addralign());
}
+// Remove unwind information for a PLT. Only the last FDE added may be removed.
+
+void
+Eh_frame::remove_ehframe_for_plt(Output_data* plt,
+ const unsigned char* cie_data,
+ size_t cie_length,
+ const unsigned char* fde_data,
+ size_t fde_length)
+{
+ Cie cie(NULL, 0, 0, elfcpp::DW_EH_PE_pcrel | elfcpp::DW_EH_PE_sdata4, "",
+ cie_data, cie_length);
+ Cie_offsets::iterator find_cie = this->cie_offsets_.find(&cie);
+ gold_assert (find_cie != this->cie_offsets_.end());
+ Cie* pcie = *find_cie;
+
+ Fde* fde = new Fde(plt, fde_data, fde_length, this->mappings_are_done_);
+ pcie->remove_fde(fde);
+
+ if (this->mappings_are_done_)
+ this->final_data_size_ -= align_address(fde_length + 8, this->addralign());
+}
+
// Return the number of FDEs.
unsigned int
diff --git a/gold/ehframe.h b/gold/ehframe.h
index 347ce46..4e18da9 100644
--- a/gold/ehframe.h
+++ b/gold/ehframe.h
@@ -1,6 +1,6 @@
// ehframe.h -- handle exception frame sections for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -217,6 +217,8 @@ class Fde
section_offset_type cie_offset, unsigned char fde_encoding,
Eh_frame_hdr* eh_frame_hdr);
+ bool operator==(const Fde&) const;
+
private:
// The object in which this FDE was seen. This will be NULL for a
// linker generated FDE.
@@ -298,6 +300,10 @@ class Cie
add_fde(Fde* fde)
{ this->fdes_.push_back(fde); }
+ // Remove an FDE associated with this CIE. Only the last FDE may be removed.
+ void
+ remove_fde(const Fde*);
+
// Return the number of FDEs.
unsigned int
fde_count() const
@@ -405,6 +411,13 @@ class Eh_frame : public Output_section_data
size_t cie_length, const unsigned char* fde_data,
size_t fde_length);
+ // Remove unwind information for a PLT. Only the last FDE added may
+ // be removed.
+ void
+ remove_ehframe_for_plt(Output_data* plt, const unsigned char* cie_data,
+ size_t cie_length, const unsigned char* fde_data,
+ size_t fde_length);
+
// Return the number of FDEs.
unsigned int
fde_count() const;
diff --git a/gold/errors.cc b/gold/errors.cc
index f464cee..ac3ce20 100644
--- a/gold/errors.cc
+++ b/gold/errors.cc
@@ -1,6 +1,6 @@
// errors.cc -- handle errors for gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/errors.h b/gold/errors.h
index f0a50b6..ebb7e5f 100644
--- a/gold/errors.h
+++ b/gold/errors.h
@@ -1,6 +1,6 @@
// errors.h -- handle errors for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/expression.cc b/gold/expression.cc
index 2b598cd..d764cc2 100644
--- a/gold/expression.cc
+++ b/gold/expression.cc
@@ -1,6 +1,6 @@
// expression.cc -- expressions in linker scripts for gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/ffsll.c b/gold/ffsll.c
index 6c0719c..50b6965 100644
--- a/gold/ffsll.c
+++ b/gold/ffsll.c
@@ -1,6 +1,6 @@
/* ffsll.c -- version of ffsll for gold. */
-/* Copyright (C) 2009-2017 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2018 Free Software Foundation, Inc.
Written by Ian Lance Taylor <iant@google.com>.
This file is part of gold.
diff --git a/gold/fileread.cc b/gold/fileread.cc
index da96895..5202192 100644
--- a/gold/fileread.cc
+++ b/gold/fileread.cc
@@ -1,6 +1,6 @@
// fileread.cc -- read files for gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/fileread.h b/gold/fileread.h
index ce05747..e54722b 100644
--- a/gold/fileread.h
+++ b/gold/fileread.h
@@ -1,6 +1,6 @@
// fileread.h -- read files for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/freebsd.h b/gold/freebsd.h
index 49a1e5e..2d5acc0 100644
--- a/gold/freebsd.h
+++ b/gold/freebsd.h
@@ -1,6 +1,6 @@
// freebsd.h -- FreeBSD support for gold -*- C++ -*-
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/ftruncate.c b/gold/ftruncate.c
index 4bf4478..17116ce 100644
--- a/gold/ftruncate.c
+++ b/gold/ftruncate.c
@@ -1,7 +1,7 @@
/* ftruncate emulations that work on some System V's.
This file is in the public domain. */
-/* Copyright (C) 2012-2017 Free Software Foundation, Inc.
+/* Copyright (C) 2012-2018 Free Software Foundation, Inc.
This file is part of gold.
diff --git a/gold/gc.cc b/gold/gc.cc
index 3b20215..2bb0fd1 100644
--- a/gold/gc.cc
+++ b/gold/gc.cc
@@ -1,6 +1,6 @@
// gc.cc -- garbage collection of unused sections
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Sriraman Tallam <tmsriram@google.com>.
// This file is part of gold.
diff --git a/gold/gc.h b/gold/gc.h
index 327efc2..eda332c 100644
--- a/gold/gc.h
+++ b/gold/gc.h
@@ -1,6 +1,6 @@
// gc.h -- garbage collection of unused sections
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Sriraman Tallam <tmsriram@google.com>.
// This file is part of gold.
diff --git a/gold/gdb-index.cc b/gold/gdb-index.cc
index 4874314..5dd97cd 100644
--- a/gold/gdb-index.cc
+++ b/gold/gdb-index.cc
@@ -1,6 +1,6 @@
// gdb-index.cc -- generate .gdb_index section for fast debug lookup
-// Copyright (C) 2012-2017 Free Software Foundation, Inc.
+// Copyright (C) 2012-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
diff --git a/gold/gdb-index.h b/gold/gdb-index.h
index 9372078..2ee5a8a 100644
--- a/gold/gdb-index.h
+++ b/gold/gdb-index.h
@@ -1,6 +1,6 @@
// gdb-index.h -- generate .gdb_index section for fast debug lookup -*- C++ -*-
-// Copyright (C) 2012-2017 Free Software Foundation, Inc.
+// Copyright (C) 2012-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
diff --git a/gold/gold-threads.cc b/gold/gold-threads.cc
index aef2613..3c53dff 100644
--- a/gold/gold-threads.cc
+++ b/gold/gold-threads.cc
@@ -1,6 +1,6 @@
// gold-threads.cc -- thread support for gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/gold-threads.h b/gold/gold-threads.h
index 9df2219..e82bb50 100644
--- a/gold/gold-threads.h
+++ b/gold/gold-threads.h
@@ -1,6 +1,6 @@
// gold-threads.h -- thread support for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/gold.cc b/gold/gold.cc
index a76d155..1987d41 100644
--- a/gold/gold.cc
+++ b/gold/gold.cc
@@ -1,6 +1,6 @@
// gold.cc -- main linker functions
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -175,7 +175,7 @@ queue_initial_tasks(const General_options& options,
Workqueue* workqueue, Input_objects* input_objects,
Symbol_table* symtab, Layout* layout, Mapfile* mapfile)
{
- if (cmdline.begin() == cmdline.end())
+ if (cmdline.number_of_input_files() == 0)
{
bool is_ok = false;
if (options.printed_version())
diff --git a/gold/gold.h b/gold/gold.h
index ae36e2f..7f7167b 100644
--- a/gold/gold.h
+++ b/gold/gold.h
@@ -1,6 +1,6 @@
// gold.h -- general definitions for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/i386.cc b/gold/i386.cc
index 0b447ef..564e616 100644
--- a/gold/i386.cc
+++ b/gold/i386.cc
@@ -1,6 +1,6 @@
// i386.cc -- i386 target support for gold.
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/icf.cc b/gold/icf.cc
index a49ce2e..62dade8 100644
--- a/gold/icf.cc
+++ b/gold/icf.cc
@@ -1,6 +1,6 @@
// icf.cc -- Identical Code Folding.
//
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Sriraman Tallam <tmsriram@google.com>.
// This file is part of gold.
diff --git a/gold/icf.h b/gold/icf.h
index 86142de..a200294 100644
--- a/gold/icf.h
+++ b/gold/icf.h
@@ -1,6 +1,6 @@
// icf.h -- Identical Code Folding
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Sriraman Tallam <tmsriram@google.com>.
// This file is part of gold.
diff --git a/gold/incremental-dump.cc b/gold/incremental-dump.cc
index 2a9ec79..fea74d6 100644
--- a/gold/incremental-dump.cc
+++ b/gold/incremental-dump.cc
@@ -1,6 +1,6 @@
// incremental.cc -- incremental linking test/debug tool
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Rafael Avila de Espindola <rafael.espindola@gmail.com>
// This file is part of gold.
diff --git a/gold/incremental.cc b/gold/incremental.cc
index 6d6b34a..417a739 100644
--- a/gold/incremental.cc
+++ b/gold/incremental.cc
@@ -1,6 +1,6 @@
// inremental.cc -- incremental linking support for gold
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Mikolaj Zalewski <mikolajz@google.com>.
// This file is part of gold.
@@ -2536,8 +2536,8 @@ Sized_relobj_incr<size, big_endian>::do_set_local_dynsym_offset(off_t)
// Relocate the input sections and write out the local symbols.
// We don't actually do any relocation here. For unchanged input files,
// we reapply relocations only for symbols that have changed; that happens
-// in queue_final_tasks. We do need to rewrite the incremental relocations
-// for this object.
+// in Layout_task_runner::run(). We do need to rewrite the incremental
+// relocations for this object.
template<int size, bool big_endian>
void
diff --git a/gold/incremental.h b/gold/incremental.h
index 3466016..1c3fbe1 100644
--- a/gold/incremental.h
+++ b/gold/incremental.h
@@ -1,6 +1,6 @@
// inremental.h -- incremental linking support for gold -*- C++ -*-
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Mikolaj Zalewski <mikolajz@google.com>.
// This file is part of gold.
diff --git a/gold/int_encoding.cc b/gold/int_encoding.cc
index cd888c1..3baf543 100644
--- a/gold/int_encoding.cc
+++ b/gold/int_encoding.cc
@@ -1,6 +1,6 @@
// int_encoding.cc -- variable length and unaligned integer encoding support.
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Doug Kwan <dougkwan@google.com> by refactoring scattered
// contents from other files in gold. Original code written by Ian
// Lance Taylor <iant@google.com> and Caleb Howe <cshowe@google.com>.
diff --git a/gold/int_encoding.h b/gold/int_encoding.h
index b250c79..869ecbb 100644
--- a/gold/int_encoding.h
+++ b/gold/int_encoding.h
@@ -1,6 +1,6 @@
// int_encoding.h -- variable length and unaligned integers -*- C++ -*-
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Doug Kwan <dougkwan@google.com> by refactoring scattered
// contents from other files in gold. Original code written by Ian
// Lance Taylor <iant@google.com> and Caleb Howe <cshowe@google.com>.
diff --git a/gold/layout.cc b/gold/layout.cc
index bb13d71..0ec7278 100644
--- a/gold/layout.cc
+++ b/gold/layout.cc
@@ -1,6 +1,6 @@
// layout.cc -- lay out output file sections for gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -1178,38 +1178,62 @@ Layout::layout(Sized_relobj_file<size, big_endian>* object, unsigned int shndx,
}
else
{
- // Plugins can choose to place one or more subsets of sections in
- // unique segments and this is done by mapping these section subsets
- // to unique output sections. Check if this section needs to be
- // remapped to a unique output section.
- Section_segment_map::iterator it
- = this->section_segment_map_.find(Const_section_id(object, shndx));
- if (it == this->section_segment_map_.end())
- {
- os = this->choose_output_section(object, name, sh_type,
- shdr.get_sh_flags(), true,
- ORDER_INVALID, false, false,
- true);
- }
- else
- {
- // We know the name of the output section, directly call
- // get_output_section here by-passing choose_output_section.
+ // All ".text.unlikely.*" sections can be moved to a unique
+ // segment with --text-unlikely-segment option.
+ bool text_unlikely_segment
+ = (parameters->options().text_unlikely_segment()
+ && is_prefix_of(".text.unlikely",
+ object->section_name(shndx).c_str()));
+ if (text_unlikely_segment)
+ {
elfcpp::Elf_Xword flags
= this->get_output_section_flags(shdr.get_sh_flags());
- const char* os_name = it->second->name;
Stringpool::Key name_key;
- os_name = this->namepool_.add(os_name, true, &name_key);
+ const char* os_name = this->namepool_.add(".text.unlikely", true,
+ &name_key);
os = this->get_output_section(os_name, name_key, sh_type, flags,
ORDER_INVALID, false);
- if (!os->is_unique_segment())
+ // Map this output section to a unique segment. This is done to
+ // separate "text" that is not likely to be executed from "text"
+ // that is likely executed.
+ os->set_is_unique_segment();
+ }
+ else
+ {
+ // Plugins can choose to place one or more subsets of sections in
+ // unique segments and this is done by mapping these section subsets
+ // to unique output sections. Check if this section needs to be
+ // remapped to a unique output section.
+ Section_segment_map::iterator it
+ = this->section_segment_map_.find(Const_section_id(object, shndx));
+ if (it == this->section_segment_map_.end())
{
- os->set_is_unique_segment();
- os->set_extra_segment_flags(it->second->flags);
- os->set_segment_alignment(it->second->align);
+ os = this->choose_output_section(object, name, sh_type,
+ shdr.get_sh_flags(), true,
+ ORDER_INVALID, false, false,
+ true);
}
- }
+ else
+ {
+ // We know the name of the output section, directly call
+ // get_output_section here by-passing choose_output_section.
+ elfcpp::Elf_Xword flags
+ = this->get_output_section_flags(shdr.get_sh_flags());
+
+ const char* os_name = it->second->name;
+ Stringpool::Key name_key;
+ os_name = this->namepool_.add(os_name, true, &name_key);
+ os = this->get_output_section(os_name, name_key, sh_type, flags,
+ ORDER_INVALID, false);
+ if (!os->is_unique_segment())
+ {
+ os->set_is_unique_segment();
+ os->set_extra_segment_flags(it->second->flags);
+ os->set_segment_alignment(it->second->align);
+ }
+ }
+ }
if (os == NULL)
return NULL;
}
@@ -1581,6 +1605,23 @@ Layout::add_eh_frame_for_plt(Output_data* plt, const unsigned char* cie_data,
}
}
+// Remove .eh_frame information for a PLT. FDEs using the CIE must
+// be removed in reverse order to the order they were added.
+
+void
+Layout::remove_eh_frame_for_plt(Output_data* plt, const unsigned char* cie_data,
+ size_t cie_length, const unsigned char* fde_data,
+ size_t fde_length)
+{
+ if (parameters->incremental())
+ {
+ // FIXME: Maybe this could work some day....
+ return;
+ }
+ this->eh_frame_data_->remove_ehframe_for_plt(plt, cie_data, cie_length,
+ fde_data, fde_length);
+}
+
// Scan a .debug_info or .debug_types section, and add summary
// information to the .gdb_index section.
@@ -2211,7 +2252,7 @@ Layout::define_section_symbols(Symbol_table* symtab)
0, // symsize
elfcpp::STT_NOTYPE,
elfcpp::STB_GLOBAL,
- elfcpp::STV_DEFAULT,
+ elfcpp::STV_PROTECTED,
0, // nonvis
false, // offset_is_from_end
true); // only_if_ref
@@ -2224,7 +2265,7 @@ Layout::define_section_symbols(Symbol_table* symtab)
0, // symsize
elfcpp::STT_NOTYPE,
elfcpp::STB_GLOBAL,
- elfcpp::STV_DEFAULT,
+ elfcpp::STV_PROTECTED,
0, // nonvis
true, // offset_is_from_end
true); // only_if_ref
@@ -3432,7 +3473,8 @@ Layout::segment_precedes(const Output_segment* seg1,
// here if plugins want unique segments for subsets of sections.
gold_assert(this->script_options_->saw_phdrs_clause()
|| parameters->options().any_section_start()
- || this->is_unique_segment_for_sections_specified());
+ || this->is_unique_segment_for_sections_specified()
+ || parameters->options().text_unlikely_segment());
return false;
}
@@ -3464,7 +3506,7 @@ is_text_segment(const Target* target, const Output_segment* seg)
}
// Set the file offsets of all the segments, and all the sections they
-// contain. They have all been created. LOAD_SEG must be be laid out
+// contain. They have all been created. LOAD_SEG must be laid out
// first. Return the offset of the data to follow.
off_t
diff --git a/gold/layout.h b/gold/layout.h
index 5f58c2c..bbdc162 100644
--- a/gold/layout.h
+++ b/gold/layout.h
@@ -1,6 +1,6 @@
// layout.h -- lay out output file sections for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -653,6 +653,13 @@ class Layout
size_t cie_length, const unsigned char* fde_data,
size_t fde_length);
+ // Remove .eh_frame information for a PLT. FDEs using the CIE must
+ // be removed in reverse order to the order they were added.
+ void
+ remove_eh_frame_for_plt(Output_data* plt, const unsigned char* cie_data,
+ size_t cie_length, const unsigned char* fde_data,
+ size_t fde_length);
+
// Scan a .debug_info or .debug_types section, and add summary
// information to the .gdb_index section.
template<int size, bool big_endian>
diff --git a/gold/main.cc b/gold/main.cc
index 9694495..aa6c698 100644
--- a/gold/main.cc
+++ b/gold/main.cc
@@ -1,6 +1,6 @@
// main.cc -- gold main function.
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/mapfile.cc b/gold/mapfile.cc
index b8a0897..882d01b 100644
--- a/gold/mapfile.cc
+++ b/gold/mapfile.cc
@@ -1,6 +1,6 @@
// mapfile.cc -- map file generation for gold
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/mapfile.h b/gold/mapfile.h
index 1a6ed6c..9f4ad1a 100644
--- a/gold/mapfile.h
+++ b/gold/mapfile.h
@@ -1,6 +1,6 @@
// mapfile.h -- map file generation for gold -*- C++ -*-
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/merge.cc b/gold/merge.cc
index 21bdfc4..de00ee9 100644
--- a/gold/merge.cc
+++ b/gold/merge.cc
@@ -1,6 +1,6 @@
// merge.cc -- handle section merging for gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/merge.h b/gold/merge.h
index 80400d4..c96b681 100644
--- a/gold/merge.h
+++ b/gold/merge.h
@@ -1,6 +1,6 @@
// merge.h -- handle section merging for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/mips.cc b/gold/mips.cc
index 4fc160b..543a234 100644
--- a/gold/mips.cc
+++ b/gold/mips.cc
@@ -1,6 +1,6 @@
// mips.cc -- mips target support for gold.
-// Copyright (C) 2011-2017 Free Software Foundation, Inc.
+// Copyright (C) 2011-2018 Free Software Foundation, Inc.
// Written by Sasa Stankovic <sasa.stankovic@imgtec.com>
// and Aleksandar Simeonov <aleksandar.simeonov@rt-rk.com>.
// This file contains borrowed and adapted code from bfd/elfxx-mips.c.
@@ -5664,7 +5664,7 @@ class Mips_relocate_functions : public Relocate_functions<size, big_endian>
: addend_a);
Valtype x = psymval->value(object, addend);
- x = ((x + (uint64_t) 0x800080008000) >> 48) & 0xffff;
+ x = ((x + (uint64_t) 0x800080008000llu) >> 48) & 0xffff;
val = Bits<32>::bit_select32(val, x, 0xffff);
if (calculate_only)
diff --git a/gold/mremap.c b/gold/mremap.c
index ea8aeaf..af414f2 100644
--- a/gold/mremap.c
+++ b/gold/mremap.c
@@ -1,6 +1,6 @@
/* mremap.c -- version of mremap for gold. */
-/* Copyright (C) 2009-2017 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2018 Free Software Foundation, Inc.
Written by Ian Lance Taylor <iant@google.com>.
This file is part of gold.
diff --git a/gold/nacl.cc b/gold/nacl.cc
index c0f0776..6a12b70 100644
--- a/gold/nacl.cc
+++ b/gold/nacl.cc
@@ -1,6 +1,6 @@
// nacl.cc -- Native Client support for gold
-// Copyright (C) 2012-2017 Free Software Foundation, Inc.
+// Copyright (C) 2012-2018 Free Software Foundation, Inc.
// This file is part of gold.
diff --git a/gold/nacl.h b/gold/nacl.h
index fa2b612..cd6bc8f 100644
--- a/gold/nacl.h
+++ b/gold/nacl.h
@@ -1,6 +1,6 @@
// nacl.h -- Native Client support for gold -*- C++ -*-
-// Copyright (C) 2012-2017 Free Software Foundation, Inc.
+// Copyright (C) 2012-2018 Free Software Foundation, Inc.
// This file is part of gold.
diff --git a/gold/object.cc b/gold/object.cc
index 4110686..0c8f7e2 100644
--- a/gold/object.cc
+++ b/gold/object.cc
@@ -1,6 +1,6 @@
// object.cc -- support for an object file for linking in gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -476,7 +476,6 @@ Sized_relobj_file<size, big_endian>::Sized_relobj_file(
local_plt_offsets_(),
kept_comdat_sections_(),
has_eh_frame_(false),
- discarded_eh_frame_shndx_(-1U),
is_deferred_layout_(false),
deferred_layout_(),
deferred_layout_relocs_(),
@@ -816,9 +815,9 @@ Sized_relobj_file<size, big_endian>::do_find_special_sections(
return (this->has_eh_frame_
|| (!parameters->options().relocatable()
&& parameters->options().gdb_index()
- && (memmem(names, sd->section_names_size, "debug_info", 11) == 0
+ && (memmem(names, sd->section_names_size, "debug_info", 11) != NULL
|| memmem(names, sd->section_names_size,
- "debug_types", 12) == 0)));
+ "debug_types", 12) != NULL)));
}
// Read the sections and symbols from an object file.
@@ -1303,13 +1302,7 @@ Sized_relobj_file<size, big_endian>::layout_eh_frame_section(
&offset);
this->output_sections()[shndx] = os;
if (os == NULL || offset == -1)
- {
- // An object can contain at most one section holding exception
- // frame information.
- gold_assert(this->discarded_eh_frame_shndx_ == -1U);
- this->discarded_eh_frame_shndx_ = shndx;
- this->section_offsets()[shndx] = invalid_address;
- }
+ this->section_offsets()[shndx] = invalid_address;
else
this->section_offsets()[shndx] = convert_types<Address, off_t>(offset);
@@ -2226,9 +2219,13 @@ Sized_relobj_file<size, big_endian>::do_count_local_symbols(Stringpool* pool,
// Decide whether this symbol should go into the output file.
if (is_ordinary
- && ((shndx < shnum && out_sections[shndx] == NULL)
- || shndx == this->discarded_eh_frame_shndx_))
+ && shndx < shnum
+ && (out_sections[shndx] == NULL
+ || (out_sections[shndx]->order() == ORDER_EHFRAME
+ && out_section_offsets[shndx] == invalid_address)))
{
+ // This is either a discarded section or an optimized .eh_frame
+ // section.
lv.set_no_output_symtab_entry();
gold_assert(!lv.needs_output_dynsym_entry());
continue;
@@ -2393,10 +2390,10 @@ Sized_relobj_file<size, big_endian>::compute_final_local_value_internal(
// This is a SHF_MERGE section or one which otherwise
// requires special handling.
- if (shndx == this->discarded_eh_frame_shndx_)
+ if (os->order() == ORDER_EHFRAME)
{
- // This local symbol belongs to a discarded .eh_frame
- // section. Just treat it like the case in which
+ // This local symbol belongs to a discarded or optimized
+ // .eh_frame section. Just treat it like the case in which
// os == NULL above.
gold_assert(this->has_eh_frame_);
return This::CFLV_DISCARDED;
@@ -2405,8 +2402,11 @@ Sized_relobj_file<size, big_endian>::compute_final_local_value_internal(
{
// This is not a section symbol. We can determine
// the final value now.
- lv_out->set_output_value(
- os->output_address(this, shndx, lv_in->input_value()));
+ uint64_t value =
+ os->output_address(this, shndx, lv_in->input_value());
+ if (relocatable)
+ value -= os->address();
+ lv_out->set_output_value(value);
}
else if (!os->find_starting_output_address(this, shndx, &start))
{
@@ -2420,10 +2420,10 @@ Sized_relobj_file<size, big_endian>::compute_final_local_value_internal(
os->find_relaxed_input_section(this, shndx);
if (posd != NULL)
{
- Address relocatable_link_adjustment =
- relocatable ? os->address() : 0;
- lv_out->set_output_value(posd->address()
- - relocatable_link_adjustment);
+ uint64_t value = posd->address();
+ if (relocatable)
+ value -= os->address();
+ lv_out->set_output_value(value);
}
else
lv_out->set_output_value(os->address());
@@ -2677,7 +2677,6 @@ Sized_relobj_file<size, big_endian>::write_local_symbols(
elfcpp::Sym<size, big_endian> isym(psyms);
Symbol_value<size>& lv(this->local_values_[i]);
- typename elfcpp::Elf_types<size>::Elf_Addr sym_value = lv.value(this, 0);
bool is_ordinary;
unsigned int st_shndx = this->adjust_sym_shndx(i, isym.get_st_shndx(),
@@ -2687,9 +2686,6 @@ Sized_relobj_file<size, big_endian>::write_local_symbols(
gold_assert(st_shndx < out_sections.size());
if (out_sections[st_shndx] == NULL)
continue;
- // In relocatable object files symbol values are section relative.
- if (parameters->options().relocatable())
- sym_value -= out_sections[st_shndx]->address();
st_shndx = out_sections[st_shndx]->out_shndx();
if (st_shndx >= elfcpp::SHN_LORESERVE)
{
@@ -2709,7 +2705,7 @@ Sized_relobj_file<size, big_endian>::write_local_symbols(
gold_assert(isym.get_st_name() < strtab_size);
const char* name = pnames + isym.get_st_name();
osym.put_st_name(sympool->get_offset(name));
- osym.put_st_value(sym_value);
+ osym.put_st_value(lv.value(this, 0));
osym.put_st_size(isym.get_st_size());
osym.put_st_info(isym.get_st_info());
osym.put_st_other(isym.get_st_other());
@@ -2727,7 +2723,7 @@ Sized_relobj_file<size, big_endian>::write_local_symbols(
gold_assert(isym.get_st_name() < strtab_size);
const char* name = pnames + isym.get_st_name();
osym.put_st_name(dynpool->get_offset(name));
- osym.put_st_value(sym_value);
+ osym.put_st_value(lv.value(this, 0));
osym.put_st_size(isym.get_st_size());
osym.put_st_info(isym.get_st_info());
osym.put_st_other(isym.get_st_other());
diff --git a/gold/object.h b/gold/object.h
index 508e79c..c92e030 100644
--- a/gold/object.h
+++ b/gold/object.h
@@ -1,6 +1,6 @@
// object.h -- support for an object file for linking in gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -2842,9 +2842,6 @@ class Sized_relobj_file : public Sized_relobj<size, big_endian>
Kept_comdat_section_table kept_comdat_sections_;
// Whether this object has a GNU style .eh_frame section.
bool has_eh_frame_;
- // If this object has a GNU style .eh_frame section that is discarded in
- // output, record the index here. Otherwise it is -1U.
- unsigned int discarded_eh_frame_shndx_;
// True if the layout of this object was deferred, waiting for plugin
// replacement files.
bool is_deferred_layout_;
diff --git a/gold/options.cc b/gold/options.cc
index ed63b6f..f511ba1 100644
--- a/gold/options.cc
+++ b/gold/options.cc
@@ -1,6 +1,6 @@
// options.c -- handle command line options for gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -1343,6 +1343,8 @@ General_options::finalize()
gold_fatal(_("incremental linking is not compatible with --plugin"));
if (this->relro())
gold_fatal(_("incremental linking is not compatible with -z relro"));
+ if (this->pie())
+ gold_fatal(_("incremental linking is not compatible with -pie"));
if (this->gc_sections())
{
gold_warning(_("ignoring --gc-sections for an incremental link"));
@@ -1569,6 +1571,12 @@ Command_line::process(int argc, const char** argv)
usage();
}
+ if (this->inputs_.in_lib())
+ {
+ fprintf(stderr, _("%s: missing lib end\n"), program_name);
+ usage();
+ }
+
// Normalize the options and ensure they don't contradict each other.
this->options_.finalize();
}
diff --git a/gold/options.h b/gold/options.h
index c7c032b..d5b8fe4 100644
--- a/gold/options.h
+++ b/gold/options.h
@@ -1,6 +1,6 @@
// options.h -- handle command line options for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -711,7 +711,7 @@ class General_options
DEFINE_string(format, options::TWO_DASHES, 'b', "elf",
N_("Set input format"), ("[elf,binary]"));
- DEFINE_bool(be8,options::TWO_DASHES, '\0', false,
+ DEFINE_bool(be8, options::TWO_DASHES, '\0', false,
N_("Output BE8 format image"), NULL);
DEFINE_optional_string(build_id, options::TWO_DASHES, '\0', "tree",
@@ -894,7 +894,7 @@ class General_options
DEFINE_string(fuse_ld, options::ONE_DASH, '\0', "",
N_("Ignored for GCC linker option compatibility"),
- "");
+ NULL);
// g
@@ -925,7 +925,7 @@ class General_options
N_("Min fraction of empty buckets in dynamic hash"),
N_("FRACTION"));
- DEFINE_enum(hash_style, options::TWO_DASHES, '\0', "sysv",
+ DEFINE_enum(hash_style, options::TWO_DASHES, '\0', DEFAULT_HASH_STYLE,
N_("Dynamic hash style"), N_("[sysv,gnu,both]"),
{"sysv", "gnu", "both"});
@@ -1164,7 +1164,8 @@ class General_options
N_("Generate relocatable output"), NULL);
DEFINE_bool(relax, options::TWO_DASHES, '\0', false,
- N_("Relax branches on certain targets"), NULL);
+ N_("Relax branches on certain targets"),
+ N_("Do not relax branches"));
DEFINE_string(retain_symbols_file, options::TWO_DASHES, '\0', NULL,
N_("keep only symbols listed in this file"), N_("FILE"));
@@ -1234,9 +1235,10 @@ class General_options
"stubs are always after the group. 1 means use default size"),
N_("SIZE"));
- DEFINE_bool(stub_group_multi, options::TWO_DASHES, '\0', false,
+ DEFINE_bool(stub_group_multi, options::TWO_DASHES, '\0', true,
N_("(PowerPC only) Allow a group of stubs to serve multiple "
- "output sections"), NULL);
+ "output sections"),
+ N_("(PowerPC only) Each output section has its own stubs"));
DEFINE_uint(split_stack_adjust_size, options::TWO_DASHES, '\0', 0x4000,
N_("Stack size when -fsplit-stack function calls non-split"),
@@ -1290,6 +1292,13 @@ class General_options
DEFINE_uint(thread_count_final, options::TWO_DASHES, '\0', 0,
N_("Number of threads to use in final pass"), N_("COUNT"));
+ DEFINE_bool(tls_optimize, options::TWO_DASHES, '\0', true,
+ N_("(PowerPC/64 only) Optimize GD/LD/IE code to IE/LE"),
+ N_("(PowerPC/64 only) Don'\''t try to optimize TLS accesses"));
+ DEFINE_bool(tls_get_addr_optimize, options::TWO_DASHES, '\0', true,
+ N_("(PowerPC/64 only) Use a special __tls_get_addr call"),
+ N_("(PowerPC/64 only) Don't use a special __tls_get_addr call"));
+
DEFINE_bool(toc_optimize, options::TWO_DASHES, '\0', true,
N_("(PowerPC64 only) Optimize TOC code sequences"),
N_("(PowerPC64 only) Don't optimize TOC code sequences"));
@@ -1483,6 +1492,11 @@ class General_options
DEFINE_bool_alias(textoff, text, options::DASH_Z, '\0',
N_("Permit relocations in read-only segments"),
NULL, true);
+ DEFINE_bool(text_unlikely_segment, options::DASH_Z, '\0', false,
+ N_("Move .text.unlikely sections to a separate segment."),
+ N_("Do not move .text.unlikely sections to a separate "
+ "segment."));
+
public:
typedef options::Dir_list Dir_list;
diff --git a/gold/output.cc b/gold/output.cc
index 5b1e601..0a34a2a 100644
--- a/gold/output.cc
+++ b/gold/output.cc
@@ -1,6 +1,6 @@
// output.cc -- manage the output file for gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -127,14 +127,26 @@ namespace gold
static int
gold_fallocate(int o, off_t offset, off_t len)
{
+ if (len <= 0)
+ return 0;
+
#ifdef HAVE_POSIX_FALLOCATE
if (parameters->options().posix_fallocate())
- return ::posix_fallocate(o, offset, len);
+ {
+ int err = ::posix_fallocate(o, offset, len);
+ if (err != EINVAL && err != ENOSYS && err != EOPNOTSUPP)
+ return err;
+ }
#endif // defined(HAVE_POSIX_FALLOCATE)
+
#ifdef HAVE_FALLOCATE
- if (::fallocate(o, 0, offset, len) == 0)
- return 0;
+ {
+ int err = ::fallocate(o, 0, offset, len);
+ if (err != EINVAL && err != ENOSYS && err != EOPNOTSUPP)
+ return err;
+ }
#endif // defined(HAVE_FALLOCATE)
+
if (::ftruncate(o, offset + len) < 0)
return errno;
return 0;
diff --git a/gold/output.h b/gold/output.h
index 157cef2..c7545ca 100644
--- a/gold/output.h
+++ b/gold/output.h
@@ -1,6 +1,6 @@
// output.h -- manage the output file for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/parameters.cc b/gold/parameters.cc
index c89ada3..34ac122 100644
--- a/gold/parameters.cc
+++ b/gold/parameters.cc
@@ -1,6 +1,6 @@
// parameters.cc -- general parameters for a link using gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/parameters.h b/gold/parameters.h
index 0c20ff4..8cdd4dc 100644
--- a/gold/parameters.h
+++ b/gold/parameters.h
@@ -1,6 +1,6 @@
// parameters.h -- general parameters for a link using gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/plugin.cc b/gold/plugin.cc
index c051805..02fef25 100644
--- a/gold/plugin.cc
+++ b/gold/plugin.cc
@@ -1,6 +1,6 @@
// plugin.cc -- plugin manager for gold -*- C++ -*-
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
@@ -167,6 +167,9 @@ static enum ld_plugin_status
get_input_section_size(const struct ld_plugin_section section,
uint64_t* secsize);
+static enum ld_plugin_status
+register_new_input(ld_plugin_new_input_handler handler);
+
};
#endif // ENABLE_PLUGINS
@@ -211,7 +214,7 @@ Plugin::load()
sscanf(ver, "%d.%d", &major, &minor);
// Allocate and populate a transfer vector.
- const int tv_fixed_size = 29;
+ const int tv_fixed_size = 30;
int tv_size = this->args_.size() + tv_fixed_size;
ld_plugin_tv* tv = new ld_plugin_tv[tv_size];
@@ -346,6 +349,10 @@ Plugin::load()
tv[i].tv_u.tv_get_input_section_size = get_input_section_size;
++i;
+ tv[i].tv_tag = LDPT_REGISTER_NEW_INPUT_HOOK;
+ tv[i].tv_u.tv_register_new_input = register_new_input;
+
+ ++i;
tv[i].tv_tag = LDPT_NULL;
tv[i].tv_u.tv_val = 0;
@@ -383,6 +390,15 @@ Plugin::all_symbols_read()
(*this->all_symbols_read_handler_)();
}
+// Call the new_input handler.
+
+inline void
+Plugin::new_input(struct ld_plugin_input_file* plugin_input_file)
+{
+ if (this->new_input_handler_ != NULL)
+ (*this->new_input_handler_)(plugin_input_file);
+}
+
// Call the cleanup handler.
inline void
@@ -476,8 +492,6 @@ Plugin_manager::claim_file(Input_file* input_file, off_t offset,
gold_assert(lock_initialized);
Hold_lock hl(*this->lock_);
- if (this->in_replacement_phase_)
- return NULL;
unsigned int handle = this->objects_.size();
this->input_file_ = input_file;
@@ -494,19 +508,28 @@ Plugin_manager::claim_file(Input_file* input_file, off_t offset,
this->current_ != this->plugins_.end();
++this->current_)
{
- if ((*this->current_)->claim_file(&this->plugin_input_file_))
+ // If we aren't yet in replacement phase, allow plugins to claim input
+ // files, otherwise notify the plugin of the new input file, if needed.
+ if (!this->in_replacement_phase_)
{
- this->any_claimed_ = true;
- this->in_claim_file_handler_ = false;
-
- if (this->objects_.size() > handle
- && this->objects_[handle]->pluginobj() != NULL)
- return this->objects_[handle]->pluginobj();
-
- // If the plugin claimed the file but did not call the
- // add_symbols callback, we need to create the Pluginobj now.
- Pluginobj* obj = this->make_plugin_object(handle);
- return obj;
+ if ((*this->current_)->claim_file(&this->plugin_input_file_))
+ {
+ this->any_claimed_ = true;
+ this->in_claim_file_handler_ = false;
+
+ if (this->objects_.size() > handle
+ && this->objects_[handle]->pluginobj() != NULL)
+ return this->objects_[handle]->pluginobj();
+
+ // If the plugin claimed the file but did not call the
+ // add_symbols callback, we need to create the Pluginobj now.
+ Pluginobj* obj = this->make_plugin_object(handle);
+ return obj;
+ }
+ }
+ else
+ {
+ (*this->current_)->new_input(&this->plugin_input_file_);
}
}
@@ -930,7 +953,9 @@ is_visible_from_outside(Symbol* lsym)
{
if (lsym->in_dyn())
return true;
- if (parameters->options().export_dynamic() || parameters->options().shared())
+ if (parameters->options().export_dynamic() || parameters->options().shared()
+ || parameters->options().in_dynamic_list(lsym->name())
+ || parameters->options().is_export_dynamic_symbol(lsym->name()))
return lsym->is_externally_visible();
return false;
}
@@ -1903,6 +1928,16 @@ unique_segment_for_sections(const char* segment_name,
return LDPS_OK;
}
+// Register a new_input handler.
+
+static enum ld_plugin_status
+register_new_input(ld_plugin_new_input_handler handler)
+{
+ gold_assert(parameters->options().has_plugins());
+ parameters->options().plugins()->set_new_input_handler(handler);
+ return LDPS_OK;
+}
+
#endif // ENABLE_PLUGINS
// Allocate a Pluginobj object of the appropriate size and endianness.
diff --git a/gold/plugin.h b/gold/plugin.h
index 7658668..db6093d 100644
--- a/gold/plugin.h
+++ b/gold/plugin.h
@@ -1,6 +1,6 @@
// plugin.h -- plugin manager for gold -*- C++ -*-
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
@@ -60,6 +60,7 @@ class Plugin
claim_file_handler_(NULL),
all_symbols_read_handler_(NULL),
cleanup_handler_(NULL),
+ new_input_handler_(NULL),
cleanup_done_(false)
{ }
@@ -78,6 +79,10 @@ class Plugin
void
all_symbols_read();
+ // Call the new_input handler.
+ void
+ new_input(struct ld_plugin_input_file* plugin_input_file);
+
// Call the cleanup handler.
void
cleanup();
@@ -97,6 +102,11 @@ class Plugin
set_cleanup_handler(ld_plugin_cleanup_handler handler)
{ this->cleanup_handler_ = handler; }
+ // Register a new_input handler.
+ void
+ set_new_input_handler(ld_plugin_new_input_handler handler)
+ { this->new_input_handler_ = handler; }
+
// Add an argument
void
add_option(const char* arg)
@@ -118,6 +128,7 @@ class Plugin
ld_plugin_claim_file_handler claim_file_handler_;
ld_plugin_all_symbols_read_handler all_symbols_read_handler_;
ld_plugin_cleanup_handler cleanup_handler_;
+ ld_plugin_new_input_handler new_input_handler_;
// TRUE if the cleanup handlers have been called.
bool cleanup_done_;
};
@@ -218,6 +229,14 @@ class Plugin_manager
(*this->current_)->set_all_symbols_read_handler(handler);
}
+ // Register a new_input handler.
+ void
+ set_new_input_handler(ld_plugin_new_input_handler handler)
+ {
+ gold_assert(this->current_ != plugins_.end());
+ (*this->current_)->set_new_input_handler(handler);
+ }
+
// Register a claim-file handler.
void
set_cleanup_handler(ld_plugin_cleanup_handler handler)
diff --git a/gold/po/Make-in b/gold/po/Make-in
index b62082e..d589099 100644
--- a/gold/po/Make-in
+++ b/gold/po/Make-in
@@ -20,10 +20,10 @@ top_builddir = @top_builddir@
prefix = @prefix@
exec_prefix = @exec_prefix@
-datadir = $(prefix)/@DATADIRNAME@
-localedir = $(datadir)/locale
-gnulocaledir = $(prefix)/share/locale
-gettextsrcdir = $(prefix)/share/gettext/po
+datadir = @datadir@
+localedir = @localedir@
+gnulocaledir = @datarootdir@/locale
+gettextsrcdir = @datarootdir@/gettext/po
subdir = po
DESTDIR =
diff --git a/gold/po/es.po b/gold/po/es.po
index 2683a2a..ef236d1 100644
--- a/gold/po/es.po
+++ b/gold/po/es.po
@@ -12,6 +12,7 @@ msgstr ""
"Last-Translator: Cristian Othón Martínez Vera <cfuga@cfuga.mx>\n"
"Language-Team: Spanish <es@li.org>\n"
"Language: es\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
diff --git a/gold/po/fi.po b/gold/po/fi.po
index bcbd95c..3afd5d3 100644
--- a/gold/po/fi.po
+++ b/gold/po/fi.po
@@ -12,6 +12,7 @@ msgstr ""
"Last-Translator: Jorma Karvonen <karvonen.jorma@gmail.com>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
"Language: fi\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
diff --git a/gold/po/fr.po b/gold/po/fr.po
index a75b5d6..64fdbe2 100644
--- a/gold/po/fr.po
+++ b/gold/po/fr.po
@@ -16,6 +16,7 @@ msgstr ""
"Last-Translator: Grégoire Scano <gregoire.scano@malloc.fr>\n"
"Language-Team: French <traduc@traduc.org>\n"
"Language: fr\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
diff --git a/gold/po/id.po b/gold/po/id.po
index 1c3b45f..2a4b9e9 100644
--- a/gold/po/id.po
+++ b/gold/po/id.po
@@ -1,80 +1,168 @@
# Pesan bahasa indonesia untuk gold.
# Copyright (C) 2009 Free Software Foundation, Inc.
# This file is distributed under the same license as the binutils package.
-# Arif E. Nugroho <arif_endro@yahoo.com>, 2009.
+# Arif E. Nugroho <arif_endro@yahoo.com>, 2009, 2010, 2011, 2012, 2013, 2014.
#
msgid ""
msgstr ""
-"Project-Id-Version: gold 2.19.1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-09-09 17:16+0930\n"
-"PO-Revision-Date: 2009-05-26 08:00+0700\n"
+"Project-Id-Version: gold 2.23.90\n"
+"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
+"POT-Creation-Date: 2010-03-03 15:08+0100\n"
+"PO-Revision-Date: 2014-08-16 08:00+0700\n"
"Last-Translator: Arif E. Nugroho <arif_endro@yahoo.com>\n"
"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
+"Language: id\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
-#: archive.cc:107
+#: archive.cc:119
#, c-format
msgid "%s: no archive symbol table (run ranlib)"
msgstr "%s: tidak ada kumpulan tabel simbol (jalankan ranlib)"
-#: archive.cc:189
+#: archive.cc:204
#, c-format
msgid "%s: bad archive symbol table names"
msgstr "%s: nama kumpulan tabel simbol buruk"
-#: archive.cc:221
+#: archive.cc:236
#, c-format
msgid "%s: malformed archive header at %zu"
msgstr "%s: kumpulan kepala salah bentuk di %zu"
-#: archive.cc:241
+#: archive.cc:256
#, c-format
msgid "%s: malformed archive header size at %zu"
msgstr "%s: ukuran kepala kumpulan salah bentuk di %zu"
-#: archive.cc:252
+#: archive.cc:267
#, c-format
msgid "%s: malformed archive header name at %zu"
msgstr "%s: salah bentuk nama kepala kumpulan di %zu"
-#: archive.cc:282
+#: archive.cc:297
#, c-format
msgid "%s: bad extended name index at %zu"
msgstr "%s: nama indeks extensi buruk di %zu"
-#: archive.cc:292
+#: archive.cc:307
#, c-format
msgid "%s: bad extended name entry at header %zu"
msgstr "%s: nama masukan ekstensi buruk di kepala %zu"
-#: archive.cc:389
+#: archive.cc:404
#, c-format
msgid "%s: short archive header at %zu"
msgstr "%s: kumpulan kepala pendek di %zu"
-#: archive.cc:530 archive.cc:545
+#: archive.cc:560
#, c-format
msgid "%s: member at %zu is not an ELF object"
msgstr "%s: anggota di %zu bukan sebuah objek ELF"
-#: archive.cc:775
+#: archive.cc:879
#, c-format
msgid "%s: archive libraries: %u\n"
msgstr "%s: kumpulan perpustakaan: %u\n"
-#: archive.cc:777
+#: archive.cc:881
#, c-format
msgid "%s: total archive members: %u\n"
msgstr "%s: jumlah total kumpulan: %u\n"
-#: archive.cc:779
+#: archive.cc:883
#, c-format
msgid "%s: loaded archive members: %u\n"
msgstr "%s: dimuat anggota kumpulan: %u\n"
+#: arm.cc:1149 i386.cc:536 sparc.cc:1087 x86_64.cc:565
+msgid "** PLT"
+msgstr "** PLT"
+
+#: arm.cc:1364 i386.cc:880 powerpc.cc:1014 sparc.cc:1502 x86_64.cc:955
+#: x86_64.cc:1265
+#, c-format
+msgid "%s: unsupported reloc %u against local symbol"
+msgstr "%s: tidak didukung relokasi %u terhadap simbol lokal"
+
+#: arm.cc:1404 powerpc.cc:1105 sparc.cc:1592 x86_64.cc:992
+msgid "requires unsupported dynamic reloc; recompile with -fPIC"
+msgstr "relokasi dinamis yang dibutuhkan tidak didukung; rekompilasi dengan -fPIC"
+
+#. These are relocations which should only be seen by the
+#. dynamic linker, and should never be seen here.
+#: arm.cc:1519 arm.cc:1739 arm.cc:2354 i386.cc:1002 i386.cc:1334
+#: powerpc.cc:1223 powerpc.cc:1432 sparc.cc:1877 sparc.cc:2238 x86_64.cc:1145
+#: x86_64.cc:1453
+#, c-format
+msgid "%s: unexpected reloc %u in object file"
+msgstr "%s: tidak terduga relokasi %u dalam berkas objek"
+
+#: arm.cc:1538 i386.cc:1171 powerpc.cc:1242 sparc.cc:1896 x86_64.cc:1279
+#: x86_64.cc:1571
+#, c-format
+msgid "%s: unsupported reloc %u against global symbol %s"
+msgstr "%s: tidak didukung relokasi %u terhadap simbol global %s"
+
+#: arm.cc:1804 i386.cc:1542
+#, c-format
+msgid "%s: unsupported RELA reloc section"
+msgstr "%s: tidak didukung daerah relokasi RELA"
+
+#: arm.cc:2047
+msgid "relocation R_ARM_MOVW_ABS_NC cannot be used when makinga shared object; recompile with -fPIC"
+msgstr "relocation R_ARM_MOVW_ABS_NC cannot be used when makinga shared object; recompile with -fPIC"
+
+#: arm.cc:2056
+msgid "relocation R_ARM_MOVT_ABS cannot be used when makinga shared object; recompile with -fPIC"
+msgstr "relocation R_ARM_MOVT_ABS cannot be used when makinga shared object; recompile with -fPIC"
+
+#: arm.cc:2067
+msgid "relocation R_ARM_THM_MOVW_ABS_NC cannot be used whenmaking a shared object; recompile with -fPIC"
+msgstr "relocation R_ARM_THM_MOVW_ABS_NC cannot be used whenmaking a shared object; recompile with -fPIC"
+
+#: arm.cc:2077
+msgid "relocation R_ARM_THM_MOVT_ABS cannot be used whenmaking a shared object; recompile with -fPIC"
+msgstr "relocation R_ARM_THM_MOVT_ABS cannot be used whenmaking a shared object; recompile with -fPIC"
+
+#: arm.cc:2141
+msgid "cannot find origin of R_ARM_BASE_PREL"
+msgstr "cannot find origin of R_ARM_BASE_PREL"
+
+#: arm.cc:2169
+msgid "cannot find origin of R_ARM_BASE_ABS"
+msgstr "cannot find origin of R_ARM_BASE_ABS"
+
+#: arm.cc:2230 i386.cc:1820 i386.cc:2521 powerpc.cc:1798 sparc.cc:2711
+#: x86_64.cc:1935 x86_64.cc:2518
+#, c-format
+msgid "unexpected reloc %u in object file"
+msgstr "tidak diduga relokasi %u dalam berkas objek"
+
+#: arm.cc:2236 i386.cc:1852 i386.cc:1931 i386.cc:1983 i386.cc:2014
+#: i386.cc:2076 powerpc.cc:1804 sparc.cc:2717 sparc.cc:2900 sparc.cc:2961
+#: sparc.cc:3068 x86_64.cc:1956 x86_64.cc:2039 x86_64.cc:2094 x86_64.cc:2119
+#, c-format
+msgid "unsupported reloc %u"
+msgstr "tidak diduga relokasi %u"
+
+#: arm.cc:2248
+#, c-format
+msgid "relocation overflow in relocation %u"
+msgstr "relocation overflow in relocation %u"
+
+#: arm.cc:2256
+#, c-format
+msgid "unexpected opcode while processing relocation %u"
+msgstr "tidak terduga opcode ketika memproses relokasi %u"
+
+#: arm.cc:2359 i386.cc:2535
+#, c-format
+msgid "unsupported reloc %u in object file"
+msgstr "tidak diduga relokasi %u dalam berkas objek"
+
#: binary.cc:129
#, c-format
msgid "cannot open %s: %s:"
@@ -89,16 +177,16 @@ msgstr "tidak mengkompress bagian data: zlib error"
msgid "cannot open symbol count file %s: %s"
msgstr "tidak dapat membuka jumlah berkas simbol %s: %s"
-#: descriptors.cc:94
+#: descriptors.cc:116
#, c-format
msgid "file %s was removed during the link"
msgstr "berkas %s telah dihapus ketika penyambungan"
-#: descriptors.cc:133
+#: descriptors.cc:169
msgid "out of file descriptors and couldn't close any"
msgstr "diluar dari berkas deskripsi dan tidak dapat menutup apapun"
-#: descriptors.cc:154 descriptors.cc:189
+#: descriptors.cc:190 descriptors.cc:226
#, c-format
msgid "while closing %s: %s"
msgstr "ketika menutup %s: %s"
@@ -112,115 +200,115 @@ msgstr "%s: tidak dapat membaca direktori: %s"
msgid "Unusually large LEB128 decoded, debug information may be corrupted"
msgstr "Besar LEB128 terurai tidak biasa, informasi penelusuran mungkin telah terkorupsi"
-#: dynobj.cc:169
+#: dynobj.cc:164
#, c-format
msgid "unexpected duplicate type %u section: %u, %u"
msgstr "tidak terduga duplikasi daerah tipe %u: %u, %u"
-#: dynobj.cc:205
+#: dynobj.cc:200
#, c-format
msgid "unexpected link in section %u header: %u != %u"
msgstr "tidak terduga sambungan dalam daerah %u kepala: %u != %u"
-#: dynobj.cc:241
+#: dynobj.cc:236
#, c-format
msgid "DYNAMIC section %u link out of range: %u"
msgstr "daerah DINAMIS %u sambungan diluar dari jangkauan: %u"
-#: dynobj.cc:249
+#: dynobj.cc:244
#, c-format
msgid "DYNAMIC section %u link %u is not a strtab"
msgstr "daerah DINAMIS %u sambungan %u bukan sebuah a strtab"
-#: dynobj.cc:278
+#: dynobj.cc:273
#, c-format
msgid "DT_SONAME value out of range: %lld >= %lld"
msgstr "DT_SONAME nilai diluar dari jangkauan: %lld >= %lld"
-#: dynobj.cc:290
+#: dynobj.cc:285
#, c-format
msgid "DT_NEEDED value out of range: %lld >= %lld"
msgstr "DT_NEEDED nilai diluar dari jangkauan: %lld >= %lld"
-#: dynobj.cc:303
+#: dynobj.cc:298
msgid "missing DT_NULL in dynamic segment"
msgstr "hilang DT_NULL dalam bagian dinamis"
-#: dynobj.cc:349
+#: dynobj.cc:344
#, c-format
msgid "invalid dynamic symbol table name index: %u"
msgstr "nama indeks table simbol dinamis tidak valid: %u"
-#: dynobj.cc:356
+#: dynobj.cc:351
#, c-format
msgid "dynamic symbol table name section has wrong type: %u"
msgstr "nama daerah tabel simbol dinamis memiliki tipe salah: %u"
-#: dynobj.cc:443 object.cc:376 object.cc:884
+#: dynobj.cc:438 object.cc:463 object.cc:1106
#, c-format
msgid "bad section name offset for section %u: %lu"
msgstr "nama daerah ofset buruk untuk daerah %u: %lu"
-#: dynobj.cc:472
+#: dynobj.cc:468
#, c-format
msgid "duplicate definition for version %u"
msgstr "duplikasi definisi untuk versi %u"
-#: dynobj.cc:501
+#: dynobj.cc:497
#, c-format
msgid "unexpected verdef version %u"
msgstr "tidak terduga verdef versi %u"
-#: dynobj.cc:517
+#: dynobj.cc:513
#, c-format
msgid "verdef vd_cnt field too small: %u"
msgstr "verdef vd_cnt daerah terlalu kecil: %u"
-#: dynobj.cc:525
+#: dynobj.cc:521
#, c-format
msgid "verdef vd_aux field out of range: %u"
msgstr "daerah verdef vd_aux diluar dari jangkauan: %u"
-#: dynobj.cc:536
+#: dynobj.cc:532
#, c-format
msgid "verdaux vda_name field out of range: %u"
msgstr "daerah verdaux vda_name diluar dari jangkauan: %u"
-#: dynobj.cc:546
+#: dynobj.cc:542
#, c-format
msgid "verdef vd_next field out of range: %u"
msgstr "daerah verdef vd_next diluar dari jangkauan: %u"
-#: dynobj.cc:580
+#: dynobj.cc:576
#, c-format
msgid "unexpected verneed version %u"
msgstr "tidak terduga versi verneed %u"
-#: dynobj.cc:589
+#: dynobj.cc:585
#, c-format
msgid "verneed vn_aux field out of range: %u"
msgstr "daerah verneed vn_aux diluar dari jangkauan: %u"
-#: dynobj.cc:603
+#: dynobj.cc:599
#, c-format
msgid "vernaux vna_name field out of range: %u"
msgstr "daerah vernaux vna_name diluar dari jangkauan: %u"
-#: dynobj.cc:614
+#: dynobj.cc:610
#, c-format
msgid "verneed vna_next field out of range: %u"
msgstr "daerah verneed vna_next diluar dari jangkauan: %u"
-#: dynobj.cc:625
+#: dynobj.cc:621
#, c-format
msgid "verneed vn_next field out of range: %u"
msgstr "daerah verneed vn_next diluar dari jangkauan: %u"
-#: dynobj.cc:673
+#: dynobj.cc:670
msgid "size of dynamic symbols is not multiple of symbol size"
msgstr "ukuran dari simbol dinamis bukan kelipatan dari ukuran simbol"
-#: dynobj.cc:1425
+#: dynobj.cc:1435
#, c-format
msgid "symbol %s has undefined version %s"
msgstr "simbol %s memiliki versi %s tidak terdefinisi"
@@ -233,27 +321,42 @@ msgstr "** eh_frame_hdr"
msgid "** eh_frame"
msgstr "** eh_frame"
-#: errors.cc:106
+#: errors.cc:81
+#, c-format
+msgid "%s: fatal error: "
+msgstr "%s: fatal error: "
+
+#: errors.cc:92
+#, c-format
+msgid "%s: error: "
+msgstr "%s: error: "
+
+#: errors.cc:104
#, c-format
msgid "%s: warning: "
msgstr "%s: peringatan: "
-#: errors.cc:146
+#: errors.cc:128
+#, c-format
+msgid "%s: %s: error: "
+msgstr "%s: %s: error: "
+
+#: errors.cc:144
#, c-format
msgid "%s: %s: warning: "
msgstr "%s: %s: peringatan: "
-#: errors.cc:172
+#: errors.cc:167
#, c-format
-msgid "%s: %s: undefined reference to '%s'\n"
-msgstr "%s: %s: referensi tidak terdefinisi ke '%s'\n"
+msgid "%s: %s: error: undefined reference to '%s'\n"
+msgstr "%s: %s: error: referensi tidak terdefinisi ke '%s'\n"
-#: errors.cc:176
+#: errors.cc:172
#, c-format
-msgid "%s: %s: undefined reference to '%s', version '%s'\n"
-msgstr "%s: %s: referensi ke '%s' tidak terdefinisi, versi '%s'\n"
+msgid "%s: %s: error: undefined reference to '%s', version '%s'\n"
+msgstr "%s: %s: error: referensi ke '%s' tidak terdefinisi, versi '%s'\n"
-#: errors.cc:186
+#: errors.cc:182
#, c-format
msgid "%s: "
msgstr "%s: "
@@ -273,10 +376,6 @@ msgstr "referensi tidak valid ke dot symbol diluar dari SECTIONS clause"
msgid "unary "
msgstr "unary "
-#: expression.cc:278 expression.cc:400
-msgid " applied to section relative value"
-msgstr " diaplikasikan ke daerah nilai relatif"
-
#. Handle binary operators. We use a preprocessor macro as a hack to
#. capture the C operator. KEEP_LEFT means that if the left operand
#. is section relative and the right operand is not, the result uses
@@ -322,72 +421,82 @@ msgstr "ORIGIN tidak diimplementasikan"
msgid "LENGTH not implemented"
msgstr "LENGTH tidak diimplementasikan"
-#: fileread.cc:55
+#: fileread.cc:65
#, c-format
msgid "munmap failed: %s"
msgstr "munmap gagal: %s"
-#: fileread.cc:119
+#: fileread.cc:129
#, c-format
msgid "%s: fstat failed: %s"
msgstr "%s: fstat gagal: %s"
-#: fileread.cc:159
+#: fileread.cc:169
#, c-format
msgid "could not reopen file %s"
msgstr "tidak dapat membuka kembali berkas %s"
-#: fileread.cc:292
+#: fileread.cc:302
#, c-format
msgid "%s: pread failed: %s"
msgstr "%s: pread gagal: %s"
-#: fileread.cc:298
+#: fileread.cc:308
#, c-format
msgid "%s: file too short: read only %lld of %lld bytes at %lld"
msgstr "%s: berkas terlalu pendek: hanya membaca %lld dari %lld byte di %lld"
-#: fileread.cc:382
+#: fileread.cc:372
+#, c-format
+msgid "%s: attempt to map %lld bytes at offset %lld exceeds size of file; the file may be corrupt"
+msgstr "%s: attempt to map %lld bytes at offset %lld exceeds size of file; the file may be corrupt"
+
+#: fileread.cc:402
#, c-format
msgid "%s: mmap offset %lld size %lld failed: %s"
msgstr "%s: mmap ofset %lld ukuran %lld gagal: %s"
-#: fileread.cc:528
+#: fileread.cc:548
#, c-format
msgid "%s: lseek failed: %s"
msgstr "%s: lseek gagal: %s"
-#: fileread.cc:534
+#: fileread.cc:554
#, c-format
msgid "%s: readv failed: %s"
msgstr "%s: readv gagal: %s"
-#: fileread.cc:537
+#: fileread.cc:557
#, c-format
msgid "%s: file too short: read only %zd of %zd bytes at %lld"
msgstr "%s: berkas terlalu pendek: hanya membaca %zd dari %zd byte di %lld"
-#: fileread.cc:686
+#: fileread.cc:706
#, c-format
msgid "%s: total bytes mapped for read: %llu\n"
msgstr "%s: total byte dipetakan untuk pembacaan: %llu\n"
-#: fileread.cc:688
+#: fileread.cc:708
#, c-format
msgid "%s: maximum bytes mapped for read at one time: %llu\n"
msgstr "%s: jumlah maksimal byte dipetakan untuk pembacaan di setiap waktu: %llu\n"
-#: fileread.cc:783
+#: fileread.cc:791
+#, c-format
+msgid "%s: stat failed: %s"
+msgstr "%s: stat gagal: %s"
+
+#: fileread.cc:849
#, c-format
-msgid "cannot find -l%s"
-msgstr "tidak dapat menemukan -l%s"
+msgid "cannot find %s%s"
+msgstr "tidak dapat menemukan %s%s"
-#: fileread.cc:810
+#: fileread.cc:880
#, c-format
msgid "cannot find %s"
msgstr "tidak dapat menemukan %s"
-#: fileread.cc:833
+#: fileread.cc:904
#, c-format
msgid "cannot open %s: %s"
msgstr "tidak dapat membuka %s: %s"
@@ -417,12 +526,12 @@ msgstr "pthread_mutexattr_destroy gagal: %s"
msgid "pthread_mutex_destroy failed: %s"
msgstr "pthread_mutex_destroy gagal: %s"
-#: gold-threads.cc:131
+#: gold-threads.cc:131 gold-threads.cc:382
#, c-format
msgid "pthread_mutex_lock failed: %s"
msgstr "pthread_mutex_lock gagal: %s"
-#: gold-threads.cc:139
+#: gold-threads.cc:139 gold-threads.cc:394
#, c-format
msgid "pthread_mutex_unlock failed: %s"
msgstr "pthread_mutex_unlock gagal: %s"
@@ -452,120 +561,156 @@ msgstr "pthread_cond_signal gagal: %s"
msgid "pthread_cond_broadcast failed: %s"
msgstr "pthread_cond_broadcast gagal: %s"
-#: gold.cc:83
+#: gold-threads.cc:388
+#, c-format
+msgid "pthread_once failed: %s"
+msgstr "pthread_once gagal: %s"
+
+#: gold.cc:91
#, c-format
msgid "%s: internal error in %s, at %s:%d\n"
msgstr "%s: kerusakan internal dalam %s, di %s:%d\n"
-#: gold.cc:130
+#: gold.cc:173
msgid "no input files"
msgstr "tidak ada berkas masukan"
-#. We print out just the first .so we see; there may be others.
-#: gold.cc:195
+#: gold.cc:226
+msgid "cannot mix -r with --gc-sections or --icf"
+msgstr "tidak dapat mencampurkan -r dengan --gc-sections or --icf"
+
+#: gold.cc:407
#, c-format
msgid "cannot mix -static with dynamic object %s"
msgstr "tidak dapat mencampurkan -static dengan objek dinamis %s"
-#: gold.cc:199
+#: gold.cc:411
#, c-format
msgid "cannot mix -r with dynamic object %s"
msgstr "tidak dapat mencampurkan -r dengan objek dinamis %s"
-#: gold.cc:203
+#: gold.cc:415
#, c-format
msgid "cannot use non-ELF output format with dynamic object %s"
msgstr "tidak dapat menggunakan format keluaran bukan ELF dengan objek dinamis %s"
+#: gold.cc:427
+#, c-format
+msgid "cannot mix split-stack '%s' and non-split-stack '%s' when using -r"
+msgstr "cannot mix split-stack '%s' and non-split-stack '%s' when using -r"
+
#. FIXME: This needs to specify the location somehow.
-#: i386.cc:193 i386.cc:1588 sparc.cc:211 sparc.cc:2322 x86_64.cc:208
-#: x86_64.cc:1656
+#: i386.cc:232 i386.cc:1669 sparc.cc:234 sparc.cc:2395 x86_64.cc:237
+#: x86_64.cc:1732
msgid "missing expected TLS relocation"
msgstr "hilang relokasi TLS yang diduga"
-#: i386.cc:503 sparc.cc:1066 x86_64.cc:533
-msgid "** PLT"
-msgstr "** PLT"
-
-#: i386.cc:843 powerpc.cc:996 sparc.cc:1480 x86_64.cc:921 x86_64.cc:1230
-#, c-format
-msgid "%s: unsupported reloc %u against local symbol"
-msgstr "%s: tidak didukung relokasi %u terhadap simbol lokal"
-
-#: i386.cc:907 x86_64.cc:1033
+#: i386.cc:944 x86_64.cc:1068
#, c-format
msgid "section symbol %u has bad shndx %u"
msgstr "daerah simbol %u memiliki shndx buruk %u"
-#: i386.cc:965 i386.cc:1297 powerpc.cc:1204 powerpc.cc:1413 sparc.cc:1852
-#: sparc.cc:2204 x86_64.cc:1110 x86_64.cc:1418
-#, c-format
-msgid "%s: unexpected reloc %u in object file"
-msgstr "%s: tidak terduga relokasi %u dalam berkas objek"
-
-#: i386.cc:999 i386.cc:1023 sparc.cc:1753 x86_64.cc:1141 x86_64.cc:1169
+#: i386.cc:1036 i386.cc:1060 sparc.cc:1777 x86_64.cc:1176 x86_64.cc:1204
#, c-format
msgid "local symbol %u has bad shndx %u"
msgstr "lokal simbol %u memiliki shndx buruk %u"
-#: i386.cc:1134 powerpc.cc:1223 sparc.cc:1871 x86_64.cc:1244 x86_64.cc:1536
+#: i386.cc:1991
+msgid "both SUN and GNU model TLS relocations"
+msgstr "baik model relokasi TLS SUN dan GNU"
+
+#: i386.cc:2730 x86_64.cc:2719
#, c-format
-msgid "%s: unsupported reloc %u against global symbol %s"
-msgstr "%s: tidak didukung relokasi %u terhadap simbol global %s"
+msgid "failed to match split-stack sequence at section %u offset %0zx"
+msgstr "failed to match split-stack sequence at section %u offset %0zx"
-#: i386.cc:1473
+#: icf.cc:616
#, c-format
-msgid "%s: unsupported RELA reloc section"
-msgstr "%s: tidak didukung daerah relokasi RELA"
+msgid "%s: ICF Converged after %u iteration(s)"
+msgstr "%s: ICF Converged after %u iteration(s)"
-#: i386.cc:1735 i386.cc:2429 powerpc.cc:1740 sparc.cc:2637 x86_64.cc:1859
-#: x86_64.cc:2435
+#: icf.cc:619
#, c-format
-msgid "unexpected reloc %u in object file"
-msgstr "tidak diduga relokasi %u dalam berkas objek"
+msgid "%s: ICF stopped after %u iteration(s)"
+msgstr "%s: ICF stopped after %u iteration(s)"
-#: i386.cc:1767 i386.cc:1846 i386.cc:1898 i386.cc:1929 i386.cc:1986
-#: powerpc.cc:1746 sparc.cc:2643 sparc.cc:2826 sparc.cc:2887 sparc.cc:2994
-#: x86_64.cc:1880 x86_64.cc:1963 x86_64.cc:2018 x86_64.cc:2043
+#: icf.cc:633
#, c-format
-msgid "unsupported reloc %u"
-msgstr "tidak diduga relokasi %u"
+msgid "Could not find symbol %s to unfold\n"
+msgstr "Could not find symbol %s to unfold\n"
-#: i386.cc:1906
-msgid "both SUN and GNU model TLS relocations"
-msgstr "baik model relokasi TLS SUN dan GNU"
+#: incremental.cc:242
+#, c-format
+msgid "the link might take longer: cannot perform incremental link: %s"
+msgstr "the link might take longer: cannot perform incremental link: %s"
+
+#: incremental.cc:302
+msgid "no incremental data from previous build"
+msgstr "no incremental data from previous build"
+
+#: incremental.cc:309 incremental.cc:332
+msgid "invalid incremental build data"
+msgstr "invalid incremental build data"
-#: i386.cc:2443
+#: incremental.cc:321
+msgid "different version of incremental build data"
+msgstr "different version of incremental build data"
+
+#: incremental.cc:338
+msgid "command line changed"
+msgstr "baris perintah berubah"
+
+#: incremental.cc:362
#, c-format
-msgid "unsupported reloc %u in object file"
-msgstr "tidak diduga relokasi %u dalam berkas objek"
+msgid "unsupported ELF machine number %d"
+msgstr "tidak didukung nomor mesin ELF %d"
+
+#: incremental.cc:387
+msgid "output is not an ELF file."
+msgstr "output is not an ELF file."
+
+#: incremental.cc:410
+msgid "unsupported file: 32-bit, big-endian"
+msgstr "berkas tidak didukung: 32-bit, big-endian"
+
+#: incremental.cc:419
+msgid "unsupported file: 32-bit, little-endian"
+msgstr "berkas tidak didukung: 32-bit, little-endian"
+
+#: incremental.cc:431
+msgid "unsupported file: 64-bit, big-endian"
+msgstr "berkas tidak didukung: 64-bit, big-endian"
-#: layout.cc:1511
+#: incremental.cc:440
+msgid "unsupported file: 64-bit, little-endian"
+msgstr "berkas tidak didukung: 64-bit, little-endian"
+
+#: layout.cc:1887
#, c-format
msgid "--build-id=uuid failed: could not open /dev/urandom: %s"
msgstr "--build-id=uuid gagal: tidak dapat membuka /dev/urandom: %s"
-#: layout.cc:1518
+#: layout.cc:1894
#, c-format
msgid "/dev/urandom: read failed: %s"
msgstr "/dev/urandom: pembacaan gagal: %s"
-#: layout.cc:1520
+#: layout.cc:1896
#, c-format
msgid "/dev/urandom: expected %zu bytes, got %zd bytes"
msgstr "/dev/urandom: tidak terduga %zu byte, diperoleh %zd byte"
-#: layout.cc:1542
+#: layout.cc:1918
#, c-format
msgid "--build-id argument '%s' not a valid hex number"
msgstr "--build-id argumen '%s' bukan sebuah nomor heksa yang valid"
-#: layout.cc:1548
+#: layout.cc:1924
#, c-format
msgid "unrecognized --build-id argument '%s'"
msgstr "tidak dikenal argumen --build-id '%s'"
-#: layout.cc:1866
+#: layout.cc:2337
#, c-format
msgid "load segment overlap [0x%llx -> 0x%llx] and [0x%llx -> 0x%llx]"
msgstr "daerah pemuatan saling tumpang tindih [0x%llx -> 0x%llx] dan [0x%llx -> 0x%llx]"
@@ -629,185 +774,162 @@ msgstr ""
"Mengabaikan daerah masukan\n"
"\n"
-#: merge.cc:449
+#: merge.cc:455
#, c-format
msgid "%s: %s merged constants size: %lu; input: %zu; output: %zu\n"
msgstr "%s: %s gabungan ukuran konstanta: %lu; masukan: %zu; keluaran: %zu\n"
-#: merge.cc:472
+#: merge.cc:478
msgid "mergeable string section length not multiple of character size"
msgstr "panjang daerah string dapat digabungkan bukan kelipatan dari besar karakter"
-#: merge.cc:488
-msgid "entry in mergeable string section not null terminated"
-msgstr "masukan dalam daerah string yang dapat digabungkan bukan diakhiri kosong"
+#: merge.cc:494
+#, c-format
+msgid "%s: last entry in mergeable string section '%s' not null terminated"
+msgstr "%s: masukan terakhir dalam daerah '%s' string yang dapat digabungkan bukan diakhiri kosong"
-#: merge.cc:605
+#: merge.cc:613
#, c-format
msgid "%s: %s input: %zu\n"
msgstr "%s: %s masukan: %zu\n"
-#: merge.h:289
+#: merge.h:300
msgid "** merge constants"
msgstr "** gabungan konstanta"
-#: merge.h:411
+#: merge.h:422
msgid "** merge strings"
msgstr "** gabungan strings"
-#: object.cc:73
+#: object.cc:75
msgid "missing SHT_SYMTAB_SHNDX section"
msgstr "hilang daerah SHT_SYMTAB_SHNDX"
-#: object.cc:117
+#: object.cc:119
#, c-format
msgid "symbol %u out of range for SHT_SYMTAB_SHNDX section"
msgstr "simbol %u diluar dari jangkauan untuk daerah SHT_SYMTAB_SHNDX"
-#: object.cc:124
+#: object.cc:126
#, c-format
msgid "extended index for symbol %u out of range: %u"
msgstr "indeks ekstensi untuk simbol %u diluar dari jangkauan: %u"
-#: object.cc:141
-#, c-format
-msgid "%s: unsupported ELF machine number %d"
-msgstr "%s: tidak didukung nomor mesin ELF %d"
-
-#: object.cc:159
+#: object.cc:148 object.cc:2331 output.cc:4052
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: object.cc:196
+#: object.cc:190
#, c-format
msgid "section name section has wrong type: %u"
msgstr "nama daerah nama memiliki tipe salah: %u"
-#: object.cc:459
+#: object.cc:546
#, c-format
msgid "invalid symbol table name index: %u"
msgstr "nama indeks tabel simbol tidak valid: %u"
-#: object.cc:465
+#: object.cc:552
#, c-format
msgid "symbol table name section has wrong type: %u"
msgstr "nama daerah tabel simbol memiliki tipe salah: %u"
-#: object.cc:554
+#: object.cc:641
#, c-format
msgid "section group %u info %u out of range"
msgstr "nama grup %u info %u diluar dari jangkauan"
-#: object.cc:573
+#: object.cc:660
#, c-format
msgid "symbol %u name offset %u out of range"
msgstr "simbol %u nama ofset %u diluar dari jangkauan"
-#: object.cc:591
+#: object.cc:678
#, c-format
msgid "symbol %u invalid section index %u"
msgstr "simbol %u tidak valid daerah indeks %u"
-#: object.cc:644
+#: object.cc:723
#, c-format
msgid "section %u in section group %u out of range"
msgstr "daerah %u dalam daerah grup %u diluar dari jangkauan"
-#: object.cc:652
+#: object.cc:731
#, c-format
msgid "invalid section group %u refers to earlier section %u"
msgstr "tidak valid daerah grup %u mereferensikan ke daerah sebelumnya %u"
-#: object.cc:827 reloc.cc:215 reloc.cc:723
+#: object.cc:1037 reloc.cc:271 reloc.cc:838
#, c-format
msgid "relocation section %u has bad info %u"
msgstr "relokasi daerah %u memiliki info %u buruk"
-#: object.cc:1080
+#: object.cc:1231
+#, c-format
+msgid "%s: removing unused section from '%s' in file '%s'"
+msgstr "%s: removing unused section from '%s' in file '%s'"
+
+#: object.cc:1257
+#, c-format
+msgid "%s: ICF folding section '%s' in file '%s'into '%s' in file '%s'"
+msgstr "%s: ICF folding section '%s' in file '%s'into '%s' in file '%s'"
+
+#: object.cc:1454
msgid "size of symbols is not multiple of symbol size"
msgstr "ukuran dari simbol bukan kelipatan dari ukuran simbol"
-#: object.cc:1187
+#: object.cc:1563
#, c-format
msgid "local symbol %u section name out of range: %u >= %u"
msgstr "simbol lokal %u nama daerah diluar dari jangkauan: %u >= %u"
-#: object.cc:1245
+#: object.cc:1652
#, c-format
msgid "unknown section index %u for local symbol %u"
msgstr "daerah indeks %u tidak diketahui untuk simbol lokal %u"
-#: object.cc:1254
+#: object.cc:1661
#, c-format
msgid "local symbol %u section index %u out of range"
msgstr "lokal simbol %u daerah indeks %u diluar dari daerah"
-#: object.cc:1619
-msgid "incompatible target"
-msgstr "target tidak kompatibel"
-
-#: object.cc:1816
+#: object.cc:2169
#, c-format
-msgid "%s: unsupported ELF file type %d"
-msgstr "%s: tipe berkas ELF %d tidak didukung"
-
-#: object.cc:1835 object.cc:1881 object.cc:1915
-#, c-format
-msgid "%s: ELF file too short"
-msgstr "%s: berkas ELF terlalu pendek"
-
-#: object.cc:1843
-#, c-format
-msgid "%s: invalid ELF version 0"
-msgstr "%s: versi ELF 0 tidak valid"
+msgid "%s is not supported but is required for %s in %s"
+msgstr "%s is not supported but is required for %s in %s"
-#: object.cc:1845
+#: object.cc:2273
#, c-format
-msgid "%s: unsupported ELF version %d"
-msgstr "%s: versi %d ELF tidak didukung"
-
-#: object.cc:1852
-#, c-format
-msgid "%s: invalid ELF class 0"
-msgstr "%s: ELF kelas 0 tidak valid"
-
-#: object.cc:1858
-#, c-format
-msgid "%s: unsupported ELF class %d"
-msgstr "%s: ELF kelas %d tidak didukung"
-
-#: object.cc:1865
-#, c-format
-msgid "%s: invalid ELF data encoding"
-msgstr "%s: pengkodean data ELF tidak valid"
+msgid "%s: unsupported ELF machine number %d"
+msgstr "%s: tidak didukung nomor mesin ELF %d"
-#: object.cc:1871
+#: object.cc:2283
#, c-format
-msgid "%s: unsupported ELF data encoding %d"
-msgstr "%s: pengkodean data ELF %d tidak didukung"
+msgid "%s: incompatible target"
+msgstr "%s: target tidak kompatibel"
-#: object.cc:1891
+#: object.cc:2347 plugin.cc:1019
#, c-format
msgid "%s: not configured to support 32-bit big-endian object"
msgstr "%s: tidak dikonfigurasikan untuk mendukung objek 32-bit big-endian"
-#: object.cc:1904
+#: object.cc:2363 plugin.cc:1028
#, c-format
msgid "%s: not configured to support 32-bit little-endian object"
msgstr "%s: tidak dikonfigurasikan untuk mendukung objek 32-bit little-endian"
-#: object.cc:1925
+#: object.cc:2382 plugin.cc:1040
#, c-format
msgid "%s: not configured to support 64-bit big-endian object"
msgstr "%s: tidak dikonfigurasikan untuk mendukung objek 64-bit big-endian"
-#: object.cc:1938
+#: object.cc:2398 plugin.cc:1049
#, c-format
msgid "%s: not configured to support 64-bit little-endian object"
msgstr "%s: tidak dikonfigurasikan untuk mendukung objek 64-bit little-endian"
-#: options.cc:142
+#: options.cc:156
#, c-format
msgid ""
"Usage: %s [options] file...\n"
@@ -818,1013 +940,1272 @@ msgstr ""
#. config.guess and libtool.m4 look in ld --help output for the
#. string "supported targets".
-#: options.cc:150
+#: options.cc:164
#, c-format
msgid "%s: supported targets:"
msgstr "%s: target yang didukung:"
-#: options.cc:162
+#: options.cc:176
#, c-format
msgid "Report bugs to %s\n"
msgstr "Laporkan bugs ke %s\n"
-#: options.cc:179 options.cc:189
+#: options.cc:193 options.cc:203 options.cc:213
#, c-format
msgid "%s: invalid option value (expected an integer): %s"
msgstr "%s: nilai pilihan tidak valid (diduga sebuah bilangan bulat): %s"
-#: options.cc:199
+#: options.cc:223
#, c-format
msgid "%s: invalid option value (expected a floating point number): %s"
msgstr "%s: nilai pilihan tidak valid (diduga sebuah bilangan pecahan): %s"
-#: options.cc:208
+#: options.cc:232
#, c-format
msgid "%s: must take a non-empty argument"
msgstr "%s: harus mengambil sebuah argumen tidak kosong"
-#: options.cc:249
+#: options.cc:273
#, c-format
msgid "%s: must take one of the following arguments: %s"
msgstr "%s: harus mengambil salah satu dari argumen berikut: %s"
-#: options.cc:275
+#: options.cc:300
#, c-format
msgid " Supported targets:\n"
msgstr " Target yang didukung:\n"
-#: options.cc:329
+#: options.cc:409
#, c-format
msgid "unable to parse script file %s"
msgstr "tidak dapat mengambil berkas script %s"
-#: options.cc:337
+#: options.cc:417
#, c-format
msgid "unable to parse version script file %s"
msgstr "tidak dapat mengambil berkas script versi %s"
-#: options.cc:363
+#: options.cc:425
+#, c-format
+msgid "unable to parse dynamic-list script file %s"
+msgstr "tidak dapat mengambil berkas script %s"
+
+#: options.cc:522
+#, c-format
+msgid "format '%s' not supported; treating as elf (supported formats: elf, binary)"
+msgstr "format '%s' tidak didukung; memperlakukan sebagai elf (format yang didukung: elf, binari)"
+
+#: options.cc:538
#, c-format
msgid "%s: use the --help option for usage information\n"
msgstr "%s: gunakan pilihan --help untuk informasi penggunaan\n"
-#: options.cc:372
+#: options.cc:547
#, c-format
msgid "%s: %s: %s\n"
msgstr "%s: %s: %s\n"
-#: options.cc:393
-#, c-format
-msgid "format '%s' not supported; treating as elf (supported formats: elf, binary)"
-msgstr "format '%s' tidak didukung; memperlakukan sebagai elf (format yang didukung: elf, binari)"
-
-#: options.cc:499
+#: options.cc:651
msgid "unexpected argument"
msgstr "argumen tidak diduga"
-#: options.cc:512 options.cc:573
+#: options.cc:664 options.cc:725
msgid "missing argument"
msgstr "hilang argumen"
-#: options.cc:584
+#: options.cc:736
msgid "unknown -z option"
msgstr "pilihan -z tidak diketahui"
-#: options.cc:727
+#: options.cc:935
#, c-format
msgid "ignoring --threads: %s was compiled without thread support"
msgstr "mengabaikan --threads: %s telah dikompilasi tanpa dukungan thread"
-#: options.cc:734
+#: options.cc:942
#, c-format
msgid "ignoring --thread-count: %s was compiled without thread support"
msgstr "mengabaikan --thread-count: %s telah dikompilasi tanpa bantuah thread"
-#: options.cc:776
+#: options.cc:981
+#, c-format
+msgid "unable to open -retain-symbols-file file %s: %s"
+msgstr "tidak dapat membuka -retain-symbols-file berkas %s: %s"
+
+#: options.cc:1003
+msgid "-shared and -static are incompatible"
+msgstr "-shared dan -static tidak kompatibel"
+
+#: options.cc:1005
+msgid "-shared and -pie are incompatible"
+msgstr "-shared dan -pie tidak kompatibel"
+
+#: options.cc:1008
msgid "-shared and -r are incompatible"
msgstr "-shared dan -r tidak kompatibel"
-#: options.cc:780
-msgid "binary output format not compatible with -shared or -r"
-msgstr "format keluaran binari tidak kompatibel dengan -shared atau -r"
+#: options.cc:1010
+msgid "-pie and -r are incompatible"
+msgstr "-pie dan -r tidak kompatibel"
+
+#: options.cc:1014
+msgid "-retain-symbols-file does not yet work with -r"
+msgstr "-retain-symbols-file does not yet work with -r"
-#: options.cc:785
+#: options.cc:1020
+msgid "binary output format not compatible with -shared or -pie or -r"
+msgstr "format keluaran binari tidak kompatibel dengan -shared atau -pie atau -r"
+
+#: options.cc:1026
#, c-format
msgid "--hash-bucket-empty-fraction value %g out of range [0.0, 1.0)"
msgstr "nilai --hash-bucket-empty-fraction %g diluar dari jangkauan [0.0, 1.0]"
-#: options.cc:852
+#: options.cc:1031
+msgid "Options --incremental-changed, --incremental-unchanged, --incremental-unknown require the use of --incremental"
+msgstr "Options --incremental-changed, --incremental-unchanged, --incremental-unknown require the use of --incremental"
+
+#: options.cc:1097
msgid "May not nest groups"
msgstr "Mungkin bukan grups nest"
-#: options.cc:864
+#: options.cc:1109
msgid "Group end without group start"
msgstr "Grup berakhir tanpa awal grup"
#. I guess it's neither a long option nor a short option.
-#: options.cc:922
+#: options.cc:1174
msgid "unknown option"
msgstr "pilihan tidak diketahui"
-#: options.cc:948
+#: options.cc:1201
#, c-format
msgid "%s: missing group end\n"
msgstr "%s: hilang grup akhir\n"
-#: options.h:536
+#: options.h:571
msgid "Report usage information"
msgstr "Laporan informasi penggunaan"
-#: options.h:538
+#: options.h:573
msgid "Report version information"
msgstr "Laporan informasi versi"
-#: options.h:540
+#: options.h:575
msgid "Report version and target information"
msgstr "Laporan versi dan informasi target"
-#: options.h:549
+#: options.h:584 options.h:635
+msgid "Not supported"
+msgstr "Not supported"
+
+#: options.h:585 options.h:636
+msgid "Do not copy DT_NEEDED tags from shared libraries"
+msgstr "Jangan salin DT_NEEDED tags dari perpustakaan terbagi"
+
+#: options.h:588
msgid "Allow unresolved references in shared libraries"
msgstr "Ijinkan referensi tidak terselesaikan dalam perpustakaan terbagi"
-#: options.h:550
+#: options.h:589
msgid "Do not allow unresolved references in shared libraries"
msgstr "Jangan ijinkan referensi tidak terselesaikan dalam perpustakaan terbagi"
-#: options.h:553
-msgid "Only set DT_NEEDED for dynamic libs if used"
-msgstr "Hanya set DT_NEEDED untuk libs dinamis jika digunakan"
+#: options.h:592
+msgid "Only set DT_NEEDED for shared libraries if used"
+msgstr "Hanya set DT_NEEDED untuk libs terbagi jika digunakan"
-#: options.h:554
-msgid "Always DT_NEEDED for dynamic libs"
-msgstr "Selalu DT_NEEDED untuk libs dinamis"
+#: options.h:593
+msgid "Always DT_NEEDED for shared libraries"
+msgstr "Selalu DT_NEEDED untuk libs terbagi"
-#: options.h:561
+#: options.h:600
msgid "Set input format"
msgstr "Set format masukan"
-#: options.h:564
+#: options.h:603
msgid "-l searches for shared libraries"
msgstr "-l mencari untuk perpustakaan terbagi"
-#: options.h:566
+#: options.h:605
msgid "-l does not search for shared libraries"
msgstr "-l tidak mencari untuk perpustakaan terbagi"
-#: options.h:570
+#: options.h:609
msgid "Bind defined symbols locally"
msgstr "Ikat simbol terdefinisi secara lokal"
-#: options.h:573
+#: options.h:612
msgid "Bind defined function symbols locally"
msgstr "Ikan simbol fungsi terdefinisi secara lokal"
-#: options.h:576
+#: options.h:615
msgid "Generate build ID note"
msgstr "Buat catatan identitas pembuatan"
-#: options.h:577 options.h:612
+#: options.h:616 options.h:655
msgid "[=STYLE]"
msgstr "[=GAYA]"
-#: options.h:580
+#: options.h:619
msgid "Check segment addresses for overlaps (default)"
msgstr "Periksa daerah alamat untuk tumpang tindih (baku)"
-#: options.h:581
+#: options.h:620
msgid "Do not check segment addresses for overlaps"
msgstr "Jangan periksa daerah alamat untuk tumpang tindih"
-#: options.h:585 options.h:590
+#: options.h:624 options.h:629
msgid "Compress .debug_* sections in the output file"
msgstr "Kompress .debug_* daerah dalam berkas keluaran"
-#: options.h:591
+#: options.h:630
msgid "[none]"
msgstr "[kosong]"
-#: options.h:596
+#: options.h:639
msgid "Define common symbols"
msgstr "Definisikan simbol umum"
-#: options.h:597
+#: options.h:640
msgid "Do not define common symbols"
msgstr "Jangan definisikan simbol umum"
-#: options.h:599 options.h:601
+#: options.h:642 options.h:644
msgid "Alias for -d"
msgstr "Alias untuk -d"
-#: options.h:604
+#: options.h:647
msgid "Turn on debugging"
msgstr "Aktifkan penelusuran"
-#: options.h:605
+#: options.h:648
msgid "[all,files,script,task][,...]"
msgstr "[semua,berkas,skript,tugas][,...]"
-#: options.h:608
+#: options.h:651
msgid "Define a symbol"
msgstr "Definisikan sebuah simbol"
-#: options.h:608
+#: options.h:651
msgid "SYMBOL=EXPRESSION"
msgstr "SIMBOL=EKSPRESI"
-#: options.h:611
+#: options.h:654
msgid "Demangle C++ symbols in log messages"
msgstr "Demangle simbol C++ dalam pesan pencatatan"
-#: options.h:615
+#: options.h:658
msgid "Do not demangle C++ symbols in log messages"
msgstr "Jangan demangle simbol C++ dalam pesan pencatatan"
-#: options.h:619
+#: options.h:662
msgid "Try to detect violations of the One Definition Rule"
msgstr "Coba detekasi pelanggaran dalam Definisi Satu Aturan"
-#: options.h:623
+#: options.h:666
+msgid "Delete all temporary local symbols"
+msgstr "Delete all temporary local symbols"
+
+#: options.h:669
+msgid "Add data symbols to dynamic symbols"
+msgstr "Tambahkan data simbol ke simbol dinamis"
+
+#: options.h:672
+msgid "Add C++ operator new/delete to dynamic symbols"
+msgstr "Add C++ operator new/delete to dynamic symbols"
+
+#: options.h:675
+msgid "Add C++ typeinfo to dynamic symbols"
+msgstr "Tambahkan C++ typeinfo ke simbol dinamis"
+
+#: options.h:678
+msgid "Read a list of dynamic symbols"
+msgstr "Baca daftar dari simbol dinamis"
+
+#: options.h:678 options.h:732 options.h:766 options.h:893 options.h:921
+msgid "FILE"
+msgstr "BERKAS"
+
+#: options.h:681
msgid "Set program start address"
msgstr "Set alamat awal aplikasi"
-#: options.h:623 options.h:766 options.h:768 options.h:770
+#: options.h:681 options.h:908 options.h:910 options.h:912
msgid "ADDRESS"
msgstr "ALAMAT"
-#: options.h:626
+#: options.h:684
+msgid "Exclude libraries from automatic export"
+msgstr "Exclude libraries from automatic export"
+
+#: options.h:688
msgid "Export all dynamic symbols"
msgstr "Ekpor seluruh simbol dinamis"
-#: options.h:629
+#: options.h:689
+msgid "Do not export all dynamic symbols (default)"
+msgstr "Jangan Ekpor seluruh simbol dinamis (baku)"
+
+#: options.h:692
msgid "Create exception frame header"
msgstr "Buat pengecualian lembar kepala"
-#: options.h:632
+#: options.h:695
msgid "Treat warnings as errors"
msgstr "Perlakukan peringatan sebagai kesalahan"
-#: options.h:633
+#: options.h:696
msgid "Do not treat warnings as errors"
msgstr "Jangan perlakukan peringatan sebagai kesalahan"
-#: options.h:636
+#: options.h:699
+msgid "Call SYMBOL at unload-time"
+msgstr "Call SYMBOL at unload-time"
+
+#: options.h:699 options.h:729 options.h:873 options.h:915 options.h:936
+#: options.h:939
+msgid "SYMBOL"
+msgstr "SIMBOL"
+
+#: options.h:702
msgid "Set shared library name"
msgstr "Set nama perpustakaan terbagi"
-#: options.h:636 options.h:696
+#: options.h:702 options.h:792
msgid "FILENAME"
msgstr "NAMA BERKAS"
-#: options.h:639
+#: options.h:705
msgid "Min fraction of empty buckets in dynamic hash"
msgstr "Bagian minimal dari tempat kosong dalam hash dinamis"
-#: options.h:640
+#: options.h:706
msgid "FRACTION"
msgstr "BAGIAN"
-#: options.h:643
+#: options.h:709
msgid "Dynamic hash style"
msgstr "Gaya hash dinamis"
-#: options.h:643
+#: options.h:709
msgid "[sysv,gnu,both]"
msgstr "[sysv,gnu,keduanya]"
-#: options.h:647
+#: options.h:713
msgid "Set dynamic linker path"
msgstr "Set jalur penghubung dinamis"
-#: options.h:647
+#: options.h:713
msgid "PROGRAM"
msgstr "APLIKASI"
-#: options.h:650
+#: options.h:716
+msgid "Work in progress; do not use"
+msgstr "Work in progress; do not use"
+
+#: options.h:717
+msgid "Do a full build"
+msgstr "Do a full build"
+
+#: options.h:720
+msgid "Assume files changed"
+msgstr "Assume files changed"
+
+#: options.h:723
+msgid "Assume files didn't change"
+msgstr "Assume files didn't change"
+
+#: options.h:726
+msgid "Use timestamps to check files (default)"
+msgstr "Use timestamps to check files (default)"
+
+#: options.h:729
+msgid "Call SYMBOL at load-time"
+msgstr "Call SYMBOL at load-time"
+
+#: options.h:732
msgid "Read only symbol values from FILE"
msgstr "Hanya baca nilai simbol dari BERKAS"
-#: options.h:650 options.h:684 options.h:751 options.h:779
-msgid "FILE"
-msgstr "BERKAS"
-
-#: options.h:653
+#: options.h:735
msgid "Search for library LIBNAME"
msgstr "Cari untuk perpustakaan LIBNAME"
-#: options.h:653
+#: options.h:735
msgid "LIBNAME"
msgstr "LIBNAME"
-#: options.h:656
+#: options.h:738
msgid "Add directory to search path"
msgstr "Tambahkan direktori ke jalur pencarian"
-#: options.h:656 options.h:714 options.h:717 options.h:721 options.h:745
+#: options.h:738 options.h:813 options.h:816 options.h:820 options.h:887
msgid "DIR"
msgstr "DIR"
-#: options.h:659
+#: options.h:741
msgid "Ignored for compatibility"
msgstr "Abaikan untuk kompabilitas"
-#: options.h:659
+#: options.h:741
msgid "EMULATION"
msgstr "EMULASI"
-#: options.h:662
+#: options.h:744
msgid "Write map file on standard output"
msgstr "Tulis berkas peta di standar keluaran"
-#: options.h:663
+#: options.h:745
msgid "Write map file"
msgstr "Tulis berkas peta"
-#: options.h:664
+#: options.h:746
msgid "MAPFILENAME"
msgstr "NAMABERKASPETA"
-#: options.h:667
+#: options.h:749
msgid "Do not page align data"
msgstr "Jangan sesuaikan data page"
-#: options.h:669
+#: options.h:751
msgid "Do not page align data, do not make text readonly"
msgstr "Jangan sesuaikan data page, jangan buat teks baca-saja"
-#: options.h:670
+#: options.h:752
msgid "Page align data, make text readonly"
msgstr "Sesuaikan data halaman, buat teks baca saja"
-#: options.h:673
+#: options.h:755
msgid "Enable use of DT_RUNPATH and DT_FLAGS"
msgstr "Aktifkan penggunaan DT_RUNPATH dan DT_FLAGS"
-#: options.h:674
+#: options.h:756
msgid "Disable use of DT_RUNPATH and DT_FLAGS"
msgstr "Nonaktifkan penggunaan DT_RUNPATH dan DT_FLAGS"
-#: options.h:677
+#: options.h:759
msgid "Create an output file even if errors occur"
msgstr "Buat sebuah berkas keluaran walaupun terjadi kesalahan"
-#: options.h:680 options.h:808
+#: options.h:762 options.h:958
msgid "Report undefined symbols (even with --shared)"
msgstr "Laporkan simbol tidak terdefinisi (walaupun dengan --shared)"
-#: options.h:684
+#: options.h:766
msgid "Set output file name"
msgstr "Set nama berkas keluaran"
-#: options.h:687
+#: options.h:769
msgid "Optimize output file size"
msgstr "Optimasi besar berkas keluaran"
-#: options.h:687
+#: options.h:769
msgid "LEVEL"
msgstr "TINGKAT"
-#: options.h:690
+#: options.h:772
msgid "Set output format"
msgstr "Set format keluaran"
-#: options.h:690
+#: options.h:772
msgid "[binary]"
msgstr "[binari]"
-#: options.h:693
+#: options.h:775 options.h:777
+msgid "Create a position independent executable"
+msgstr "Create a position independent executable"
+
+#: options.h:782
+msgid "Load a plugin library"
+msgstr "Load a plugin library"
+
+#: options.h:782
+msgid "PLUGIN"
+msgstr "PLUGIN"
+
+#: options.h:784
+msgid "Pass an option to the plugin"
+msgstr "Pass an option to the plugin"
+
+#: options.h:784
+msgid "OPTION"
+msgstr "OPTION"
+
+#: options.h:788
msgid "Preread archive symbols when multi-threaded"
msgstr "Baca terlebih dahulu kumpulan simbol ketika multi-threaded"
-#: options.h:695
+#: options.h:791
msgid "Print symbols defined and used for each input"
msgstr "Tampilkan simbol didefinisikan dan digunakan untuk setiap masukan"
-#: options.h:699
+#: options.h:795
msgid "Ignored for SVR4 compatibility"
msgstr "Abaikan untuk kompabilitas SVR4"
-#: options.h:702
+#: options.h:798
msgid "Generate relocations in output"
msgstr "Buat relokasi dalam keluaran"
-#: options.h:705
+#: options.h:801
msgid "Generate relocatable output"
msgstr "Buat relokasi keluaran"
-#: options.h:708
+#: options.h:804
msgid "Relax branches on certain targets"
msgstr "Percabangan relaks dalam beberapa target"
-#: options.h:714 options.h:717
+#: options.h:807
+msgid "keep only symbols listed in this file"
+msgstr "keep only symbols listed in this file"
+
+#: options.h:807
+msgid "[file]"
+msgstr "[file]"
+
+#: options.h:813 options.h:816
msgid "Add DIR to runtime search path"
msgstr "Tambahkan DIR ke jalur pencarian waktu jalan"
-#: options.h:720
+#: options.h:819
msgid "Add DIR to link time shared library search path"
msgstr "Tambahkan DIR ke jalur pencarian waktu penyambungan perpustakaan terbagi"
-#: options.h:724
+#: options.h:823
msgid "Strip all symbols"
msgstr "Hapus seluruh simbol"
-#: options.h:726
+#: options.h:825
msgid "Strip debugging information"
msgstr "Hapus informasi penelusuran"
-#: options.h:728
+#: options.h:827
msgid "Emit only debug line number information"
msgstr "Hanya keluarkan informasi nomor baris penelusuran"
-#: options.h:730
+#: options.h:829
msgid "Strip debug symbols that are unused by gdb (at least versions <= 6.7)"
msgstr "Hapus simbol penelusuran yang tidak digunakan oleh gdb (paling tidak versi < 6.7)"
-#: options.h:734
+#: options.h:832
+msgid "Strip LTO intermediate code sections"
+msgstr "Strip LTO intermediate code sections"
+
+#: options.h:835
+msgid "(ARM only) The maximum distance from instructions in a group of sections to their stubs. Negative values mean stubs are always after the group. 1 means using default size.\n"
+msgstr "(ARM only) The maximum distance from instructions in a group of sections to their stubs. Negative values mean stubs are always after the group. 1 means using default size.\n"
+
+#: options.h:838 options.h:852 options.h:956 options.h:975
+msgid "SIZE"
+msgstr "BESAR"
+
+#: options.h:841
+msgid "Use less memory and more disk I/O (included only for compatibility with GNU ld)"
+msgstr "Use less memory and more disk I/O (included only for compatibility with GNU ld)"
+
+#: options.h:845 options.h:848
msgid "Generate shared library"
msgstr "Buat perpustakaan terbagi"
-#: options.h:739
+#: options.h:851
+msgid "Stack size when -fsplit-stack function calls non-split"
+msgstr "Stack size when -fsplit-stack function calls non-split"
+
+#: options.h:857
msgid "Do not link against shared libraries"
msgstr "Jangan sambungkan terhadap perpustakaan terbagi"
-#: options.h:742
+#: options.h:860
+msgid "Identical Code Folding. '--icf=safe' folds only ctors and dtors."
+msgstr "Identical Code Folding. '--icf=safe' folds only ctors and dtors."
+
+#: options.h:866
+msgid "Number of iterations of ICF (default 2)"
+msgstr "Number of iterations of ICF (default 2)"
+
+#: options.h:866 options.h:899 options.h:901 options.h:903 options.h:905
+msgid "COUNT"
+msgstr "JUMLAH"
+
+#: options.h:869
+msgid "List folded identical sections on stderr"
+msgstr "List folded identical sections on stderr"
+
+#: options.h:870
+msgid "Do not list folded identical sections"
+msgstr "Do not list folded identical sections"
+
+#: options.h:873
+msgid "Do not fold this symbol during ICF"
+msgstr "Do not fold this symbol during ICF"
+
+#: options.h:876
+msgid "Remove unused sections"
+msgstr "Remove unused sections"
+
+#: options.h:877
+msgid "Don't remove unused sections (default)"
+msgstr "Don't remove unused sections (default)"
+
+#: options.h:880
+msgid "List removed unused sections on stderr"
+msgstr "List removed unused sections on stderr"
+
+#: options.h:881
+msgid "Do not list removed unused sections"
+msgstr "Do not list removed unused sections"
+
+#: options.h:884
msgid "Print resource usage statistics"
msgstr "Tampilkan statistik penggunaan sumber daya"
-#: options.h:745
+#: options.h:887
msgid "Set target system root directory"
msgstr "Set target direktori root sistem"
-#: options.h:748
+#: options.h:890
msgid "Print the name of each input file"
msgstr "Tampilkan nama dari setiap berkas masukan"
-#: options.h:751
+#: options.h:893
msgid "Read linker script"
msgstr "Baca script penyambung"
-#: options.h:754
+#: options.h:896
msgid "Run the linker multi-threaded"
msgstr "Jalankan penyambung multi-threaded"
-#: options.h:755
+#: options.h:897
msgid "Do not run the linker multi-threaded"
msgstr "Jangan jalankan penyambung multi-threaded"
-#: options.h:757
+#: options.h:899
msgid "Number of threads to use"
msgstr "Jumlah dari thread yang digunakan"
-#: options.h:757 options.h:759 options.h:761 options.h:763
-msgid "COUNT"
-msgstr "JUMLAH"
-
-#: options.h:759
+#: options.h:901
msgid "Number of threads to use in initial pass"
msgstr "Jumlah dari thread yang digunakan dalam tahap awal"
-#: options.h:761
+#: options.h:903
msgid "Number of threads to use in middle pass"
msgstr "Jumlah thread yang digunakan dalam tahap perantara"
-#: options.h:763
+#: options.h:905
msgid "Number of threads to use in final pass"
msgstr "Jumlah dari thread yang digunakan dalam tahap akhir"
-#: options.h:766
+#: options.h:908
msgid "Set the address of the bss segment"
msgstr "Set alamat dari bagian bss"
-#: options.h:768
+#: options.h:910
msgid "Set the address of the data segment"
msgstr "Set alamat dari bagian data"
-#: options.h:770
+#: options.h:912
msgid "Set the address of the text segment"
msgstr "Set alamat dari bagian teks"
-#: options.h:773
+#: options.h:915
msgid "Create undefined reference to SYMBOL"
msgstr "Buat referensi tidak terdefinisi ke SIMBOL"
-#: options.h:773 options.h:786 options.h:789
-msgid "SYMBOL"
-msgstr "SIMBOL"
-
-#: options.h:776
+#: options.h:918
msgid "Synonym for --debug=files"
msgstr "Sinonim untuk --debug=berkas"
-#: options.h:779
+#: options.h:921
msgid "Read version script"
msgstr "Baca versi script"
-#: options.h:782
+#: options.h:924
+msgid "Warn about duplicate common symbols"
+msgstr "Peringatkan tentang duplikasi simbol umum"
+
+#: options.h:925
+msgid "Do not warn about duplicate common symbols (default)"
+msgstr "Jangan peringatkan tentang duplikasi simbol umum (baku)"
+
+#: options.h:928
+msgid "Warn when skipping an incompatible library"
+msgstr "Warn when skipping an incompatible library"
+
+#: options.h:929
+msgid "Don't warn when skipping an incompatible library"
+msgstr "Don't warn when skipping an incompatible library"
+
+#: options.h:932
msgid "Include all archive contents"
msgstr "Masukan seluruh isi kumpulan"
-#: options.h:783
+#: options.h:933
msgid "Include only needed archive contents"
msgstr "Masukan hanya isi kumpulan yang dibutuhkan"
-#: options.h:786
+#: options.h:936
msgid "Use wrapper functions for SYMBOL"
msgstr "Gunakan wrapper fungsi untuk SIMBOL"
-#: options.h:789
+#: options.h:939
msgid "Trace references to symbol"
msgstr "Telusuri referensi ke simbol"
-#: options.h:792
+#: options.h:942
msgid "Default search path for Solaris compatibility"
msgstr "Jalur pencarian baku untuk kompabilitas solaris"
-#: options.h:793
+#: options.h:943
msgid "PATH"
msgstr "JALUR"
-#: options.h:796
+#: options.h:946
msgid "Start a library search group"
msgstr "Awal sebuah perpustakaan grup pencarian"
-#: options.h:798
+#: options.h:948
msgid "End a library search group"
msgstr "Akhir sebuah perpustakaan grup pencarian"
-#: options.h:803
+#: options.h:953
msgid "Sort dynamic relocs"
msgstr "Urutkan relokasi dinamis"
-#: options.h:804
+#: options.h:954
msgid "Do not sort dynamic relocs"
msgstr "Jangan urutkan relokasi dinamis"
-#: options.h:806
+#: options.h:956
msgid "Set common page size to SIZE"
msgstr "Set ukuran halaman umum ke BESAR"
-#: options.h:806 options.h:813
-msgid "SIZE"
-msgstr "BESAR"
-
-#: options.h:811
+#: options.h:961
msgid "Mark output as requiring executable stack"
msgstr "Tandai keluaran sebagai stack eksekusi yang dibutuhkan"
-#: options.h:813
-msgid "Set maximum page size to SIZE"
-msgstr "Set ukuran maksimal halaman ke UKURAN"
-
-#: options.h:815
-msgid "Mark output as not requiring executable stack"
-msgstr "Tandai keluaran sebagai tidak membutuhkan stack eksekusi"
-
-#: options.h:817
+#: options.h:963
msgid "Mark DSO to be initialized first at runtime"
msgstr "Tandai DSO untuk diinisialisasi terlebih dahulu di waktu jalan"
-#: options.h:820
+#: options.h:966
msgid "Mark object to interpose all DSOs but executable"
msgstr "Tandai objek untuk interpose seluruh DSO tetapi eksekusi"
-#: options.h:823
+#: options.h:969
+msgid "Mark object for lazy runtime binding (default)"
+msgstr "Mark object for lazy runtime binding (default)"
+
+#: options.h:972
msgid "Mark object requiring immediate process"
msgstr "Tandai objek membutuhkan proses perantara"
-#: options.h:826
+#: options.h:975
+msgid "Set maximum page size to SIZE"
+msgstr "Set ukuran maksimal halaman ke UKURAN"
+
+#: options.h:978
+msgid "Do not create copy relocs"
+msgstr "Jangan buat salinan relokasi"
+
+#: options.h:980
msgid "Mark object not to use default search paths"
msgstr "Tandai objek tidak menggunakan jalur pencarian baku"
-#: options.h:829
+#: options.h:983
msgid "Mark DSO non-deletable at runtime"
msgstr "Tandai DSO tidak dapat dihapus di waktu jalan"
-#: options.h:832
+#: options.h:986
msgid "Mark DSO not available to dlopen"
msgstr "Tandai DSO tidak tersedia di dlopen"
-#: options.h:835
+#: options.h:989
msgid "Mark DSO not available to dldump"
msgstr "Tandai DSO tidak tersedia ke dldump"
-#: options.h:838
+#: options.h:992
+msgid "Mark output as not requiring executable stack"
+msgstr "Tandai keluaran sebagai tidak membutuhkan stack eksekusi"
+
+#: options.h:994
+msgid "Mark object for immediate function binding"
+msgstr "Tandai objek untuk fungsi proses langsung"
+
+#: options.h:997
+msgid "Mark DSO to indicate that needs immediate $ORIGIN processing at runtime"
+msgstr "Mark DSO to indicate that needs immediate $ORIGIN processing at runtime"
+
+#: options.h:1000
msgid "Where possible mark variables read-only after relocation"
msgstr "Dimana memungkinkan tanda variabel baca-saja setelah relokasi"
-#: options.h:839
+#: options.h:1001
msgid "Don't mark variables read-only after relocation"
msgstr "Jangan tandai variabel baca-saja setelah relokasi"
-#: output.cc:1098
+#: output.cc:1132
msgid "section group retained but group element discarded"
msgstr "daerah grup dijaga tetapi elemen grup diabaikan"
-#: output.cc:1800
+#: output.cc:1860
#, c-format
msgid "invalid alignment %lu for section \"%s\""
msgstr "alignment %lu tidak valid untuk daerah \"%s\""
-#: output.cc:3159
+#: output.cc:3573
+#, c-format
+msgid "dot moves backward in linker script from 0x%llx to 0x%llx"
+msgstr "dot moves backward in linker script from 0x%llx to 0x%llx"
+
+#: output.cc:3576
+#, c-format
+msgid "address of section '%s' moves backward from 0x%llx to 0x%llx"
+msgstr "address of section '%s' moves backward from 0x%llx to 0x%llx"
+
+#: output.cc:3755
#, c-format
msgid "nobits section %s may not precede progbits section %s in same segment"
msgstr "daerah nobits %s tidak boleh mengawali daerah progbits %s dalam daerah yang sama"
-#: output.cc:3329
+#: output.cc:3907 output.cc:3975
#, c-format
msgid "%s: open: %s"
msgstr "%s: buka: %s"
-#: output.cc:3350
+#: output.cc:3996
#, c-format
msgid "%s: mremap: %s"
msgstr "%s: mremap: %s"
-#: output.cc:3387
-#, c-format
-msgid "%s: lseek: %s"
-msgstr "%s: lseek: %s"
-
-#: output.cc:3390 output.cc:3427
-#, c-format
-msgid "%s: write: %s"
-msgstr "%s: tulis: %s"
-
-#: output.cc:3398
+#: output.cc:4005
#, c-format
msgid "%s: mmap: %s"
msgstr "%s: mmap: %s"
-#: output.cc:3408
+#: output.cc:4085
+#, c-format
+msgid "%s: mmap: failed to allocate %lu bytes for output file: %s"
+msgstr "%s: mmap: failed to allocate %lu bytes for output file: %s"
+
+#: output.cc:4096
#, c-format
msgid "%s: munmap: %s"
msgstr "%s: munmap: %s"
-#: output.cc:3425
+#: output.cc:4115
#, c-format
msgid "%s: write: unexpected 0 return-value"
msgstr "%s: tulis: tidak terduga 0 nilai-kembali"
-#: output.cc:3439
+#: output.cc:4117
+#, c-format
+msgid "%s: write: %s"
+msgstr "%s: tulis: %s"
+
+#: output.cc:4132
#, c-format
msgid "%s: close: %s"
msgstr "%s: tutup: %s"
-#: output.h:415
+#: output.h:520
msgid "** section headers"
msgstr "** daerah kepala"
-#: output.h:451
+#: output.h:565
msgid "** segment headers"
msgstr "** bagian kepala"
-#: output.h:490
+#: output.h:613
msgid "** file header"
msgstr "** berkas kepala"
-#: output.h:696
+#: output.h:833
msgid "** fill"
msgstr "** isi"
-#: output.h:850
+#: output.h:987
msgid "** string table"
msgstr "** tabel string"
-#: output.h:1161
+#: output.h:1300
msgid "** dynamic relocs"
msgstr "** relokasi dinamis"
-#: output.h:1162 output.h:1498
+#: output.h:1301 output.h:1637
msgid "** relocs"
msgstr "** relokasi"
-#: output.h:1523
+#: output.h:1662
msgid "** group"
msgstr "** grup"
-#: output.h:1630
+#: output.h:1774
msgid "** GOT"
msgstr "** GOT"
-#: output.h:1772
+#: output.h:1916
msgid "** dynamic"
msgstr "** dinamis"
-#: output.h:1890
+#: output.h:2039
msgid "** symtab xindex"
msgstr "** symtab xindex"
-#: parameters.cc:87
+#: parameters.cc:172
#, c-format
msgid "unrecognized output format %s"
msgstr "format keluaran tidak diketahui %s"
-#: powerpc.cc:1086 sparc.cc:1569 x86_64.cc:957
-msgid "requires unsupported dynamic reloc; recompile with -fPIC"
-msgstr "relokasi dinamis yang dibutuhkan tidak didukung; rekompilasi dengan -fPIC"
+#: plugin.cc:106
+#, c-format
+msgid "%s: could not load plugin library"
+msgstr "%s: could not load plugin library"
-#: powerpc.cc:1447 sparc.cc:2237 x86_64.cc:1561
+#: plugin.cc:116
+#, c-format
+msgid "%s: could not find onload entry point"
+msgstr "%s: could not find onload entry point"
+
+#: plugin.cc:426
+msgid "Input files added by plug-ins in --incremental mode not supported yet.\n"
+msgstr "Input files added by plug-ins in --incremental mode not supported yet.\n"
+
+#: powerpc.cc:1502 sparc.cc:2307 x86_64.cc:1632
#, c-format
msgid "%s: unsupported REL reloc section"
msgstr "%s: daerah relokasi REL tidak didukung"
-#: readsyms.cc:150
+#: readsyms.cc:191
#, c-format
msgid "%s: file is empty"
msgstr "%s: berkas kosong"
#. Here we have to handle any other input file types we need.
-#: readsyms.cc:471
+#: readsyms.cc:575
#, c-format
msgid "%s: not an object or archive"
msgstr "%s: bukan sebuah objek atau kumpulan"
-#: reduced_debug_output.cc:240
+#: reduced_debug_output.cc:236
msgid "Debug abbreviations extend beyond .debug_abbrev section; failed to reduce debug abbreviations"
msgstr "Kependekan debug melewati daerah .debug_abbrev; gagai untuk mengurangi kependekan penelusuran"
-#: reduced_debug_output.cc:326
+#: reduced_debug_output.cc:322
msgid "Extremely large compile unit in debug info; failed to reduce debug info"
msgstr "Ekstremely satuan kompilasi besar dalam informasi penelusuran; gagal untuk mengurangi informasi penelusuran"
-#: reduced_debug_output.cc:334
+#: reduced_debug_output.cc:330
msgid "Debug info extends beyond .debug_info section;failed to reduce debug info"
msgstr "Informasi penelusuran melewati daerah .debug_info; gagal untuk mengurangi informasi penelusuran"
-#: reduced_debug_output.cc:354 reduced_debug_output.cc:396
+#: reduced_debug_output.cc:350 reduced_debug_output.cc:392
msgid "Invalid DIE in debug info; failed to reduce debug info"
msgstr "Informasi debugu dalam DIE tidak valid; gagal untuk mengurangi informasi debug"
-#: reduced_debug_output.cc:377
+#: reduced_debug_output.cc:373
msgid "Debug info extends beyond .debug_info section; failed to reduce debug info"
msgstr "Informasi debug melewati daerah .debug_info; gagal mengurangi informasi penelusuran"
-#: reloc.cc:239 reloc.cc:743
+#: reloc.cc:297 reloc.cc:858
#, c-format
msgid "relocation section %u uses unexpected symbol table %u"
msgstr "daerah relokasi %u menggunakan tabel simbol tidak terduga %u"
-#: reloc.cc:254 reloc.cc:761
+#: reloc.cc:312 reloc.cc:875
#, c-format
msgid "unexpected entsize for reloc section %u: %lu != %u"
msgstr "tidak terduga entsize untuk daerah relokasi %u: %lu != %u"
-#: reloc.cc:263 reloc.cc:770
+#: reloc.cc:321 reloc.cc:884
#, c-format
msgid "reloc section %u size %lu uneven"
msgstr "daerah relokasi %u besar %lu tidak genap"
-#: reloc.cc:992
+#: reloc.cc:1203
+#, c-format
+msgid "could not convert call to '%s' to '%s'"
+msgstr "could not convert call to '%s' to '%s'"
+
+#: reloc.cc:1343
#, c-format
msgid "reloc section size %zu is not a multiple of reloc size %d\n"
msgstr "ukuran daerah relokasi %zu bukan kelipatan dari ukuran relokasi %d\n"
#. We should only see externally visible symbols in the symbol
#. table.
-#: resolve.cc:170
+#: resolve.cc:191
msgid "invalid STB_LOCAL symbol in external symbols"
msgstr "simbol STB_LOCAL tidak valid dalam simbol eksternal"
#. Any target which wants to handle STB_LOOS, etc., needs to
#. define a resolve method.
-#: resolve.cc:176
+#: resolve.cc:197
msgid "unsupported symbol binding"
msgstr "pengikatan simbol tidak diduga"
-#. FIXME: Do a better job of reporting locations.
-#: resolve.cc:367
+#. A dynamic object cannot reference a hidden or internal symbol
+#. defined in another object.
+#: resolve.cc:266
#, c-format
-msgid "%s: multiple definition of %s"
-msgstr "%s: definisi ganda dari %s"
+msgid "%s symbol '%s' in %s is referenced by DSO %s"
+msgstr "%s symbol '%s' in %s is referenced by DSO %s"
-#: resolve.cc:368 resolve.cc:373
-msgid "command line"
-msgstr "baris perintah"
+#: resolve.cc:326
+#, c-format
+msgid "common of '%s' overriding smaller common"
+msgstr "common of '%s' overriding smaller common"
+
+#: resolve.cc:331
+#, c-format
+msgid "common of '%s' overidden by larger common"
+msgstr "common of '%s' overidden by larger common"
+
+#: resolve.cc:336
+#, c-format
+msgid "multiple common of '%s'"
+msgstr "multiple common dari '%s'"
+
+#: resolve.cc:442
+#, c-format
+msgid "multiple definition of '%s'"
+msgstr "definisi ganda dari '%s'"
+
+#: resolve.cc:481
+#, c-format
+msgid "definition of '%s' overriding common"
+msgstr "definition of '%s' overriding common"
+
+#: resolve.cc:516
+#, c-format
+msgid "definition of '%s' overriding dynamic common definition"
+msgstr "definition of '%s' overriding dynamic common definition"
-#: resolve.cc:370
+#: resolve.cc:636
#, c-format
-msgid "%s: previous definition here"
-msgstr "%s: definisi sebelumnya disini"
+msgid "common '%s' overridden by previous definition"
+msgstr "common '%s' overridden oleh definisi sebelumnya"
+
+#: resolve.cc:766 resolve.cc:778
+msgid "command line"
+msgstr "baris perintah"
-#: script-sections.cc:432
+#: script-sections.cc:690
msgid "dot may not move backward"
msgstr "dot tidak boleh bergerak kebelakang"
-#: script-sections.cc:498
+#: script-sections.cc:757
msgid "** expression"
msgstr "** ekspresi"
-#: script-sections.cc:684
+#: script-sections.cc:941
msgid "fill value is not absolute"
msgstr "nilai isi tidak absolut"
-#: script-sections.cc:1693
+#: script-sections.cc:1913
#, c-format
msgid "alignment of section %s is not absolute"
msgstr "penyesuaian dari daerah %s tidak absolut"
-#: script-sections.cc:1737
+#: script-sections.cc:1957
#, c-format
msgid "subalign of section %s is not absolute"
msgstr "subalign dari daerah %s tidak absolut"
-#: script-sections.cc:1752
+#: script-sections.cc:1972
#, c-format
msgid "fill of section %s is not absolute"
msgstr "isi dari daerah %s tidak absolut"
-#: script-sections.cc:1828
+#: script-sections.cc:2048
msgid "SPECIAL constraints are not implemented"
msgstr "konstrain SPESIAL tidak terimplementasi"
-#: script-sections.cc:1870
+#: script-sections.cc:2090
msgid "mismatched definition for constrained sections"
msgstr "definisi tidak cocok untuk daerah konstrain"
-#: script-sections.cc:2395
+#: script-sections.cc:2634
msgid "DATA_SEGMENT_ALIGN may only appear once in a linker script"
msgstr "DATA_SEGMENT_ALIGN hanya mungkin muncul sekali dalam script linker"
-#: script-sections.cc:2406
+#: script-sections.cc:2649
msgid "DATA_SEGMENT_RELRO_END may only appear once in a linker script"
msgstr "DATA_SEGMENT_RELRO_END hanya mungkin muncul sekali dalam script linker"
-#: script-sections.cc:2411
+#: script-sections.cc:2654
msgid "DATA_SEGMENT_RELRO_END must follow DATA_SEGMENT_ALIGN"
msgstr "DATA_SEGMENT_RELRO_END harus mengikuti DATA_SEGMENT_ALIGN"
-#: script-sections.cc:2570
+#: script-sections.cc:2826
msgid "no matching section constraint"
msgstr "tidak ada kecocokan daerah konstrain"
-#: script-sections.cc:2890
+#: script-sections.cc:3151
msgid "TLS sections are not adjacent"
msgstr "daerah TLS tidak berurutan"
-#: script-sections.cc:3016
+#: script-sections.cc:3280
msgid "allocated section not in any segment"
msgstr "daerah yang dialokasikan tidka dalam bagian apapun"
-#: script-sections.cc:3048
+#: script-sections.cc:3309
#, c-format
msgid "no segment %s"
msgstr "bukan bagian %s"
-#: script-sections.cc:3058
+#: script-sections.cc:3323
msgid "section in two PT_LOAD segments"
msgstr "daerah dalam dua bagian PT_LOAD"
-#: script-sections.cc:3065
+#: script-sections.cc:3330
msgid "allocated section not in any PT_LOAD segment"
msgstr "daerah dialokasikan tidak dalam bagian PT_LOAD apapun"
-#: script-sections.cc:3093
+#: script-sections.cc:3358
msgid "may only specify load address for PT_LOAD segment"
msgstr "mungkin hanya dispesifikasikan alamat pemuatan untuk bagian PT_LOAD"
-#: script-sections.cc:3117
+#: script-sections.cc:3382
#, c-format
msgid "PHDRS load address overrides section %s load address"
msgstr "PHDRS alamat pemuatan memaksa daerah %s alamat pemuatan"
#. We could support this if we wanted to.
-#: script-sections.cc:3128
+#: script-sections.cc:3393
msgid "using only one of FILEHDR and PHDRS is not currently supported"
msgstr "hanya menggunakan satu dari FILEHDR dan PHDRS belum didukung"
-#: script-sections.cc:3143
+#: script-sections.cc:3408
msgid "sections loaded on first page without room for file and program headers are not supported"
msgstr "daerah dimuat dalam halaman pertama tanpa ruang untuk berkas dan aplikasi kepala tidak didukung"
-#: script-sections.cc:3149
+#: script-sections.cc:3414
msgid "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"
msgstr "menggunakan FILEHDR dan PHDRS di lebih dari sekali bagian PT_LOAD saat ini belum didukung"
-#: script.cc:1063
+#: script.cc:1072
msgid "invalid use of PROVIDE for dot symbol"
msgstr "penggunaan tidak valid dari PROVIDE untuk simbol dot"
-#: script.cc:1065
-msgid "invalid assignment to dot outside of SECTIONS"
-msgstr "penempatan tidak valid untuk dot diluar dari DAERAH"
-
-#: script.cc:1995
+#: script.cc:2132
#, c-format
msgid "%s:%d:%d: %s"
msgstr "%s:%d:%d: %s"
#. There are some options that we could handle here--e.g.,
#. -lLIBRARY. Should we bother?
-#: script.cc:2143
+#: script.cc:2297
#, c-format
msgid "%s:%d:%d: ignoring command OPTION; OPTION is only valid for scripts specified via -T/--script"
msgstr "%s:%d:%d mengabaikan perintah OPTION; OPTION hanya valid untuk script dispesifikasikan melalui -T/--script"
-#: script.cc:2168
+#: script.cc:2362
#, c-format
msgid "%s:%d:%d: ignoring SEARCH_DIR; SEARCH_DIR is only valid for scripts specified via -T/--script"
msgstr "%s:%d:%d: mengabaikan SEARCH_DIR; SEARCH_DIR hanya valid untuk script dispesifikasikan melalui -T/--script"
-#: script.cc:2411 script.cc:2425
+#: script.cc:2606 script.cc:2620
#, c-format
msgid "%s:%d:%d: DATA_SEGMENT_ALIGN not in SECTIONS clause"
msgstr "%s:%d:%d: DATA_SEGMENT_ALIGN tidak dalam clause DAERAH"
-#: script.cc:2543
+#: script.cc:2739
msgid "unknown PHDR type (try integer)"
msgstr "tipe PHDR tidak diketahui (coba bilangan bulat)"
-#: stringpool.cc:526
+#: stringpool.cc:528
#, c-format
msgid "%s: %s entries: %zu; buckets: %zu\n"
msgstr "%s: %s masukan: %zu; buckets: %zu\n"
-#: stringpool.cc:530
+#: stringpool.cc:532
#, c-format
msgid "%s: %s entries: %zu\n"
msgstr "%s: %s masukan: %zu\n"
-#: stringpool.cc:533
+#: stringpool.cc:535
#, c-format
msgid "%s: %s Stringdata structures: %zu\n"
msgstr "%s: %s struktur Stringdata: %zu\n"
-#: symtab.cc:623
+#: symtab.cc:857
#, c-format
msgid "%s: reference to %s"
msgstr "%s: referensi ke %s"
-#: symtab.cc:625
+#: symtab.cc:859
#, c-format
msgid "%s: definition of %s"
msgstr "%s: definisi dari %s"
-#: symtab.cc:860
+#: symtab.cc:1052
#, c-format
msgid "bad global symbol name offset %u at %zu"
msgstr "ofset nama simbol global buruk %u di %zu"
-#: symtab.cc:999
+#: symtab.cc:1278
msgid "--just-symbols does not make sense with a shared object"
msgstr "--just-symbols tidak masuk akal dengan sebuah objek terbagi"
-#: symtab.cc:1005
+#: symtab.cc:1284
msgid "too few symbol versions"
msgstr "terlalu sedikit versi simbol"
-#: symtab.cc:1054
+#: symtab.cc:1333
#, c-format
msgid "bad symbol name offset %u at %zu"
msgstr "ofset nama simbol buruk %u di %zu"
-#: symtab.cc:1117
+#: symtab.cc:1396
#, c-format
msgid "versym for symbol %zu out of range: %u"
msgstr "versym untuk simbol %zu diluar dari jangkauan: %u"
-#: symtab.cc:1125
+#: symtab.cc:1404
#, c-format
msgid "versym for symbol %zu has no name: %u"
msgstr "versym untuk symbol %zu tidak memiliki nama: %u"
-#: symtab.cc:2035 symtab.cc:2251
+#: symtab.cc:2549 symtab.cc:2681
#, c-format
msgid "%s: unsupported symbol section 0x%x"
msgstr "%s: daerah simbol tidak didukung 0x%x"
-#: symtab.cc:2409
-#, c-format
-msgid "%s: undefined reference to '%s', version '%s'"
-msgstr "%s: referensi ke '%s' tidak terdefinisi, versi '%s'"
-
-#: symtab.cc:2414
-#, c-format
-msgid "%s: undefined reference to '%s'"
-msgstr "%s: referensi ke '%s' tidak terdefinisi"
-
-#: symtab.cc:2498
+#: symtab.cc:2933
#, c-format
msgid "%s: symbol table entries: %zu; buckets: %zu\n"
msgstr "%s: masukan tabel simbol: %zu; buckets: %zu\n"
-#: symtab.cc:2501
+#: symtab.cc:2936
#, c-format
msgid "%s: symbol table entries: %zu\n"
msgstr "%s: masukan tabel simbol: %zu\n"
-#: symtab.cc:2572
+#: symtab.cc:3007
#, c-format
msgid "while linking %s: symbol '%s' defined in multiple places (possible ODR violation):"
msgstr "ketika menyambungkan %s: simbol '%s' didefinisikan dalam beberapa tempat (mungkin penyimpangan ODR):"
-#: target-reloc.h:247
-msgid "Relocation refers to discarded comdat section"
-msgstr "Relokasi mereferensikan ke daerah comdat yang diabaikan"
+#: target-reloc.h:259
+msgid "relocation refers to discarded comdat section"
+msgstr "relokasi mereferensikan ke daerah comdat yang diabaikan"
-#: target-reloc.h:278
+#: target-reloc.h:298
#, c-format
msgid "reloc has bad offset %zu"
msgstr "relokasi memliki ofset %zu buruk"
+#: target.cc:90
+#, c-format
+msgid "%s: unsupported ELF file type %d"
+msgstr "%s: tipe berkas ELF %d tidak didukung"
+
+#: target.cc:157
+#, c-format
+msgid "linker does not include stack split support required by %s"
+msgstr "linker does not include stack split support required by %s"
+
#: tls.h:59
msgid "TLS relocation out of range"
msgstr "relokasi TLS diluar dari jangkauan"
@@ -1834,12 +2215,12 @@ msgid "TLS relocation against invalid instruction"
msgstr "relokasi TLS terhadap instruksi tidak valid"
#. This output is intended to follow the GNU standards.
-#: version.cc:64
+#: version.cc:65
#, c-format
msgid "Copyright 2008 Free Software Foundation, Inc.\n"
msgstr "Hak Cipta 2008 Free Software Foundation, Inc.\n"
-#: version.cc:65
+#: version.cc:66
#, c-format
msgid ""
"This program is free software; you may redistribute it under the terms of\n"
@@ -1856,12 +2237,51 @@ msgstr ""
msgid "%s failed: %s"
msgstr "%s gagal: %s"
-#: x86_64.cc:2104
+#: x86_64.cc:2184
#, c-format
msgid "unsupported reloc type %u"
msgstr "tipe relokasi %u tidak didukung"
-#: x86_64.cc:2441
+#: x86_64.cc:2524
#, c-format
msgid "unsupported reloc %u against local symbol"
msgstr "relokasi %u terhadap simbol lokal tidak didukung"
+
+#~ msgid " applied to section relative value"
+#~ msgstr " diaplikasikan ke daerah nilai relatif"
+
+#~ msgid "cannot find -l%s"
+#~ msgstr "tidak dapat menemukan -l%s"
+
+#~ msgid "%s: ELF file too short"
+#~ msgstr "%s: berkas ELF terlalu pendek"
+
+#~ msgid "%s: invalid ELF version 0"
+#~ msgstr "%s: versi ELF 0 tidak valid"
+
+#~ msgid "%s: unsupported ELF version %d"
+#~ msgstr "%s: versi %d ELF tidak didukung"
+
+#~ msgid "%s: invalid ELF class 0"
+#~ msgstr "%s: ELF kelas 0 tidak valid"
+
+#~ msgid "%s: unsupported ELF class %d"
+#~ msgstr "%s: ELF kelas %d tidak didukung"
+
+#~ msgid "%s: invalid ELF data encoding"
+#~ msgstr "%s: pengkodean data ELF tidak valid"
+
+#~ msgid "%s: unsupported ELF data encoding %d"
+#~ msgstr "%s: pengkodean data ELF %d tidak didukung"
+
+#~ msgid "%s: lseek: %s"
+#~ msgstr "%s: lseek: %s"
+
+#~ msgid "invalid assignment to dot outside of SECTIONS"
+#~ msgstr "penempatan tidak valid untuk dot diluar dari DAERAH"
+
+#~ msgid "%s: undefined reference to '%s', version '%s'"
+#~ msgstr "%s: referensi ke '%s' tidak terdefinisi, versi '%s'"
+
+#~ msgid "%s: undefined reference to '%s'"
+#~ msgstr "%s: referensi ke '%s' tidak terdefinisi"
diff --git a/gold/po/it.po b/gold/po/it.po
index 144a1e7..705120f 100644
--- a/gold/po/it.po
+++ b/gold/po/it.po
@@ -12,6 +12,7 @@ msgstr ""
"Last-Translator: Sergio Zanchetta <primes2h@ubuntu.com>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
"Language: it\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
diff --git a/gold/po/ja.po b/gold/po/ja.po
new file mode 100644
index 0000000..7b0d69b
--- /dev/null
+++ b/gold/po/ja.po
@@ -0,0 +1,2241 @@
+# Japanese messages for GNU binutils gold.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+# Yasuaki Taniguchi <yasuakit@gmail.com>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gold 2.20.90\n"
+"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
+"POT-Creation-Date: 2010-03-03 15:08+0100\n"
+"PO-Revision-Date: 2010-12-18 16:06+0900\n"
+"Last-Translator: Yasuaki Taniguchi <yasuakit@gmail.com>\n"
+"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: archive.cc:119
+#, c-format
+msgid "%s: no archive symbol table (run ranlib)"
+msgstr "%s: 書庫シンボル表ãŒã‚ã‚Šã¾ã›ã‚“ (ranlib を実行ã—ã¦ãã ã•ã„)"
+
+#: archive.cc:204
+#, c-format
+msgid "%s: bad archive symbol table names"
+msgstr "%s: 誤ã£ãŸæ›¸åº«ã‚·ãƒ³ãƒœãƒ«è¡¨åã§ã™"
+
+#: archive.cc:236
+#, c-format
+msgid "%s: malformed archive header at %zu"
+msgstr "%s: 誤ã£ãŸå½¢å¼ã®æ›¸åº«ãƒ˜ãƒƒãƒ€ãŒ %zu ã«ã‚ã‚Šã¾ã™"
+
+#: archive.cc:256
+#, c-format
+msgid "%s: malformed archive header size at %zu"
+msgstr "%s: 誤ã£ãŸå½¢å¼ã®æ›¸åº«ãƒ˜ãƒƒãƒ€ã‚µã‚¤ã‚ºãŒ %zu ã«ã‚ã‚Šã¾ã™"
+
+#: archive.cc:267
+#, c-format
+msgid "%s: malformed archive header name at %zu"
+msgstr "%s: 誤ã£ãŸå½¢å¼ã®æ›¸åº«ãƒ˜ãƒƒãƒ€å㌠%zu ã«ã‚ã‚Šã¾ã™"
+
+#: archive.cc:297
+#, c-format
+msgid "%s: bad extended name index at %zu"
+msgstr "%s: 誤ã£ãŸæ‹¡å¼µå索引㌠%zu ã«ã‚ã‚Šã¾ã™"
+
+#: archive.cc:307
+#, c-format
+msgid "%s: bad extended name entry at header %zu"
+msgstr "%s: 誤ã£ãŸæ‹¡å¼µåエントリ㌠%zu ã«ã‚ã‚Šã¾ã™"
+
+#: archive.cc:404
+#, c-format
+msgid "%s: short archive header at %zu"
+msgstr "%s: 短ã„書庫ヘッダ㌠%zu ã«ã‚ã‚Šã¾ã™"
+
+#: archive.cc:560
+#, c-format
+msgid "%s: member at %zu is not an ELF object"
+msgstr "%s: %zu ã«ã‚るメンãƒã¯ ELF オブジェクトã§ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#: archive.cc:879
+#, c-format
+msgid "%s: archive libraries: %u\n"
+msgstr "%s: 書庫ライブラリ: %u\n"
+
+#: archive.cc:881
+#, c-format
+msgid "%s: total archive members: %u\n"
+msgstr "%s: 書庫メンãƒç·æ•°: %u\n"
+
+#: archive.cc:883
+#, c-format
+msgid "%s: loaded archive members: %u\n"
+msgstr "%s: ロードã•ã‚ŒãŸæ›¸åº«ãƒ¡ãƒ³ãƒæ•°: %u\n"
+
+#: arm.cc:1149 i386.cc:536 sparc.cc:1087 x86_64.cc:565
+msgid "** PLT"
+msgstr ""
+
+#: arm.cc:1364 i386.cc:880 powerpc.cc:1014 sparc.cc:1502 x86_64.cc:955
+#: x86_64.cc:1265
+#, c-format
+msgid "%s: unsupported reloc %u against local symbol"
+msgstr "%s: 局所シンボルã«å¯¾ã™ã‚‹ã‚µãƒãƒ¼ãƒˆã•ã‚Œãªã„å†é…ç½® %u ã§ã™"
+
+#: arm.cc:1404 powerpc.cc:1105 sparc.cc:1592 x86_64.cc:992
+msgid "requires unsupported dynamic reloc; recompile with -fPIC"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„å‹•çš„å†é…ç½®ãŒå¿…è¦ã«ãªã‚Šã¾ã—ãŸã€‚ -fPIC を付ã‘ã¦å†ã‚³ãƒ³ãƒ‘イルã—ã¦ãã ã•ã„"
+
+#. These are relocations which should only be seen by the
+#. dynamic linker, and should never be seen here.
+#: arm.cc:1519 arm.cc:1739 arm.cc:2354 i386.cc:1002 i386.cc:1334
+#: powerpc.cc:1223 powerpc.cc:1432 sparc.cc:1877 sparc.cc:2238 x86_64.cc:1145
+#: x86_64.cc:1453
+#, c-format
+msgid "%s: unexpected reloc %u in object file"
+msgstr "%s: オブジェクトファイル内ã§äºˆæœŸã—ãªã„å†é…ç½® %u ã§ã™"
+
+#: arm.cc:1538 i386.cc:1171 powerpc.cc:1242 sparc.cc:1896 x86_64.cc:1279
+#: x86_64.cc:1571
+#, c-format
+msgid "%s: unsupported reloc %u against global symbol %s"
+msgstr "%1$s: 大域シンボル %3$s ã«å¯¾ã™ã‚‹ã‚µãƒãƒ¼ãƒˆã•ã‚Œãªã„å†é…ç½® %2$u ã§ã™"
+
+#: arm.cc:1804 i386.cc:1542
+#, c-format
+msgid "%s: unsupported RELA reloc section"
+msgstr "%s: サãƒãƒ¼ãƒˆã•ã‚Œãªã„ RELA å†é…置セクションã§ã™"
+
+#: arm.cc:2047
+msgid "relocation R_ARM_MOVW_ABS_NC cannot be used when makinga shared object; recompile with -fPIC"
+msgstr ""
+
+#: arm.cc:2056
+msgid "relocation R_ARM_MOVT_ABS cannot be used when makinga shared object; recompile with -fPIC"
+msgstr ""
+
+#: arm.cc:2067
+msgid "relocation R_ARM_THM_MOVW_ABS_NC cannot be used whenmaking a shared object; recompile with -fPIC"
+msgstr ""
+
+#: arm.cc:2077
+msgid "relocation R_ARM_THM_MOVT_ABS cannot be used whenmaking a shared object; recompile with -fPIC"
+msgstr ""
+
+#: arm.cc:2141
+msgid "cannot find origin of R_ARM_BASE_PREL"
+msgstr ""
+
+#: arm.cc:2169
+msgid "cannot find origin of R_ARM_BASE_ABS"
+msgstr ""
+
+#: arm.cc:2230 i386.cc:1820 i386.cc:2521 powerpc.cc:1798 sparc.cc:2711
+#: x86_64.cc:1935 x86_64.cc:2518
+#, c-format
+msgid "unexpected reloc %u in object file"
+msgstr "オブジェクトファイル内ã§äºˆæœŸã—ãªã„å†é…ç½® %u ã§ã™"
+
+#: arm.cc:2236 i386.cc:1852 i386.cc:1931 i386.cc:1983 i386.cc:2014
+#: i386.cc:2076 powerpc.cc:1804 sparc.cc:2717 sparc.cc:2900 sparc.cc:2961
+#: sparc.cc:3068 x86_64.cc:1956 x86_64.cc:2039 x86_64.cc:2094 x86_64.cc:2119
+#, c-format
+msgid "unsupported reloc %u"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œãªã„å†é…ç½® %u ã§ã™"
+
+#: arm.cc:2248
+#, c-format
+msgid "relocation overflow in relocation %u"
+msgstr "å†é…ç½® %u ã§å†é…置オーãƒãƒ¼ãƒ•ãƒ­ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"
+
+#: arm.cc:2256
+#, c-format
+msgid "unexpected opcode while processing relocation %u"
+msgstr "å†é…ç½® %u を処ç†ä¸­ã«äºˆæœŸã—ãªã„オペコードã§ã™"
+
+#: arm.cc:2359 i386.cc:2535
+#, c-format
+msgid "unsupported reloc %u in object file"
+msgstr "オブジェクトファイル内ã§ã‚µãƒãƒ¼ãƒˆã•ã‚Œãªã„å†é…ç½® %u ã§ã™"
+
+#: binary.cc:129
+#, c-format
+msgid "cannot open %s: %s:"
+msgstr "%s ã‚’é–‹ã‘ã¾ã›ã‚“: %s:"
+
+#: compressed_output.cc:128
+msgid "not compressing section data: zlib error"
+msgstr "セクションデータを圧縮ã—ã¾ã›ã‚“: zlib エラー"
+
+#: cref.cc:244
+#, c-format
+msgid "cannot open symbol count file %s: %s"
+msgstr "シンボルカウントファイル %s ã‚’é–‹ã‘ã¾ã›ã‚“: %s"
+
+#: descriptors.cc:116
+#, c-format
+msgid "file %s was removed during the link"
+msgstr "ファイル %s ãŒãƒªãƒ³ã‚¯ä¸­ã«å‰Šé™¤ã•ã‚Œã¾ã—ãŸ"
+
+#: descriptors.cc:169
+msgid "out of file descriptors and couldn't close any"
+msgstr "ファイル記述å­ãŒè¶³ã‚Šãªããªã‚Šã€ã©ã‚Œã‚‚é–‰ã˜ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸ"
+
+#: descriptors.cc:190 descriptors.cc:226
+#, c-format
+msgid "while closing %s: %s"
+msgstr "%s ã‚’é–‰ã˜ã¦ã„ã‚‹é–“: %s"
+
+#: dirsearch.cc:71
+#, c-format
+msgid "%s: can not read directory: %s"
+msgstr "%s: ディレクトリを読ã¿è¾¼ã‚ã¾ã›ã‚“: %s"
+
+#: dwarf_reader.cc:53 dwarf_reader.cc:84
+msgid "Unusually large LEB128 decoded, debug information may be corrupted"
+msgstr "通常ã§ã¯ãªã„大ã㪠LEB128 デコードã§ã™ã€‚デãƒãƒƒã‚°æƒ…å ±ãŒå£Šã‚Œã¦ã„ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
+
+#: dynobj.cc:164
+#, c-format
+msgid "unexpected duplicate type %u section: %u, %u"
+msgstr ""
+
+#: dynobj.cc:200
+#, c-format
+msgid "unexpected link in section %u header: %u != %u"
+msgstr ""
+
+#: dynobj.cc:236
+#, c-format
+msgid "DYNAMIC section %u link out of range: %u"
+msgstr ""
+
+#: dynobj.cc:244
+#, c-format
+msgid "DYNAMIC section %u link %u is not a strtab"
+msgstr ""
+
+#: dynobj.cc:273
+#, c-format
+msgid "DT_SONAME value out of range: %lld >= %lld"
+msgstr "DT_SONAME ã®å€¤ãŒç¯„囲外ã§ã™: %lld >= %lld"
+
+#: dynobj.cc:285
+#, c-format
+msgid "DT_NEEDED value out of range: %lld >= %lld"
+msgstr "DT_NEEDED ã®å€¤ãŒç¯„囲外ã§ã™: %lld >= %lld"
+
+#: dynobj.cc:298
+msgid "missing DT_NULL in dynamic segment"
+msgstr "動的セグメント内㫠DT_NULL ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: dynobj.cc:344
+#, c-format
+msgid "invalid dynamic symbol table name index: %u"
+msgstr "無効ãªå‹•çš„シンボル表å索引ã§ã™: %u"
+
+#: dynobj.cc:351
+#, c-format
+msgid "dynamic symbol table name section has wrong type: %u"
+msgstr "動的シンボルテーブルåセクションã®åž‹ãŒèª¤ã£ã¦ã„ã¾ã™: %u"
+
+#: dynobj.cc:438 object.cc:463 object.cc:1106
+#, c-format
+msgid "bad section name offset for section %u: %lu"
+msgstr "セクション %u ã«å¯¾ã™ã‚‹èª¤ã£ãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³åオフセットã§ã™: %lu"
+
+#: dynobj.cc:468
+#, c-format
+msgid "duplicate definition for version %u"
+msgstr ""
+
+#: dynobj.cc:497
+#, c-format
+msgid "unexpected verdef version %u"
+msgstr ""
+
+#: dynobj.cc:513
+#, c-format
+msgid "verdef vd_cnt field too small: %u"
+msgstr ""
+
+#: dynobj.cc:521
+#, c-format
+msgid "verdef vd_aux field out of range: %u"
+msgstr ""
+
+#: dynobj.cc:532
+#, c-format
+msgid "verdaux vda_name field out of range: %u"
+msgstr ""
+
+#: dynobj.cc:542
+#, c-format
+msgid "verdef vd_next field out of range: %u"
+msgstr ""
+
+#: dynobj.cc:576
+#, c-format
+msgid "unexpected verneed version %u"
+msgstr ""
+
+#: dynobj.cc:585
+#, c-format
+msgid "verneed vn_aux field out of range: %u"
+msgstr ""
+
+#: dynobj.cc:599
+#, c-format
+msgid "vernaux vna_name field out of range: %u"
+msgstr ""
+
+#: dynobj.cc:610
+#, c-format
+msgid "verneed vna_next field out of range: %u"
+msgstr ""
+
+#: dynobj.cc:621
+#, c-format
+msgid "verneed vn_next field out of range: %u"
+msgstr ""
+
+#: dynobj.cc:670
+msgid "size of dynamic symbols is not multiple of symbol size"
+msgstr "動的シンボルã®ã‚µã‚¤ã‚ºãŒã‚·ãƒ³ãƒœãƒ«ã‚µã‚¤ã‚ºã®å€æ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#: dynobj.cc:1435
+#, c-format
+msgid "symbol %s has undefined version %s"
+msgstr ""
+
+#: ehframe.h:82
+msgid "** eh_frame_hdr"
+msgstr ""
+
+#: ehframe.h:353
+msgid "** eh_frame"
+msgstr ""
+
+#: errors.cc:81
+#, c-format
+msgid "%s: fatal error: "
+msgstr "%s: 致命的エラー: "
+
+#: errors.cc:92
+#, c-format
+msgid "%s: error: "
+msgstr "%s: エラー: "
+
+#: errors.cc:104
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: 警告: "
+
+#: errors.cc:128
+#, c-format
+msgid "%s: %s: error: "
+msgstr "%s: %s: エラー: "
+
+#: errors.cc:144
+#, c-format
+msgid "%s: %s: warning: "
+msgstr "%s: %s: 警告: "
+
+#: errors.cc:167
+#, c-format
+msgid "%s: %s: error: undefined reference to '%s'\n"
+msgstr "%s: %s: エラー: '%s' ã¸ã®æœªå®šç¾©ã®å‚ç…§ã§ã™\n"
+
+#: errors.cc:172
+#, c-format
+msgid "%s: %s: error: undefined reference to '%s', version '%s'\n"
+msgstr "%s: %s: error: '%s', ãƒãƒ¼ã‚¸ãƒ§ãƒ³ '%s' ã¸ã®æœªå®šç¾©ã®å‚ç…§ã§ã™\n"
+
+#: errors.cc:182
+#, c-format
+msgid "%s: "
+msgstr "%s: "
+
+#: expression.cc:172
+#, c-format
+msgid "undefined symbol '%s' referenced in expression"
+msgstr "å¼å†…ã§æœªå®šç¾©ã‚·ãƒ³ãƒœãƒ« '%s' ãŒå‚ç…§ã•ã‚Œã¾ã—ãŸ"
+
+#: expression.cc:209
+msgid "invalid reference to dot symbol outside of SECTIONS clause"
+msgstr ""
+
+#. Handle unary operators. We use a preprocessor macro as a hack to
+#. capture the C operator.
+#: expression.cc:278
+msgid "unary "
+msgstr "å˜é …æ¼”ç®—å­ "
+
+#. Handle binary operators. We use a preprocessor macro as a hack to
+#. capture the C operator. KEEP_LEFT means that if the left operand
+#. is section relative and the right operand is not, the result uses
+#. the same section as the left operand. KEEP_RIGHT is the same with
+#. left and right swapped. IS_DIV means that we need to give an error
+#. if the right operand is zero. WARN means that we should warn if
+#. used on section relative values in a relocatable link. We always
+#. warn if used on values in different sections in a relocatable link.
+#: expression.cc:400
+msgid "binary "
+msgstr "äºŒé …æ¼”ç®—å­ "
+
+#: expression.cc:404
+msgid " by zero"
+msgstr ""
+
+#: expression.cc:575
+msgid "max applied to section relative value"
+msgstr ""
+
+#: expression.cc:610
+msgid "min applied to section relative value"
+msgstr ""
+
+#: expression.cc:740
+msgid "aligning to section relative value"
+msgstr ""
+
+#: expression.cc:895
+#, c-format
+msgid "unknown constant %s"
+msgstr "ä¸æ˜Žãªå®šæ•° %s"
+
+#: expression.cc:1126
+msgid "SEGMENT_START not implemented"
+msgstr "SEGMENT_START ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: expression.cc:1135
+msgid "ORIGIN not implemented"
+msgstr "ORIGIN ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: expression.cc:1141
+msgid "LENGTH not implemented"
+msgstr "LENGTH ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: fileread.cc:65
+#, c-format
+msgid "munmap failed: %s"
+msgstr "munmap ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: fileread.cc:129
+#, c-format
+msgid "%s: fstat failed: %s"
+msgstr "%s: fstat ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: fileread.cc:169
+#, c-format
+msgid "could not reopen file %s"
+msgstr "ファイル %s ã‚’å†åº¦é–‹ãã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸ"
+
+#: fileread.cc:302
+#, c-format
+msgid "%s: pread failed: %s"
+msgstr "%s: pread ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: fileread.cc:308
+#, c-format
+msgid "%s: file too short: read only %lld of %lld bytes at %lld"
+msgstr "%1$s: ファイルãŒçŸ­ã™ãŽã¾ã™ã€‚ä½ç½® %4$lld 㧠%3$lld ãƒã‚¤ãƒˆä¸­ %2$lld ãƒã‚¤ãƒˆã—ã‹èª­ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ"
+
+#: fileread.cc:372
+#, c-format
+msgid "%s: attempt to map %lld bytes at offset %lld exceeds size of file; the file may be corrupt"
+msgstr "%1$s: オフセット %3$lld 㧠%2$lld ãƒã‚¤ãƒˆåˆ†ãƒžãƒƒãƒ—を試ã¿ã¾ã—ãŸãŒãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºã‚’超éŽã—ã¦ã„ã¾ã™ã€‚ファイルãŒå£Šã‚Œã¦ã„ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
+
+#: fileread.cc:402
+#, c-format
+msgid "%s: mmap offset %lld size %lld failed: %s"
+msgstr "%s: オフセット %lldã€ã‚µã‚¤ã‚º %lld ã® mmap ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: fileread.cc:548
+#, c-format
+msgid "%s: lseek failed: %s"
+msgstr "%s: lseek ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: fileread.cc:554
+#, c-format
+msgid "%s: readv failed: %s"
+msgstr "%s: readv ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: fileread.cc:557
+#, c-format
+msgid "%s: file too short: read only %zd of %zd bytes at %lld"
+msgstr "%1$s: ファイルãŒçŸ­ã™ãŽã¾ã™ã€‚ä½ç½® %4$lld 㧠%3$zd ãƒã‚¤ãƒˆä¸­ %2$zd ãƒã‚¤ãƒˆã—ã‹èª­ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ"
+
+#: fileread.cc:706
+#, c-format
+msgid "%s: total bytes mapped for read: %llu\n"
+msgstr ""
+
+#: fileread.cc:708
+#, c-format
+msgid "%s: maximum bytes mapped for read at one time: %llu\n"
+msgstr ""
+
+#: fileread.cc:791
+#, c-format
+msgid "%s: stat failed: %s"
+msgstr "%s: stat ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: fileread.cc:849
+#, c-format
+msgid "cannot find %s%s"
+msgstr "%s%s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#: fileread.cc:880
+#, c-format
+msgid "cannot find %s"
+msgstr "%s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#: fileread.cc:904
+#, c-format
+msgid "cannot open %s: %s"
+msgstr "%s ã‚’é–‹ã‘ã¾ã›ã‚“: %s"
+
+#: gold-threads.cc:103
+#, c-format
+msgid "pthead_mutextattr_init failed: %s"
+msgstr "pthead_mutextattr_init ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: gold-threads.cc:107
+#, c-format
+msgid "pthread_mutextattr_settype failed: %s"
+msgstr "pthread_mutextattr_settype ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: gold-threads.cc:112
+#, c-format
+msgid "pthread_mutex_init failed: %s"
+msgstr "pthread_mutex_init ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: gold-threads.cc:116
+#, c-format
+msgid "pthread_mutexattr_destroy failed: %s"
+msgstr "pthread_mutexattr_destroy ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: gold-threads.cc:123
+#, c-format
+msgid "pthread_mutex_destroy failed: %s"
+msgstr "pthread_mutex_destroy ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: gold-threads.cc:131 gold-threads.cc:382
+#, c-format
+msgid "pthread_mutex_lock failed: %s"
+msgstr "pthread_mutex_lock ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: gold-threads.cc:139 gold-threads.cc:394
+#, c-format
+msgid "pthread_mutex_unlock failed: %s"
+msgstr "pthread_mutex_unlock ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: gold-threads.cc:220
+#, c-format
+msgid "pthread_cond_init failed: %s"
+msgstr "pthread_cond_init ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: gold-threads.cc:227
+#, c-format
+msgid "pthread_cond_destroy failed: %s"
+msgstr "pthread_cond_destroy ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: gold-threads.cc:236
+#, c-format
+msgid "pthread_cond_wait failed: %s"
+msgstr "pthread_cond_wait ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: gold-threads.cc:244
+#, c-format
+msgid "pthread_cond_signal failed: %s"
+msgstr "pthread_cond_signal ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: gold-threads.cc:252
+#, c-format
+msgid "pthread_cond_broadcast failed: %s"
+msgstr "pthread_cond_broadcast ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: gold-threads.cc:388
+#, c-format
+msgid "pthread_once failed: %s"
+msgstr "pthread_once ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: gold.cc:91
+#, c-format
+msgid "%s: internal error in %s, at %s:%d\n"
+msgstr "%s: %s ã®ä¸­ã®ä½ç½® %s ã§å†…部エラーãŒç™ºç”Ÿã—ã¾ã—ãŸ:%d\n"
+
+#: gold.cc:173
+msgid "no input files"
+msgstr "入力ファイルãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: gold.cc:226
+msgid "cannot mix -r with --gc-sections or --icf"
+msgstr "-r 㨠--gc-sections ã€--icf ã¯åŒæ™‚ã«ä½¿ç”¨ã§ãã¾ã›ã‚“"
+
+#: gold.cc:407
+#, c-format
+msgid "cannot mix -static with dynamic object %s"
+msgstr "-static ã¨å‹•çš„オブジェクト %s ã¯åŒæ™‚ã«ä½¿ç”¨ã§ãã¾ã›ã‚“"
+
+#: gold.cc:411
+#, c-format
+msgid "cannot mix -r with dynamic object %s"
+msgstr "-r ã¨å‹•çš„オブジェクト %s ã¯åŒæ™‚ã«ä½¿ç”¨ã§ãã¾ã›ã‚“"
+
+#: gold.cc:415
+#, c-format
+msgid "cannot use non-ELF output format with dynamic object %s"
+msgstr "動的オブジェクト %s を使用ã™ã‚‹ã¨éž ELF 出力形å¼ã‚’使用ã§ãã¾ã›ã‚“"
+
+#: gold.cc:427
+#, c-format
+msgid "cannot mix split-stack '%s' and non-split-stack '%s' when using -r"
+msgstr "-r を使用ã—ã¦ã„ã‚‹ã¨ãã¯ã‚¹ã‚¿ãƒƒã‚¯åˆ†å‰² '%s' ã¨éžã‚¹ã‚¿ãƒƒã‚¯åˆ†å‰² '%s' ã‚’åŒæ™‚ã«ä½¿ç”¨ã§ãã¾ã›ã‚“"
+
+#. FIXME: This needs to specify the location somehow.
+#: i386.cc:232 i386.cc:1669 sparc.cc:234 sparc.cc:2395 x86_64.cc:237
+#: x86_64.cc:1732
+msgid "missing expected TLS relocation"
+msgstr "予期ã•ã‚Œã‚‹ TLS å†é…ç½®ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: i386.cc:944 x86_64.cc:1068
+#, c-format
+msgid "section symbol %u has bad shndx %u"
+msgstr ""
+
+#: i386.cc:1036 i386.cc:1060 sparc.cc:1777 x86_64.cc:1176 x86_64.cc:1204
+#, c-format
+msgid "local symbol %u has bad shndx %u"
+msgstr ""
+
+#: i386.cc:1991
+msgid "both SUN and GNU model TLS relocations"
+msgstr "SUN 㨠GNU モデル㮠TLS å†é…ç½®ãŒä¸¡æ–¹ã‚ã‚Šã¾ã™"
+
+#: i386.cc:2730 x86_64.cc:2719
+#, c-format
+msgid "failed to match split-stack sequence at section %u offset %0zx"
+msgstr ""
+
+#: icf.cc:616
+#, c-format
+msgid "%s: ICF Converged after %u iteration(s)"
+msgstr ""
+
+#: icf.cc:619
+#, c-format
+msgid "%s: ICF stopped after %u iteration(s)"
+msgstr ""
+
+#: icf.cc:633
+#, c-format
+msgid "Could not find symbol %s to unfold\n"
+msgstr ""
+
+#: incremental.cc:242
+#, c-format
+msgid "the link might take longer: cannot perform incremental link: %s"
+msgstr "リンクã«æ™‚é–“ãŒã‹ã‹ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“: 増分リンクを実行ã§ãã¾ã›ã‚“: %s"
+
+#: incremental.cc:302
+msgid "no incremental data from previous build"
+msgstr "å‰å›žã®ãƒ“ルドã‹ã‚‰ã®å¢—分データãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: incremental.cc:309 incremental.cc:332
+msgid "invalid incremental build data"
+msgstr "無効ãªå¢—分ビルドデータã§ã™"
+
+#: incremental.cc:321
+msgid "different version of incremental build data"
+msgstr "ç•°ãªã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®å¢—分ビルドデータã§ã™"
+
+#: incremental.cc:338
+msgid "command line changed"
+msgstr "コマンドラインã«å¤‰æ›´ãŒã‚ã‚Šã¾ã—ãŸ"
+
+#: incremental.cc:362
+#, c-format
+msgid "unsupported ELF machine number %d"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ ELF ãƒžã‚·ãƒ³ç•ªå· %d ã§ã™"
+
+#: incremental.cc:387
+msgid "output is not an ELF file."
+msgstr "出力㌠ELF ファイルã§ã¯ã‚ã‚Šã¾ã›ã‚“。"
+
+#: incremental.cc:410
+msgid "unsupported file: 32-bit, big-endian"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ファイルã§ã™: 32-ビットã€ãƒ“ッグエンディアン"
+
+#: incremental.cc:419
+msgid "unsupported file: 32-bit, little-endian"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ファイルã§ã™: 32-ビットã€ãƒªãƒˆãƒ«ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³"
+
+#: incremental.cc:431
+msgid "unsupported file: 64-bit, big-endian"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ファイルã§ã™: 64-ビットã€ãƒ“ッグエンディアン"
+
+#: incremental.cc:440
+msgid "unsupported file: 64-bit, little-endian"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ファイルã§ã™: 64-ビットã€ãƒªãƒˆãƒ«ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³"
+
+#: layout.cc:1887
+#, c-format
+msgid "--build-id=uuid failed: could not open /dev/urandom: %s"
+msgstr "--build-id=uuid ã«å¤±æ•—ã—ã¾ã—ãŸ: /dev/urandom ã‚’é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸ: %s"
+
+#: layout.cc:1894
+#, c-format
+msgid "/dev/urandom: read failed: %s"
+msgstr "/dev/urandom: 読ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: layout.cc:1896
+#, c-format
+msgid "/dev/urandom: expected %zu bytes, got %zd bytes"
+msgstr ""
+
+#: layout.cc:1918
+#, c-format
+msgid "--build-id argument '%s' not a valid hex number"
+msgstr "--build-id ã®å¼•æ•° '%s' ãŒæœ‰åŠ¹ãªå六進数ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#: layout.cc:1924
+#, c-format
+msgid "unrecognized --build-id argument '%s'"
+msgstr "èªè­˜ã§ããªã„ --build-id ã®å¼•æ•° '%s' ã§ã™"
+
+#: layout.cc:2337
+#, c-format
+msgid "load segment overlap [0x%llx -> 0x%llx] and [0x%llx -> 0x%llx]"
+msgstr "ロードセグメントãŒé‡ãªã‚Šåˆã£ã¦ã„ã¾ã™ [0x%llx -> 0x%llx] ãŠã‚ˆã³ [0x%llx -> 0x%llx]"
+
+#: mapfile.cc:70
+#, c-format
+msgid "cannot open map file %s: %s"
+msgstr "マップファイル %s ã‚’é–‹ã‘ã¾ã›ã‚“: %s"
+
+#: mapfile.cc:84
+#, c-format
+msgid "cannot close map file: %s"
+msgstr "マップファイルを閉ã˜ã‚‰ã‚Œã¾ã›ã‚“: %s"
+
+#: mapfile.cc:116
+#, c-format
+msgid ""
+"Archive member included because of file (symbol)\n"
+"\n"
+msgstr ""
+
+#: mapfile.cc:159
+#, c-format
+msgid ""
+"\n"
+"Allocating common symbols\n"
+msgstr ""
+
+#: mapfile.cc:161
+#, c-format
+msgid ""
+"Common symbol size file\n"
+"\n"
+msgstr ""
+
+#: mapfile.cc:195
+#, c-format
+msgid ""
+"\n"
+"Memory map\n"
+"\n"
+msgstr ""
+"\n"
+"メモリマップ\n"
+"\n"
+
+#: mapfile.cc:361
+#, c-format
+msgid ""
+"\n"
+"Discarded input sections\n"
+"\n"
+msgstr ""
+"\n"
+"破棄ã•ã‚ŒãŸå…¥åŠ›ã‚»ã‚¯ã‚·ãƒ§ãƒ³\n"
+"\n"
+
+#: merge.cc:455
+#, c-format
+msgid "%s: %s merged constants size: %lu; input: %zu; output: %zu\n"
+msgstr ""
+
+#: merge.cc:478
+msgid "mergeable string section length not multiple of character size"
+msgstr ""
+
+#: merge.cc:494
+#, c-format
+msgid "%s: last entry in mergeable string section '%s' not null terminated"
+msgstr ""
+
+#: merge.cc:613
+#, c-format
+msgid "%s: %s input: %zu\n"
+msgstr ""
+
+#: merge.h:300
+msgid "** merge constants"
+msgstr ""
+
+#: merge.h:422
+msgid "** merge strings"
+msgstr ""
+
+#: object.cc:75
+msgid "missing SHT_SYMTAB_SHNDX section"
+msgstr ""
+
+#: object.cc:119
+#, c-format
+msgid "symbol %u out of range for SHT_SYMTAB_SHNDX section"
+msgstr ""
+
+#: object.cc:126
+#, c-format
+msgid "extended index for symbol %u out of range: %u"
+msgstr ""
+
+#: object.cc:148 object.cc:2331 output.cc:4052
+#, c-format
+msgid "%s: %s"
+msgstr ""
+
+#: object.cc:190
+#, c-format
+msgid "section name section has wrong type: %u"
+msgstr ""
+
+#: object.cc:546
+#, c-format
+msgid "invalid symbol table name index: %u"
+msgstr ""
+
+#: object.cc:552
+#, c-format
+msgid "symbol table name section has wrong type: %u"
+msgstr ""
+
+#: object.cc:641
+#, c-format
+msgid "section group %u info %u out of range"
+msgstr ""
+
+#: object.cc:660
+#, c-format
+msgid "symbol %u name offset %u out of range"
+msgstr ""
+
+#: object.cc:678
+#, c-format
+msgid "symbol %u invalid section index %u"
+msgstr ""
+
+#: object.cc:723
+#, c-format
+msgid "section %u in section group %u out of range"
+msgstr ""
+
+#: object.cc:731
+#, c-format
+msgid "invalid section group %u refers to earlier section %u"
+msgstr ""
+
+#: object.cc:1037 reloc.cc:271 reloc.cc:838
+#, c-format
+msgid "relocation section %u has bad info %u"
+msgstr ""
+
+#: object.cc:1231
+#, c-format
+msgid "%s: removing unused section from '%s' in file '%s'"
+msgstr ""
+
+#: object.cc:1257
+#, c-format
+msgid "%s: ICF folding section '%s' in file '%s'into '%s' in file '%s'"
+msgstr ""
+
+#: object.cc:1454
+msgid "size of symbols is not multiple of symbol size"
+msgstr ""
+
+#: object.cc:1563
+#, c-format
+msgid "local symbol %u section name out of range: %u >= %u"
+msgstr ""
+
+#: object.cc:1652
+#, c-format
+msgid "unknown section index %u for local symbol %u"
+msgstr ""
+
+#: object.cc:1661
+#, c-format
+msgid "local symbol %u section index %u out of range"
+msgstr ""
+
+#: object.cc:2169
+#, c-format
+msgid "%s is not supported but is required for %s in %s"
+msgstr ""
+
+#: object.cc:2273
+#, c-format
+msgid "%s: unsupported ELF machine number %d"
+msgstr ""
+
+#: object.cc:2283
+#, c-format
+msgid "%s: incompatible target"
+msgstr ""
+
+#: object.cc:2347 plugin.cc:1019
+#, c-format
+msgid "%s: not configured to support 32-bit big-endian object"
+msgstr ""
+
+#: object.cc:2363 plugin.cc:1028
+#, c-format
+msgid "%s: not configured to support 32-bit little-endian object"
+msgstr ""
+
+#: object.cc:2382 plugin.cc:1040
+#, c-format
+msgid "%s: not configured to support 64-bit big-endian object"
+msgstr ""
+
+#: object.cc:2398 plugin.cc:1049
+#, c-format
+msgid "%s: not configured to support 64-bit little-endian object"
+msgstr ""
+
+#: options.cc:156
+#, c-format
+msgid ""
+"Usage: %s [options] file...\n"
+"Options:\n"
+msgstr ""
+"使用法: %s [options] file...\n"
+"オプション:\n"
+
+#. config.guess and libtool.m4 look in ld --help output for the
+#. string "supported targets".
+#: options.cc:164
+#, c-format
+msgid "%s: supported targets:"
+msgstr ""
+
+#: options.cc:176
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr ""
+
+#: options.cc:193 options.cc:203 options.cc:213
+#, c-format
+msgid "%s: invalid option value (expected an integer): %s"
+msgstr ""
+
+#: options.cc:223
+#, c-format
+msgid "%s: invalid option value (expected a floating point number): %s"
+msgstr ""
+
+#: options.cc:232
+#, c-format
+msgid "%s: must take a non-empty argument"
+msgstr ""
+
+#: options.cc:273
+#, c-format
+msgid "%s: must take one of the following arguments: %s"
+msgstr ""
+
+#: options.cc:300
+#, c-format
+msgid " Supported targets:\n"
+msgstr ""
+
+#: options.cc:409
+#, c-format
+msgid "unable to parse script file %s"
+msgstr ""
+
+#: options.cc:417
+#, c-format
+msgid "unable to parse version script file %s"
+msgstr ""
+
+#: options.cc:425
+#, c-format
+msgid "unable to parse dynamic-list script file %s"
+msgstr ""
+
+#: options.cc:522
+#, c-format
+msgid "format '%s' not supported; treating as elf (supported formats: elf, binary)"
+msgstr ""
+
+#: options.cc:538
+#, c-format
+msgid "%s: use the --help option for usage information\n"
+msgstr ""
+
+#: options.cc:547
+#, c-format
+msgid "%s: %s: %s\n"
+msgstr ""
+
+#: options.cc:651
+msgid "unexpected argument"
+msgstr ""
+
+#: options.cc:664 options.cc:725
+msgid "missing argument"
+msgstr ""
+
+#: options.cc:736
+msgid "unknown -z option"
+msgstr ""
+
+#: options.cc:935
+#, c-format
+msgid "ignoring --threads: %s was compiled without thread support"
+msgstr ""
+
+#: options.cc:942
+#, c-format
+msgid "ignoring --thread-count: %s was compiled without thread support"
+msgstr ""
+
+#: options.cc:981
+#, c-format
+msgid "unable to open -retain-symbols-file file %s: %s"
+msgstr ""
+
+#: options.cc:1003
+msgid "-shared and -static are incompatible"
+msgstr ""
+
+#: options.cc:1005
+msgid "-shared and -pie are incompatible"
+msgstr ""
+
+#: options.cc:1008
+msgid "-shared and -r are incompatible"
+msgstr ""
+
+#: options.cc:1010
+msgid "-pie and -r are incompatible"
+msgstr ""
+
+#: options.cc:1014
+msgid "-retain-symbols-file does not yet work with -r"
+msgstr ""
+
+#: options.cc:1020
+msgid "binary output format not compatible with -shared or -pie or -r"
+msgstr ""
+
+#: options.cc:1026
+#, c-format
+msgid "--hash-bucket-empty-fraction value %g out of range [0.0, 1.0)"
+msgstr ""
+
+#: options.cc:1031
+msgid "Options --incremental-changed, --incremental-unchanged, --incremental-unknown require the use of --incremental"
+msgstr ""
+
+#: options.cc:1097
+msgid "May not nest groups"
+msgstr ""
+
+#: options.cc:1109
+msgid "Group end without group start"
+msgstr ""
+
+#. I guess it's neither a long option nor a short option.
+#: options.cc:1174
+msgid "unknown option"
+msgstr ""
+
+#: options.cc:1201
+#, c-format
+msgid "%s: missing group end\n"
+msgstr ""
+
+#: options.h:571
+msgid "Report usage information"
+msgstr ""
+
+#: options.h:573
+msgid "Report version information"
+msgstr ""
+
+#: options.h:575
+msgid "Report version and target information"
+msgstr ""
+
+#: options.h:584 options.h:635
+msgid "Not supported"
+msgstr ""
+
+#: options.h:585 options.h:636
+msgid "Do not copy DT_NEEDED tags from shared libraries"
+msgstr ""
+
+#: options.h:588
+msgid "Allow unresolved references in shared libraries"
+msgstr ""
+
+#: options.h:589
+msgid "Do not allow unresolved references in shared libraries"
+msgstr ""
+
+#: options.h:592
+msgid "Only set DT_NEEDED for shared libraries if used"
+msgstr ""
+
+#: options.h:593
+msgid "Always DT_NEEDED for shared libraries"
+msgstr ""
+
+#: options.h:600
+msgid "Set input format"
+msgstr ""
+
+#: options.h:603
+msgid "-l searches for shared libraries"
+msgstr ""
+
+#: options.h:605
+msgid "-l does not search for shared libraries"
+msgstr ""
+
+#: options.h:609
+msgid "Bind defined symbols locally"
+msgstr ""
+
+#: options.h:612
+msgid "Bind defined function symbols locally"
+msgstr ""
+
+#: options.h:615
+msgid "Generate build ID note"
+msgstr ""
+
+#: options.h:616 options.h:655
+msgid "[=STYLE]"
+msgstr ""
+
+#: options.h:619
+msgid "Check segment addresses for overlaps (default)"
+msgstr ""
+
+#: options.h:620
+msgid "Do not check segment addresses for overlaps"
+msgstr ""
+
+#: options.h:624 options.h:629
+msgid "Compress .debug_* sections in the output file"
+msgstr ""
+
+#: options.h:630
+msgid "[none]"
+msgstr ""
+
+#: options.h:639
+msgid "Define common symbols"
+msgstr ""
+
+#: options.h:640
+msgid "Do not define common symbols"
+msgstr ""
+
+#: options.h:642 options.h:644
+msgid "Alias for -d"
+msgstr ""
+
+#: options.h:647
+msgid "Turn on debugging"
+msgstr ""
+
+#: options.h:648
+msgid "[all,files,script,task][,...]"
+msgstr ""
+
+#: options.h:651
+msgid "Define a symbol"
+msgstr ""
+
+#: options.h:651
+msgid "SYMBOL=EXPRESSION"
+msgstr ""
+
+#: options.h:654
+msgid "Demangle C++ symbols in log messages"
+msgstr ""
+
+#: options.h:658
+msgid "Do not demangle C++ symbols in log messages"
+msgstr ""
+
+#: options.h:662
+msgid "Try to detect violations of the One Definition Rule"
+msgstr ""
+
+#: options.h:666
+msgid "Delete all temporary local symbols"
+msgstr ""
+
+#: options.h:669
+msgid "Add data symbols to dynamic symbols"
+msgstr ""
+
+#: options.h:672
+msgid "Add C++ operator new/delete to dynamic symbols"
+msgstr ""
+
+#: options.h:675
+msgid "Add C++ typeinfo to dynamic symbols"
+msgstr ""
+
+#: options.h:678
+msgid "Read a list of dynamic symbols"
+msgstr ""
+
+#: options.h:678 options.h:732 options.h:766 options.h:893 options.h:921
+msgid "FILE"
+msgstr ""
+
+#: options.h:681
+msgid "Set program start address"
+msgstr ""
+
+#: options.h:681 options.h:908 options.h:910 options.h:912
+msgid "ADDRESS"
+msgstr ""
+
+#: options.h:684
+msgid "Exclude libraries from automatic export"
+msgstr ""
+
+#: options.h:688
+msgid "Export all dynamic symbols"
+msgstr ""
+
+#: options.h:689
+msgid "Do not export all dynamic symbols (default)"
+msgstr ""
+
+#: options.h:692
+msgid "Create exception frame header"
+msgstr ""
+
+#: options.h:695
+msgid "Treat warnings as errors"
+msgstr ""
+
+#: options.h:696
+msgid "Do not treat warnings as errors"
+msgstr ""
+
+#: options.h:699
+msgid "Call SYMBOL at unload-time"
+msgstr ""
+
+#: options.h:699 options.h:729 options.h:873 options.h:915 options.h:936
+#: options.h:939
+msgid "SYMBOL"
+msgstr ""
+
+#: options.h:702
+msgid "Set shared library name"
+msgstr ""
+
+#: options.h:702 options.h:792
+msgid "FILENAME"
+msgstr ""
+
+#: options.h:705
+msgid "Min fraction of empty buckets in dynamic hash"
+msgstr ""
+
+#: options.h:706
+msgid "FRACTION"
+msgstr ""
+
+#: options.h:709
+msgid "Dynamic hash style"
+msgstr ""
+
+#: options.h:709
+msgid "[sysv,gnu,both]"
+msgstr ""
+
+#: options.h:713
+msgid "Set dynamic linker path"
+msgstr ""
+
+#: options.h:713
+msgid "PROGRAM"
+msgstr ""
+
+#: options.h:716
+msgid "Work in progress; do not use"
+msgstr ""
+
+#: options.h:717
+msgid "Do a full build"
+msgstr ""
+
+#: options.h:720
+msgid "Assume files changed"
+msgstr ""
+
+#: options.h:723
+msgid "Assume files didn't change"
+msgstr ""
+
+#: options.h:726
+msgid "Use timestamps to check files (default)"
+msgstr ""
+
+#: options.h:729
+msgid "Call SYMBOL at load-time"
+msgstr ""
+
+#: options.h:732
+msgid "Read only symbol values from FILE"
+msgstr ""
+
+#: options.h:735
+msgid "Search for library LIBNAME"
+msgstr ""
+
+#: options.h:735
+msgid "LIBNAME"
+msgstr ""
+
+#: options.h:738
+msgid "Add directory to search path"
+msgstr ""
+
+#: options.h:738 options.h:813 options.h:816 options.h:820 options.h:887
+msgid "DIR"
+msgstr ""
+
+#: options.h:741
+msgid "Ignored for compatibility"
+msgstr ""
+
+#: options.h:741
+msgid "EMULATION"
+msgstr ""
+
+#: options.h:744
+msgid "Write map file on standard output"
+msgstr ""
+
+#: options.h:745
+msgid "Write map file"
+msgstr ""
+
+#: options.h:746
+msgid "MAPFILENAME"
+msgstr ""
+
+#: options.h:749
+msgid "Do not page align data"
+msgstr ""
+
+#: options.h:751
+msgid "Do not page align data, do not make text readonly"
+msgstr ""
+
+#: options.h:752
+msgid "Page align data, make text readonly"
+msgstr ""
+
+#: options.h:755
+msgid "Enable use of DT_RUNPATH and DT_FLAGS"
+msgstr ""
+
+#: options.h:756
+msgid "Disable use of DT_RUNPATH and DT_FLAGS"
+msgstr ""
+
+#: options.h:759
+msgid "Create an output file even if errors occur"
+msgstr ""
+
+#: options.h:762 options.h:958
+msgid "Report undefined symbols (even with --shared)"
+msgstr ""
+
+#: options.h:766
+msgid "Set output file name"
+msgstr ""
+
+#: options.h:769
+msgid "Optimize output file size"
+msgstr ""
+
+#: options.h:769
+msgid "LEVEL"
+msgstr ""
+
+#: options.h:772
+msgid "Set output format"
+msgstr ""
+
+#: options.h:772
+msgid "[binary]"
+msgstr ""
+
+#: options.h:775 options.h:777
+msgid "Create a position independent executable"
+msgstr ""
+
+#: options.h:782
+msgid "Load a plugin library"
+msgstr ""
+
+#: options.h:782
+msgid "PLUGIN"
+msgstr ""
+
+#: options.h:784
+msgid "Pass an option to the plugin"
+msgstr ""
+
+#: options.h:784
+msgid "OPTION"
+msgstr ""
+
+#: options.h:788
+msgid "Preread archive symbols when multi-threaded"
+msgstr ""
+
+#: options.h:791
+msgid "Print symbols defined and used for each input"
+msgstr ""
+
+#: options.h:795
+msgid "Ignored for SVR4 compatibility"
+msgstr ""
+
+#: options.h:798
+msgid "Generate relocations in output"
+msgstr ""
+
+#: options.h:801
+msgid "Generate relocatable output"
+msgstr ""
+
+#: options.h:804
+msgid "Relax branches on certain targets"
+msgstr ""
+
+#: options.h:807
+msgid "keep only symbols listed in this file"
+msgstr ""
+
+#: options.h:807
+msgid "[file]"
+msgstr ""
+
+#: options.h:813 options.h:816
+msgid "Add DIR to runtime search path"
+msgstr ""
+
+#: options.h:819
+msgid "Add DIR to link time shared library search path"
+msgstr ""
+
+#: options.h:823
+msgid "Strip all symbols"
+msgstr ""
+
+#: options.h:825
+msgid "Strip debugging information"
+msgstr ""
+
+#: options.h:827
+msgid "Emit only debug line number information"
+msgstr ""
+
+#: options.h:829
+msgid "Strip debug symbols that are unused by gdb (at least versions <= 6.7)"
+msgstr ""
+
+#: options.h:832
+msgid "Strip LTO intermediate code sections"
+msgstr ""
+
+#: options.h:835
+msgid "(ARM only) The maximum distance from instructions in a group of sections to their stubs. Negative values mean stubs are always after the group. 1 means using default size.\n"
+msgstr ""
+
+#: options.h:838 options.h:852 options.h:956 options.h:975
+msgid "SIZE"
+msgstr ""
+
+#: options.h:841
+msgid "Use less memory and more disk I/O (included only for compatibility with GNU ld)"
+msgstr ""
+
+#: options.h:845 options.h:848
+msgid "Generate shared library"
+msgstr ""
+
+#: options.h:851
+msgid "Stack size when -fsplit-stack function calls non-split"
+msgstr ""
+
+#: options.h:857
+msgid "Do not link against shared libraries"
+msgstr ""
+
+#: options.h:860
+msgid "Identical Code Folding. '--icf=safe' folds only ctors and dtors."
+msgstr ""
+
+#: options.h:866
+msgid "Number of iterations of ICF (default 2)"
+msgstr ""
+
+#: options.h:866 options.h:899 options.h:901 options.h:903 options.h:905
+msgid "COUNT"
+msgstr ""
+
+#: options.h:869
+msgid "List folded identical sections on stderr"
+msgstr ""
+
+#: options.h:870
+msgid "Do not list folded identical sections"
+msgstr ""
+
+#: options.h:873
+msgid "Do not fold this symbol during ICF"
+msgstr ""
+
+#: options.h:876
+msgid "Remove unused sections"
+msgstr ""
+
+#: options.h:877
+msgid "Don't remove unused sections (default)"
+msgstr ""
+
+#: options.h:880
+msgid "List removed unused sections on stderr"
+msgstr ""
+
+#: options.h:881
+msgid "Do not list removed unused sections"
+msgstr ""
+
+#: options.h:884
+msgid "Print resource usage statistics"
+msgstr ""
+
+#: options.h:887
+msgid "Set target system root directory"
+msgstr ""
+
+#: options.h:890
+msgid "Print the name of each input file"
+msgstr ""
+
+#: options.h:893
+msgid "Read linker script"
+msgstr ""
+
+#: options.h:896
+msgid "Run the linker multi-threaded"
+msgstr ""
+
+#: options.h:897
+msgid "Do not run the linker multi-threaded"
+msgstr ""
+
+#: options.h:899
+msgid "Number of threads to use"
+msgstr ""
+
+#: options.h:901
+msgid "Number of threads to use in initial pass"
+msgstr ""
+
+#: options.h:903
+msgid "Number of threads to use in middle pass"
+msgstr ""
+
+#: options.h:905
+msgid "Number of threads to use in final pass"
+msgstr ""
+
+#: options.h:908
+msgid "Set the address of the bss segment"
+msgstr ""
+
+#: options.h:910
+msgid "Set the address of the data segment"
+msgstr ""
+
+#: options.h:912
+msgid "Set the address of the text segment"
+msgstr ""
+
+#: options.h:915
+msgid "Create undefined reference to SYMBOL"
+msgstr ""
+
+#: options.h:918
+msgid "Synonym for --debug=files"
+msgstr ""
+
+#: options.h:921
+msgid "Read version script"
+msgstr ""
+
+#: options.h:924
+msgid "Warn about duplicate common symbols"
+msgstr ""
+
+#: options.h:925
+msgid "Do not warn about duplicate common symbols (default)"
+msgstr ""
+
+#: options.h:928
+msgid "Warn when skipping an incompatible library"
+msgstr ""
+
+#: options.h:929
+msgid "Don't warn when skipping an incompatible library"
+msgstr ""
+
+#: options.h:932
+msgid "Include all archive contents"
+msgstr ""
+
+#: options.h:933
+msgid "Include only needed archive contents"
+msgstr ""
+
+#: options.h:936
+msgid "Use wrapper functions for SYMBOL"
+msgstr ""
+
+#: options.h:939
+msgid "Trace references to symbol"
+msgstr ""
+
+#: options.h:942
+msgid "Default search path for Solaris compatibility"
+msgstr ""
+
+#: options.h:943
+msgid "PATH"
+msgstr ""
+
+#: options.h:946
+msgid "Start a library search group"
+msgstr ""
+
+#: options.h:948
+msgid "End a library search group"
+msgstr ""
+
+#: options.h:953
+msgid "Sort dynamic relocs"
+msgstr ""
+
+#: options.h:954
+msgid "Do not sort dynamic relocs"
+msgstr ""
+
+#: options.h:956
+msgid "Set common page size to SIZE"
+msgstr ""
+
+#: options.h:961
+msgid "Mark output as requiring executable stack"
+msgstr ""
+
+#: options.h:963
+msgid "Mark DSO to be initialized first at runtime"
+msgstr ""
+
+#: options.h:966
+msgid "Mark object to interpose all DSOs but executable"
+msgstr ""
+
+#: options.h:969
+msgid "Mark object for lazy runtime binding (default)"
+msgstr ""
+
+#: options.h:972
+msgid "Mark object requiring immediate process"
+msgstr ""
+
+#: options.h:975
+msgid "Set maximum page size to SIZE"
+msgstr ""
+
+#: options.h:978
+msgid "Do not create copy relocs"
+msgstr ""
+
+#: options.h:980
+msgid "Mark object not to use default search paths"
+msgstr ""
+
+#: options.h:983
+msgid "Mark DSO non-deletable at runtime"
+msgstr ""
+
+#: options.h:986
+msgid "Mark DSO not available to dlopen"
+msgstr ""
+
+#: options.h:989
+msgid "Mark DSO not available to dldump"
+msgstr ""
+
+#: options.h:992
+msgid "Mark output as not requiring executable stack"
+msgstr ""
+
+#: options.h:994
+msgid "Mark object for immediate function binding"
+msgstr ""
+
+#: options.h:997
+msgid "Mark DSO to indicate that needs immediate $ORIGIN processing at runtime"
+msgstr ""
+
+#: options.h:1000
+msgid "Where possible mark variables read-only after relocation"
+msgstr ""
+
+#: options.h:1001
+msgid "Don't mark variables read-only after relocation"
+msgstr ""
+
+#: output.cc:1132
+msgid "section group retained but group element discarded"
+msgstr ""
+
+#: output.cc:1860
+#, c-format
+msgid "invalid alignment %lu for section \"%s\""
+msgstr ""
+
+#: output.cc:3573
+#, c-format
+msgid "dot moves backward in linker script from 0x%llx to 0x%llx"
+msgstr ""
+
+#: output.cc:3576
+#, c-format
+msgid "address of section '%s' moves backward from 0x%llx to 0x%llx"
+msgstr ""
+
+#: output.cc:3755
+#, c-format
+msgid "nobits section %s may not precede progbits section %s in same segment"
+msgstr ""
+
+#: output.cc:3907 output.cc:3975
+#, c-format
+msgid "%s: open: %s"
+msgstr ""
+
+#: output.cc:3996
+#, c-format
+msgid "%s: mremap: %s"
+msgstr ""
+
+#: output.cc:4005
+#, c-format
+msgid "%s: mmap: %s"
+msgstr ""
+
+#: output.cc:4085
+#, c-format
+msgid "%s: mmap: failed to allocate %lu bytes for output file: %s"
+msgstr ""
+
+#: output.cc:4096
+#, c-format
+msgid "%s: munmap: %s"
+msgstr ""
+
+#: output.cc:4115
+#, c-format
+msgid "%s: write: unexpected 0 return-value"
+msgstr ""
+
+#: output.cc:4117
+#, c-format
+msgid "%s: write: %s"
+msgstr ""
+
+#: output.cc:4132
+#, c-format
+msgid "%s: close: %s"
+msgstr ""
+
+#: output.h:520
+msgid "** section headers"
+msgstr ""
+
+#: output.h:565
+msgid "** segment headers"
+msgstr ""
+
+#: output.h:613
+msgid "** file header"
+msgstr ""
+
+#: output.h:833
+msgid "** fill"
+msgstr ""
+
+#: output.h:987
+msgid "** string table"
+msgstr ""
+
+#: output.h:1300
+msgid "** dynamic relocs"
+msgstr ""
+
+#: output.h:1301 output.h:1637
+msgid "** relocs"
+msgstr ""
+
+#: output.h:1662
+msgid "** group"
+msgstr ""
+
+#: output.h:1774
+msgid "** GOT"
+msgstr ""
+
+#: output.h:1916
+msgid "** dynamic"
+msgstr ""
+
+#: output.h:2039
+msgid "** symtab xindex"
+msgstr ""
+
+#: parameters.cc:172
+#, c-format
+msgid "unrecognized output format %s"
+msgstr ""
+
+#: plugin.cc:106
+#, c-format
+msgid "%s: could not load plugin library"
+msgstr ""
+
+#: plugin.cc:116
+#, c-format
+msgid "%s: could not find onload entry point"
+msgstr ""
+
+#: plugin.cc:426
+msgid "Input files added by plug-ins in --incremental mode not supported yet.\n"
+msgstr ""
+
+#: powerpc.cc:1502 sparc.cc:2307 x86_64.cc:1632
+#, c-format
+msgid "%s: unsupported REL reloc section"
+msgstr ""
+
+#: readsyms.cc:191
+#, c-format
+msgid "%s: file is empty"
+msgstr ""
+
+#. Here we have to handle any other input file types we need.
+#: readsyms.cc:575
+#, c-format
+msgid "%s: not an object or archive"
+msgstr ""
+
+#: reduced_debug_output.cc:236
+msgid "Debug abbreviations extend beyond .debug_abbrev section; failed to reduce debug abbreviations"
+msgstr ""
+
+#: reduced_debug_output.cc:322
+msgid "Extremely large compile unit in debug info; failed to reduce debug info"
+msgstr ""
+
+#: reduced_debug_output.cc:330
+msgid "Debug info extends beyond .debug_info section;failed to reduce debug info"
+msgstr ""
+
+#: reduced_debug_output.cc:350 reduced_debug_output.cc:392
+msgid "Invalid DIE in debug info; failed to reduce debug info"
+msgstr ""
+
+#: reduced_debug_output.cc:373
+msgid "Debug info extends beyond .debug_info section; failed to reduce debug info"
+msgstr ""
+
+#: reloc.cc:297 reloc.cc:858
+#, c-format
+msgid "relocation section %u uses unexpected symbol table %u"
+msgstr ""
+
+#: reloc.cc:312 reloc.cc:875
+#, c-format
+msgid "unexpected entsize for reloc section %u: %lu != %u"
+msgstr ""
+
+#: reloc.cc:321 reloc.cc:884
+#, c-format
+msgid "reloc section %u size %lu uneven"
+msgstr ""
+
+#: reloc.cc:1203
+#, c-format
+msgid "could not convert call to '%s' to '%s'"
+msgstr ""
+
+#: reloc.cc:1343
+#, c-format
+msgid "reloc section size %zu is not a multiple of reloc size %d\n"
+msgstr ""
+
+#. We should only see externally visible symbols in the symbol
+#. table.
+#: resolve.cc:191
+msgid "invalid STB_LOCAL symbol in external symbols"
+msgstr ""
+
+#. Any target which wants to handle STB_LOOS, etc., needs to
+#. define a resolve method.
+#: resolve.cc:197
+msgid "unsupported symbol binding"
+msgstr ""
+
+#. A dynamic object cannot reference a hidden or internal symbol
+#. defined in another object.
+#: resolve.cc:266
+#, c-format
+msgid "%s symbol '%s' in %s is referenced by DSO %s"
+msgstr ""
+
+#: resolve.cc:326
+#, c-format
+msgid "common of '%s' overriding smaller common"
+msgstr ""
+
+#: resolve.cc:331
+#, c-format
+msgid "common of '%s' overidden by larger common"
+msgstr ""
+
+#: resolve.cc:336
+#, c-format
+msgid "multiple common of '%s'"
+msgstr ""
+
+#: resolve.cc:442
+#, c-format
+msgid "multiple definition of '%s'"
+msgstr ""
+
+#: resolve.cc:481
+#, c-format
+msgid "definition of '%s' overriding common"
+msgstr ""
+
+#: resolve.cc:516
+#, c-format
+msgid "definition of '%s' overriding dynamic common definition"
+msgstr ""
+
+#: resolve.cc:636
+#, c-format
+msgid "common '%s' overridden by previous definition"
+msgstr ""
+
+#: resolve.cc:766 resolve.cc:778
+msgid "command line"
+msgstr ""
+
+#: script-sections.cc:690
+msgid "dot may not move backward"
+msgstr ""
+
+#: script-sections.cc:757
+msgid "** expression"
+msgstr ""
+
+#: script-sections.cc:941
+msgid "fill value is not absolute"
+msgstr ""
+
+#: script-sections.cc:1913
+#, c-format
+msgid "alignment of section %s is not absolute"
+msgstr ""
+
+#: script-sections.cc:1957
+#, c-format
+msgid "subalign of section %s is not absolute"
+msgstr ""
+
+#: script-sections.cc:1972
+#, c-format
+msgid "fill of section %s is not absolute"
+msgstr ""
+
+#: script-sections.cc:2048
+msgid "SPECIAL constraints are not implemented"
+msgstr ""
+
+#: script-sections.cc:2090
+msgid "mismatched definition for constrained sections"
+msgstr ""
+
+#: script-sections.cc:2634
+msgid "DATA_SEGMENT_ALIGN may only appear once in a linker script"
+msgstr ""
+
+#: script-sections.cc:2649
+msgid "DATA_SEGMENT_RELRO_END may only appear once in a linker script"
+msgstr ""
+
+#: script-sections.cc:2654
+msgid "DATA_SEGMENT_RELRO_END must follow DATA_SEGMENT_ALIGN"
+msgstr ""
+
+#: script-sections.cc:2826
+msgid "no matching section constraint"
+msgstr ""
+
+#: script-sections.cc:3151
+msgid "TLS sections are not adjacent"
+msgstr ""
+
+#: script-sections.cc:3280
+msgid "allocated section not in any segment"
+msgstr ""
+
+#: script-sections.cc:3309
+#, c-format
+msgid "no segment %s"
+msgstr ""
+
+#: script-sections.cc:3323
+msgid "section in two PT_LOAD segments"
+msgstr ""
+
+#: script-sections.cc:3330
+msgid "allocated section not in any PT_LOAD segment"
+msgstr ""
+
+#: script-sections.cc:3358
+msgid "may only specify load address for PT_LOAD segment"
+msgstr ""
+
+#: script-sections.cc:3382
+#, c-format
+msgid "PHDRS load address overrides section %s load address"
+msgstr ""
+
+#. We could support this if we wanted to.
+#: script-sections.cc:3393
+msgid "using only one of FILEHDR and PHDRS is not currently supported"
+msgstr ""
+
+#: script-sections.cc:3408
+msgid "sections loaded on first page without room for file and program headers are not supported"
+msgstr ""
+
+#: script-sections.cc:3414
+msgid "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"
+msgstr ""
+
+#: script.cc:1072
+msgid "invalid use of PROVIDE for dot symbol"
+msgstr ""
+
+#: script.cc:2132
+#, c-format
+msgid "%s:%d:%d: %s"
+msgstr ""
+
+#. There are some options that we could handle here--e.g.,
+#. -lLIBRARY. Should we bother?
+#: script.cc:2297
+#, c-format
+msgid "%s:%d:%d: ignoring command OPTION; OPTION is only valid for scripts specified via -T/--script"
+msgstr ""
+
+#: script.cc:2362
+#, c-format
+msgid "%s:%d:%d: ignoring SEARCH_DIR; SEARCH_DIR is only valid for scripts specified via -T/--script"
+msgstr ""
+
+#: script.cc:2606 script.cc:2620
+#, c-format
+msgid "%s:%d:%d: DATA_SEGMENT_ALIGN not in SECTIONS clause"
+msgstr ""
+
+#: script.cc:2739
+msgid "unknown PHDR type (try integer)"
+msgstr ""
+
+#: stringpool.cc:528
+#, c-format
+msgid "%s: %s entries: %zu; buckets: %zu\n"
+msgstr ""
+
+#: stringpool.cc:532
+#, c-format
+msgid "%s: %s entries: %zu\n"
+msgstr ""
+
+#: stringpool.cc:535
+#, c-format
+msgid "%s: %s Stringdata structures: %zu\n"
+msgstr ""
+
+#: symtab.cc:857
+#, c-format
+msgid "%s: reference to %s"
+msgstr ""
+
+#: symtab.cc:859
+#, c-format
+msgid "%s: definition of %s"
+msgstr ""
+
+#: symtab.cc:1052
+#, c-format
+msgid "bad global symbol name offset %u at %zu"
+msgstr ""
+
+#: symtab.cc:1278
+msgid "--just-symbols does not make sense with a shared object"
+msgstr ""
+
+#: symtab.cc:1284
+msgid "too few symbol versions"
+msgstr ""
+
+#: symtab.cc:1333
+#, c-format
+msgid "bad symbol name offset %u at %zu"
+msgstr ""
+
+#: symtab.cc:1396
+#, c-format
+msgid "versym for symbol %zu out of range: %u"
+msgstr ""
+
+#: symtab.cc:1404
+#, c-format
+msgid "versym for symbol %zu has no name: %u"
+msgstr ""
+
+#: symtab.cc:2549 symtab.cc:2681
+#, c-format
+msgid "%s: unsupported symbol section 0x%x"
+msgstr ""
+
+#: symtab.cc:2933
+#, c-format
+msgid "%s: symbol table entries: %zu; buckets: %zu\n"
+msgstr ""
+
+#: symtab.cc:2936
+#, c-format
+msgid "%s: symbol table entries: %zu\n"
+msgstr ""
+
+#: symtab.cc:3007
+#, c-format
+msgid "while linking %s: symbol '%s' defined in multiple places (possible ODR violation):"
+msgstr ""
+
+#: target-reloc.h:259
+msgid "relocation refers to discarded comdat section"
+msgstr "å†é…ç½®ãŒç ´æ£„ã•ã‚ŒãŸ domdat セクションをå‚ç…§ã—ã¦ã„ã¾ã™"
+
+#: target-reloc.h:298
+#, c-format
+msgid "reloc has bad offset %zu"
+msgstr "å†é…ç½®ã«èª¤ã£ãŸã‚ªãƒ•ã‚»ãƒƒãƒˆ %zu ãŒã‚ã‚Šã¾ã™"
+
+#: target.cc:90
+#, c-format
+msgid "%s: unsupported ELF file type %d"
+msgstr "%s: サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ ELF ファイル型 %d ã§ã™"
+
+#: target.cc:157
+#, c-format
+msgid "linker does not include stack split support required by %s"
+msgstr "リンカ㯠%s ã§å¿…è¦ã¨ãªã‚‹ã‚¹ã‚¿ãƒƒã‚¯åˆ†å‰²ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“"
+
+#: tls.h:59
+msgid "TLS relocation out of range"
+msgstr "TLS å†é…ç½®ãŒç¯„囲外ã§ã™"
+
+#: tls.h:73
+msgid "TLS relocation against invalid instruction"
+msgstr "無効ãªå‘½ä»¤ã«å¯¾ã™ã‚‹ TLS å†é…ç½®ã§ã™"
+
+#. This output is intended to follow the GNU standards.
+#: version.cc:65
+#, c-format
+msgid "Copyright 2008 Free Software Foundation, Inc.\n"
+msgstr "Copyright 2008 Free Software Foundation, Inc.\n"
+
+#: version.cc:66
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) a later version.\n"
+"This program has absolutely no warranty.\n"
+msgstr ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) a later version.\n"
+"This program has absolutely no warranty.\n"
+
+#: workqueue-threads.cc:106
+#, c-format
+msgid "%s failed: %s"
+msgstr "%s ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: x86_64.cc:2184
+#, c-format
+msgid "unsupported reloc type %u"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„å†é…置型 %u ã§ã™"
+
+#: x86_64.cc:2524
+#, c-format
+msgid "unsupported reloc %u against local symbol"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„局所シンボルã«å¯¾ã™ã‚‹å†é…ç½® %u ã§ã™"
diff --git a/gold/po/sv.po b/gold/po/sv.po
new file mode 100644
index 0000000..201ba24
--- /dev/null
+++ b/gold/po/sv.po
@@ -0,0 +1,4733 @@
+# Swedish messages for gold.
+# Copyright © 2017 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+# Sebastian Rasmussen <sebras@gmail.com>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gold 2.24.90\n"
+"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
+"POT-Creation-Date: 2014-02-10 09:42+1030\n"
+"PO-Revision-Date: 2017-07-02 11:34+0800\n"
+"Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.0.2\n"
+
+#: archive.cc:135
+#, c-format
+msgid "script or expression reference to %s"
+msgstr ""
+
+#: archive.cc:229
+#, c-format
+msgid "%s: no archive symbol table (run ranlib)"
+msgstr ""
+
+#: archive.cc:317
+#, c-format
+msgid "%s: bad archive symbol table names"
+msgstr ""
+
+#: archive.cc:349
+#, c-format
+msgid "%s: malformed archive header at %zu"
+msgstr ""
+
+#: archive.cc:369
+#, c-format
+msgid "%s: malformed archive header size at %zu"
+msgstr ""
+
+#: archive.cc:380
+#, c-format
+msgid "%s: malformed archive header name at %zu"
+msgstr ""
+
+#: archive.cc:411
+#, c-format
+msgid "%s: bad extended name index at %zu"
+msgstr ""
+
+#: archive.cc:421
+#, c-format
+msgid "%s: bad extended name entry at header %zu"
+msgstr ""
+
+#: archive.cc:518
+#, c-format
+msgid "%s: short archive header at %zu"
+msgstr ""
+
+#: archive.cc:702
+#, fuzzy, c-format
+msgid "%s: member at %zu is not an ELF object"
+msgstr "%F%B: medlem %B i arkivet är inte ett objekt\n"
+
+#: archive.cc:1043
+#, c-format
+msgid "%s: archive libraries: %u\n"
+msgstr ""
+
+#: archive.cc:1045
+#, c-format
+msgid "%s: total archive members: %u\n"
+msgstr ""
+
+#: archive.cc:1047
+#, c-format
+msgid "%s: loaded archive members: %u\n"
+msgstr ""
+
+#: archive.cc:1277
+#, c-format
+msgid "%s: lib groups: %u\n"
+msgstr ""
+
+#: archive.cc:1279
+#, c-format
+msgid "%s: total lib groups members: %u\n"
+msgstr ""
+
+#: archive.cc:1281
+#, c-format
+msgid "%s: loaded lib groups members: %u\n"
+msgstr ""
+
+#: arm-reloc-property.cc:303
+#, fuzzy, c-format
+msgid "invalid reloc %u"
+msgstr "%F%P: ogiltig omlokaliseringssats\n"
+
+#: arm-reloc-property.cc:316
+msgid "reloc "
+msgstr ""
+
+#: arm-reloc-property.cc:316
+msgid "unimplemented reloc "
+msgstr ""
+
+#: arm-reloc-property.cc:319
+msgid "dynamic reloc "
+msgstr ""
+
+#: arm-reloc-property.cc:322
+msgid "private reloc "
+msgstr ""
+
+#: arm-reloc-property.cc:325
+msgid "obsolete reloc "
+msgstr ""
+
+#: arm.cc:1074
+msgid "** ARM cantunwind"
+msgstr ""
+
+#: arm.cc:4037
+#, c-format
+msgid "%s: Thumb BLX instruction targets thumb function '%s'."
+msgstr ""
+
+#: arm.cc:4183
+msgid "conditional branch to PLT in THUMB-2 not supported yet."
+msgstr ""
+
+#: arm.cc:5263
+msgid "PREL31 overflow in EXIDX_CANTUNWIND entry"
+msgstr ""
+
+#. Something is wrong with this section. Better not touch it.
+#: arm.cc:5509
+#, c-format
+msgid "uneven .ARM.exidx section size in %s section %u"
+msgstr ""
+
+#: arm.cc:5835
+msgid "Found non-EXIDX input sections in EXIDX output section"
+msgstr ""
+
+#: arm.cc:5889 arm.cc:5893
+#, c-format
+msgid "unwinding may not work because EXIDX input section %u of %s is not in EXIDX output section"
+msgstr ""
+
+#: arm.cc:6179
+#, c-format
+msgid "cannot scan executable section %u of %s for Cortex-A8 erratum because it has no mapping symbols."
+msgstr ""
+
+#: arm.cc:6381 object.cc:818
+#, c-format
+msgid "invalid symbol table name index: %u"
+msgstr ""
+
+#: arm.cc:6389 object.cc:824
+#, c-format
+msgid "symbol table name section has wrong type: %u"
+msgstr ""
+
+#: arm.cc:6639
+#, c-format
+msgid "EXIDX section %s(%u) links to invalid section %u in %s"
+msgstr ""
+
+#: arm.cc:6648
+#, c-format
+msgid "EXIDX sections %s(%u) and %s(%u) both link to text section%s(%u) in %s"
+msgstr ""
+
+#: arm.cc:6662
+#, c-format
+msgid "EXIDX section %s(%u) links to non-allocated section %s(%u) in %s"
+msgstr ""
+
+#. I would like to make this an error but currently ld just ignores
+#. this.
+#: arm.cc:6672
+#, c-format
+msgid "EXIDX section %s(%u) links to non-executable section %s(%u) in %s"
+msgstr ""
+
+#: arm.cc:6756
+#, c-format
+msgid "SHF_LINK_ORDER not set in EXIDX section %s of %s"
+msgstr ""
+
+#: arm.cc:6789
+#, c-format
+msgid "relocation section %u has invalid info %u"
+msgstr ""
+
+#: arm.cc:6795
+#, c-format
+msgid "section %u has multiple relocation sections %u and %u"
+msgstr ""
+
+#: arm.cc:7155
+#, c-format
+msgid "undefined or discarded local symbol %u from object %s in GOT"
+msgstr ""
+
+#: arm.cc:7177
+#, c-format
+msgid "undefined or discarded symbol %s in GOT"
+msgstr ""
+
+#: arm.cc:7293 i386.cc:168 sparc.cc:1349 tilegx.cc:182 x86_64.cc:257
+msgid "** PLT"
+msgstr ""
+
+#: arm.cc:7800 i386.cc:1685 powerpc.cc:5111 sparc.cc:2117 tilegx.cc:3123
+#: tilegx.cc:3575 x86_64.cc:2169 x86_64.cc:2598
+#, c-format
+msgid "%s: unsupported reloc %u against local symbol"
+msgstr ""
+
+#: arm.cc:7844
+#, c-format
+msgid "requires unsupported dynamic reloc %s; recompile with -fPIC"
+msgstr ""
+
+#: arm.cc:7935 i386.cc:1775 x86_64.cc:2377
+#, c-format
+msgid "section symbol %u has bad shndx %u"
+msgstr ""
+
+#. These are relocations which should only be seen by the
+#. dynamic linker, and should never be seen here.
+#: arm.cc:8044 arm.cc:8477 i386.cc:1844 i386.cc:2293 sparc.cc:2532
+#: sparc.cc:3009 tilegx.cc:3570 tilegx.cc:4123 x86_64.cc:2470 x86_64.cc:2931
+#, c-format
+msgid "%s: unexpected reloc %u in object file"
+msgstr ""
+
+#: arm.cc:8076 i386.cc:1878 sparc.cc:2431 tilegx.cc:3474 x86_64.cc:2502
+#, c-format
+msgid "local symbol %u has bad shndx %u"
+msgstr ""
+
+#: arm.cc:8177 i386.cc:2021 powerpc.cc:5655 sparc.cc:2551 tilegx.cc:3591
+#: tilegx.cc:4128 x86_64.cc:2614 x86_64.cc:3053
+#, c-format
+msgid "%s: unsupported reloc %u against global symbol %s"
+msgstr ""
+
+#: arm.cc:8635 i386.cc:2503
+#, fuzzy, c-format
+msgid "%s: unsupported RELA reloc section"
+msgstr "%s: emuleringar som stöds: "
+
+#: arm.cc:8725
+msgid "unable to provide V4BX reloc interworking fix up; the target profile does not support BX instruction"
+msgstr ""
+
+#: arm.cc:8859
+#, fuzzy, c-format
+msgid "cannot relocate %s in object file"
+msgstr "Tillåt inte oupplösta symboler i objektfiler"
+
+#: arm.cc:9333 arm.cc:9914
+#, c-format
+msgid "relocation overflow in %s"
+msgstr ""
+
+#: arm.cc:9341 arm.cc:9919
+#, c-format
+msgid "unexpected opcode while processing relocation %s"
+msgstr ""
+
+#: arm.cc:9485 i386.cc:2841 i386.cc:2923 i386.cc:2994 i386.cc:3030
+#: i386.cc:3102 powerpc.cc:7562 sparc.cc:3589 sparc.cc:3780 sparc.cc:3841
+#: sparc.cc:3948 tilegx.cc:4712 x86_64.cc:3486 x86_64.cc:3586 x86_64.cc:3664
+#: x86_64.cc:3698
+#, fuzzy, c-format
+msgid "unsupported reloc %u"
+msgstr "Emuleringar som stöds: "
+
+#: arm.cc:9564
+#, c-format
+msgid "%s: unexpected %s in object file"
+msgstr ""
+
+#: arm.cc:9899
+#, c-format
+msgid "cannot handle %s in a relocatable link"
+msgstr ""
+
+#: arm.cc:10003
+#, c-format
+msgid "Source object %s has EABI version %d but output has EABI version %d."
+msgstr ""
+
+#: arm.cc:10100 powerpc.cc:2077 target.cc:94
+#, c-format
+msgid "%s: unsupported ELF file type %d"
+msgstr ""
+
+#: arm.cc:10296
+#, fuzzy, c-format
+msgid "%s: unknown CPU architecture"
+msgstr "%P%F:%s: kan inte ställa in arkitektur: %E\n"
+
+#: arm.cc:10333
+#, c-format
+msgid "%s: conflicting CPU architectures %d/%d"
+msgstr ""
+
+#: arm.cc:10471
+#, c-format
+msgid "%s has both the current and legacy Tag_MPextension_use attributes"
+msgstr ""
+
+#: arm.cc:10499
+#, c-format
+msgid "%s uses VFP register arguments, output does not"
+msgstr ""
+
+#: arm.cc:10645
+#, c-format
+msgid "conflicting architecture profiles %c/%c"
+msgstr ""
+
+#. It's sometimes ok to mix different configs, so this is only
+#. a warning.
+#: arm.cc:10703
+#, c-format
+msgid "%s: conflicting platform configuration"
+msgstr ""
+
+#: arm.cc:10712
+#, c-format
+msgid "%s: conflicting use of R9"
+msgstr ""
+
+#: arm.cc:10725
+#, c-format
+msgid "%s: SB relative addressing conflicts with use of R9"
+msgstr ""
+
+#: arm.cc:10740
+#, c-format
+msgid "%s uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may fail"
+msgstr ""
+
+#: arm.cc:10766
+#, c-format
+msgid "%s uses %s enums yet the output is to use %s enums; use of enum values across objects may fail"
+msgstr ""
+
+#: arm.cc:10782
+#, c-format
+msgid "%s uses iWMMXt register arguments, output does not"
+msgstr ""
+
+#: arm.cc:10803
+#, c-format
+msgid "fp16 format mismatch between %s and output"
+msgstr ""
+
+#: arm.cc:10849
+#, c-format
+msgid "%s has has both the current and legacy Tag_MPextension_use attributes"
+msgstr ""
+
+#: arm.cc:10895 arm.cc:10988
+#, c-format
+msgid "%s: unknown mandatory EABI object attribute %d"
+msgstr ""
+
+#: arm.cc:10899 arm.cc:10993
+#, c-format
+msgid "%s: unknown EABI object attribute %d"
+msgstr ""
+
+#: arm.cc:11345
+#, c-format
+msgid "cannot handle branch to local %u in a merged section %s"
+msgstr ""
+
+#: arm.cc:11425 target-reloc.h:390
+#, fuzzy
+msgid "relocation refers to discarded section"
+msgstr "Ta bort symboler i kastade sektioner"
+
+#. We cannot handle this now.
+#: arm.cc:11589
+#, c-format
+msgid "multiple SHT_ARM_EXIDX sections %s and %s in a non-relocatable link"
+msgstr ""
+
+#: attributes.cc:410
+#, c-format
+msgid "%s: must be processed by '%s' toolchain"
+msgstr ""
+
+#: attributes.cc:418
+#, c-format
+msgid "%s: object tag '%d, %s' is incompatible with tag '%d, %s'"
+msgstr ""
+
+#: binary.cc:129
+#, fuzzy, c-format
+msgid "cannot open %s: %s:"
+msgstr "%F%P: kan inte öppna %s: %E\n"
+
+#: common.cc:352 output.cc:2432 output.cc:2531
+#, c-format
+msgid "out of patch space in section %s; relink with --incremental-full"
+msgstr ""
+
+#: compressed_output.cc:225
+msgid "not compressing section data: zlib error"
+msgstr ""
+
+#: cref.cc:384
+#, fuzzy, c-format
+msgid "cannot open symbol count file %s: %s"
+msgstr "%P%F: kan inte öppna utdatafilen %s: %E\n"
+
+#: cref.cc:398
+#, c-format
+msgid ""
+"\n"
+"Cross Reference Table\n"
+"\n"
+msgstr ""
+"\n"
+"Korsreferenstabell\n"
+"\n"
+
+#: cref.cc:399
+msgid "Symbol"
+msgstr "Symbol"
+
+#: cref.cc:401
+#, fuzzy
+msgid "File"
+msgstr "Fil\n"
+
+#: descriptors.cc:125
+#, c-format
+msgid "file %s was removed during the link"
+msgstr ""
+
+#: descriptors.cc:177
+msgid "out of file descriptors and couldn't close any"
+msgstr ""
+
+#: descriptors.cc:198 descriptors.cc:234 descriptors.cc:267
+#, c-format
+msgid "while closing %s: %s"
+msgstr ""
+
+#: dirsearch.cc:73
+#, fuzzy, c-format
+msgid "%s: can not read directory: %s"
+msgstr "%P%F:%s: kan inte ställa in arkitektur: %E\n"
+
+#: dwarf_reader.cc:454
+#, c-format
+msgid "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"
+msgstr ""
+
+#: dwarf_reader.cc:1513
+#, c-format
+msgid "%s: corrupt debug info in %s"
+msgstr ""
+
+#: dynobj.cc:176
+#, c-format
+msgid "unexpected duplicate type %u section: %u, %u"
+msgstr ""
+
+#: dynobj.cc:231
+#, c-format
+msgid "unexpected link in section %u header: %u != %u"
+msgstr ""
+
+#: dynobj.cc:267
+#, c-format
+msgid "DYNAMIC section %u link out of range: %u"
+msgstr ""
+
+#: dynobj.cc:275
+#, c-format
+msgid "DYNAMIC section %u link %u is not a strtab"
+msgstr ""
+
+#: dynobj.cc:304
+#, c-format
+msgid "DT_SONAME value out of range: %lld >= %lld"
+msgstr ""
+
+#: dynobj.cc:316
+#, c-format
+msgid "DT_NEEDED value out of range: %lld >= %lld"
+msgstr ""
+
+#: dynobj.cc:329
+msgid "missing DT_NULL in dynamic segment"
+msgstr ""
+
+#: dynobj.cc:382
+#, c-format
+msgid "invalid dynamic symbol table name index: %u"
+msgstr ""
+
+#: dynobj.cc:389
+#, c-format
+msgid "dynamic symbol table name section has wrong type: %u"
+msgstr ""
+
+#: dynobj.cc:476 object.cc:690 object.cc:1453
+#, c-format
+msgid "bad section name offset for section %u: %lu"
+msgstr ""
+
+#: dynobj.cc:506
+#, c-format
+msgid "duplicate definition for version %u"
+msgstr ""
+
+#: dynobj.cc:535
+#, c-format
+msgid "unexpected verdef version %u"
+msgstr ""
+
+#: dynobj.cc:551
+#, c-format
+msgid "verdef vd_cnt field too small: %u"
+msgstr ""
+
+#: dynobj.cc:559
+#, c-format
+msgid "verdef vd_aux field out of range: %u"
+msgstr ""
+
+#: dynobj.cc:570
+#, c-format
+msgid "verdaux vda_name field out of range: %u"
+msgstr ""
+
+#: dynobj.cc:580
+#, c-format
+msgid "verdef vd_next field out of range: %u"
+msgstr ""
+
+#: dynobj.cc:614
+#, c-format
+msgid "unexpected verneed version %u"
+msgstr ""
+
+#: dynobj.cc:623
+#, c-format
+msgid "verneed vn_aux field out of range: %u"
+msgstr ""
+
+#: dynobj.cc:637
+#, c-format
+msgid "vernaux vna_name field out of range: %u"
+msgstr ""
+
+#: dynobj.cc:648
+#, c-format
+msgid "verneed vna_next field out of range: %u"
+msgstr ""
+
+#: dynobj.cc:659
+#, c-format
+msgid "verneed vn_next field out of range: %u"
+msgstr ""
+
+#: dynobj.cc:708
+msgid "size of dynamic symbols is not multiple of symbol size"
+msgstr ""
+
+#: dynobj.cc:1524
+#, fuzzy, c-format
+msgid "symbol %s has undefined version %s"
+msgstr "Tillåt inte odefinierad version"
+
+#: ehframe.cc:381
+msgid "overflow in PLT unwind data; unwinding through PLT may fail"
+msgstr ""
+
+#: ehframe.h:78
+msgid "** eh_frame_hdr"
+msgstr ""
+
+#: ehframe.h:419
+msgid "** eh_frame"
+msgstr ""
+
+#: errors.cc:81 errors.cc:92
+#, c-format
+msgid "%s: fatal error: "
+msgstr ""
+
+#: errors.cc:103 errors.cc:139
+#, c-format
+msgid "%s: error: "
+msgstr ""
+
+#: errors.cc:115 errors.cc:155
+#, fuzzy, c-format
+msgid "%s: warning: "
+msgstr "varning: "
+
+#: errors.cc:179
+#, fuzzy
+msgid "warning"
+msgstr "varning: "
+
+#: errors.cc:184
+msgid "error"
+msgstr ""
+
+#: errors.cc:190
+#, fuzzy, c-format
+msgid "%s: %s: undefined reference to '%s'\n"
+msgstr "%X%C: odefinierad referens till â€%Tâ€\n"
+
+#: errors.cc:194
+#, fuzzy, c-format
+msgid "%s: %s: undefined reference to '%s', version '%s'\n"
+msgstr "%X%C: odefinierad referens till â€%Tâ€\n"
+
+#: errors.cc:198
+#, c-format
+msgid "%s: the vtable symbol may be undefined because the class is missing its key function"
+msgstr ""
+
+#: errors.cc:208
+#, c-format
+msgid "%s: "
+msgstr ""
+
+#: expression.cc:192
+#, fuzzy, c-format
+msgid "undefined symbol '%s' referenced in expression"
+msgstr "%F%S: odefinierade symbolen â€%s†refererades i uttrycket\n"
+
+#: expression.cc:230
+msgid "invalid reference to dot symbol outside of SECTIONS clause"
+msgstr ""
+
+#. Handle unary operators. We use a preprocessor macro as a hack to
+#. capture the C operator.
+#: expression.cc:302
+msgid "unary "
+msgstr ""
+
+#. Handle binary operators. We use a preprocessor macro as a hack to
+#. capture the C operator. KEEP_LEFT means that if the left operand
+#. is section relative and the right operand is not, the result uses
+#. the same section as the left operand. KEEP_RIGHT is the same with
+#. left and right swapped. IS_DIV means that we need to give an error
+#. if the right operand is zero. WARN means that we should warn if
+#. used on section relative values in a relocatable link. We always
+#. warn if used on values in different sections in a relocatable link.
+#: expression.cc:446
+msgid "binary "
+msgstr ""
+
+#: expression.cc:450
+#, fuzzy
+msgid " by zero"
+msgstr "%F%S / med noll\n"
+
+#: expression.cc:636
+msgid "max applied to section relative value"
+msgstr ""
+
+#: expression.cc:687
+msgid "min applied to section relative value"
+msgstr ""
+
+#: expression.cc:828
+msgid "aligning to section relative value"
+msgstr ""
+
+#: expression.cc:993
+#, c-format
+msgid "unknown constant %s"
+msgstr ""
+
+#: fileread.cc:141
+#, c-format
+msgid "munmap failed: %s"
+msgstr ""
+
+#: fileread.cc:209
+#, fuzzy, c-format
+msgid "%s: fstat failed: %s"
+msgstr "%P%F: bfd_hash_table_init misslyckades: %E\n"
+
+#: fileread.cc:250
+#, fuzzy, c-format
+msgid "could not reopen file %s"
+msgstr "%F%P: kan inte öppna basfil %s\n"
+
+#: fileread.cc:401
+#, fuzzy, c-format
+msgid "%s: pread failed: %s"
+msgstr "%X%P: cref-allokering misslyckades: %E\n"
+
+#: fileread.cc:415
+#, c-format
+msgid "%s: file too short: read only %lld of %lld bytes at %lld"
+msgstr ""
+
+#: fileread.cc:538
+#, c-format
+msgid "%s: attempt to map %lld bytes at offset %lld exceeds size of file; the file may be corrupt"
+msgstr ""
+
+#: fileread.cc:678
+#, fuzzy, c-format
+msgid "%s: lseek failed: %s"
+msgstr "%F%B: avslutande stängning misslyckades: %E\n"
+
+#: fileread.cc:684
+#, fuzzy, c-format
+msgid "%s: readv failed: %s"
+msgstr "%X%P: cref-allokering misslyckades: %E\n"
+
+#: fileread.cc:687
+#, c-format
+msgid "%s: file too short: read only %zd of %zd bytes at %lld"
+msgstr ""
+
+#: fileread.cc:854
+#, c-format
+msgid "%s: total bytes mapped for read: %llu\n"
+msgstr ""
+
+#: fileread.cc:856
+#, c-format
+msgid "%s: maximum bytes mapped for read at one time: %llu\n"
+msgstr ""
+
+#: fileread.cc:949
+#, fuzzy, c-format
+msgid "%s: stat failed: %s"
+msgstr "%P%F: bfd_hash_table_init misslyckades: %E\n"
+
+#: fileread.cc:1046
+#, fuzzy, c-format
+msgid "cannot find %s%s"
+msgstr "%P: kan inte hitta %s\n"
+
+#: fileread.cc:1071
+#, fuzzy, c-format
+msgid "cannot find %s"
+msgstr "%P: kan inte hitta %s\n"
+
+#: fileread.cc:1110
+#, fuzzy, c-format
+msgid "cannot open %s: %s"
+msgstr "%F%P: kan inte öppna %s: %E\n"
+
+#: gdb-index.cc:369
+#, c-format
+msgid "%s: --gdb-index currently supports only C and C++ languages"
+msgstr ""
+
+#. The top level DIE should be one of the above.
+#: gdb-index.cc:390
+#, c-format
+msgid "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit"
+msgstr ""
+
+#: gdb-index.cc:844
+#, c-format
+msgid "%s: DWARF info may be corrupt; low_pc and high_pc are in different sections"
+msgstr ""
+
+#: gdb-index.cc:970
+#, c-format
+msgid "%s: DWARF CUs: %u\n"
+msgstr ""
+
+#: gdb-index.cc:972
+#, c-format
+msgid "%s: DWARF CUs without pubnames/pubtypes: %u\n"
+msgstr ""
+
+#: gdb-index.cc:974
+#, c-format
+msgid "%s: DWARF TUs: %u\n"
+msgstr ""
+
+#: gdb-index.cc:976
+#, c-format
+msgid "%s: DWARF TUs without pubnames/pubtypes: %u\n"
+msgstr ""
+
+#: gdb-index.h:149
+msgid "** gdb_index"
+msgstr ""
+
+#: gold-threads.cc:103
+#, c-format
+msgid "pthead_mutextattr_init failed: %s"
+msgstr ""
+
+#: gold-threads.cc:107
+#, c-format
+msgid "pthread_mutextattr_settype failed: %s"
+msgstr ""
+
+#: gold-threads.cc:112
+#, fuzzy, c-format
+msgid "pthread_mutex_init failed: %s"
+msgstr "%P%F: bfd_hash_table_init misslyckades: %E\n"
+
+#: gold-threads.cc:116
+#, c-format
+msgid "pthread_mutexattr_destroy failed: %s"
+msgstr ""
+
+#: gold-threads.cc:123
+#, c-format
+msgid "pthread_mutex_destroy failed: %s"
+msgstr ""
+
+#: gold-threads.cc:131 gold-threads.cc:396
+#, c-format
+msgid "pthread_mutex_lock failed: %s"
+msgstr ""
+
+#: gold-threads.cc:139 gold-threads.cc:410
+#, c-format
+msgid "pthread_mutex_unlock failed: %s"
+msgstr ""
+
+#: gold-threads.cc:220
+#, c-format
+msgid "pthread_cond_init failed: %s"
+msgstr ""
+
+#: gold-threads.cc:227
+#, c-format
+msgid "pthread_cond_destroy failed: %s"
+msgstr ""
+
+#: gold-threads.cc:236
+#, c-format
+msgid "pthread_cond_wait failed: %s"
+msgstr ""
+
+#: gold-threads.cc:244
+#, c-format
+msgid "pthread_cond_signal failed: %s"
+msgstr ""
+
+#: gold-threads.cc:252
+#, c-format
+msgid "pthread_cond_broadcast failed: %s"
+msgstr ""
+
+#: gold-threads.cc:403
+#, c-format
+msgid "pthread_once failed: %s"
+msgstr ""
+
+#: gold.cc:101
+#, fuzzy, c-format
+msgid "%s: internal error in %s, at %s:%d\n"
+msgstr "%F%P: internt fel %s %d\n"
+
+#: gold.cc:191
+#, fuzzy
+msgid "no input files"
+msgstr "%P%F: inga indatafiler\n"
+
+#: gold.cc:221
+msgid "linking with --incremental-full"
+msgstr ""
+
+#: gold.cc:223
+msgid "restart link with --incremental-full"
+msgstr ""
+
+#: gold.cc:285
+msgid "cannot mix -r with --gc-sections or --icf"
+msgstr ""
+
+#: gold.cc:612
+#, fuzzy, c-format
+msgid "cannot mix -static with dynamic object %s"
+msgstr "%F%P: försökte länka dynamiskt objekt â€%s†statiskt\n"
+
+#: gold.cc:616
+#, c-format
+msgid "cannot mix -r with dynamic object %s"
+msgstr ""
+
+#: gold.cc:620
+#, c-format
+msgid "cannot use non-ELF output format with dynamic object %s"
+msgstr ""
+
+#: gold.cc:632
+#, c-format
+msgid "cannot mix split-stack '%s' and non-split-stack '%s' when using -r"
+msgstr ""
+
+#. FIXME: This needs to specify the location somehow.
+#: i386.cc:601 i386.cc:2655 sparc.cc:312 sparc.cc:3185 x86_64.cc:746
+#: x86_64.cc:3250
+msgid "missing expected TLS relocation"
+msgstr ""
+
+#: i386.cc:1699 sparc.cc:2229 tilegx.cc:3209 x86_64.cc:2279
+#, c-format
+msgid "%s: unsupported TLS reloc %u for IFUNC symbol"
+msgstr ""
+
+#: i386.cc:2809 i386.cc:3558 powerpc.cc:7521 sparc.cc:3583 tilegx.cc:4706
+#: x86_64.cc:3465 x86_64.cc:4205
+#, c-format
+msgid "unexpected reloc %u in object file"
+msgstr ""
+
+#: i386.cc:3002
+msgid "both SUN and GNU model TLS relocations"
+msgstr ""
+
+#: i386.cc:3572
+#, c-format
+msgid "unsupported reloc %u in object file"
+msgstr ""
+
+#: i386.cc:3802 x86_64.cc:4459
+#, c-format
+msgid "failed to match split-stack sequence at section %u offset %0zx"
+msgstr ""
+
+#: icf.cc:768
+#, c-format
+msgid "%s: ICF Converged after %u iteration(s)"
+msgstr ""
+
+#: icf.cc:771
+#, c-format
+msgid "%s: ICF stopped after %u iteration(s)"
+msgstr ""
+
+#: icf.cc:785
+#, c-format
+msgid "Could not find symbol %s to unfold\n"
+msgstr ""
+
+#: incremental.cc:80
+msgid "** incremental_inputs"
+msgstr ""
+
+#: incremental.cc:145
+#, c-format
+msgid "the link might take longer: cannot perform incremental link: %s"
+msgstr ""
+
+#: incremental.cc:411
+msgid "no incremental data from previous build"
+msgstr ""
+
+#: incremental.cc:417
+msgid "different version of incremental build data"
+msgstr ""
+
+#: incremental.cc:429
+msgid "command line changed"
+msgstr ""
+
+#: incremental.cc:456
+#, c-format
+msgid "%s: script file changed"
+msgstr ""
+
+#: incremental.cc:859
+#, fuzzy, c-format
+msgid "unsupported ELF machine number %d"
+msgstr "%XPEI-arkitekturen stöds inte: %s\n"
+
+#: incremental.cc:867 object.cc:3063
+#, fuzzy, c-format
+msgid "%s: incompatible target"
+msgstr "%s: mål som stöds:"
+
+#: incremental.cc:889
+msgid "output is not an ELF file."
+msgstr ""
+
+#: incremental.cc:912
+msgid "unsupported file: 32-bit, big-endian"
+msgstr ""
+
+#: incremental.cc:921
+msgid "unsupported file: 32-bit, little-endian"
+msgstr ""
+
+#: incremental.cc:933
+msgid "unsupported file: 64-bit, big-endian"
+msgstr ""
+
+#: incremental.cc:942
+msgid "unsupported file: 64-bit, little-endian"
+msgstr ""
+
+#: incremental.cc:2078
+msgid "COMDAT group has no signature"
+msgstr ""
+
+#: incremental.cc:2084
+#, c-format
+msgid "COMDAT group %s included twice in incremental link"
+msgstr ""
+
+#: int_encoding.cc:50 int_encoding.cc:83
+msgid "Unusually large LEB128 decoded, debug information may be corrupted"
+msgstr ""
+
+#: layout.cc:225
+#, fuzzy, c-format
+msgid "%s: total free lists: %u\n"
+msgstr "%s: total tid i länkning: %ld.%06ld\n"
+
+#: layout.cc:227
+#, c-format
+msgid "%s: total free list nodes: %u\n"
+msgstr ""
+
+#: layout.cc:229
+#, c-format
+msgid "%s: calls to Free_list::remove: %u\n"
+msgstr ""
+
+#: layout.cc:231 layout.cc:235
+#, fuzzy, c-format
+msgid "%s: nodes visited: %u\n"
+msgstr "%s: datastorlek %ld\n"
+
+#: layout.cc:233
+#, c-format
+msgid "%s: calls to Free_list::allocate: %u\n"
+msgstr ""
+
+#: layout.cc:946
+#, c-format
+msgid "Unable to create output section '%s' because it is not allowed by the SECTIONS clause of the linker script"
+msgstr ""
+
+#: layout.cc:2015
+msgid "multiple '.interp' sections in input files may cause confusing PT_INTERP segment"
+msgstr ""
+
+#: layout.cc:2079
+#, c-format
+msgid "%s: missing .note.GNU-stack section implies executable stack"
+msgstr ""
+
+#: layout.cc:2091
+#, c-format
+msgid "%s: requires executable stack"
+msgstr ""
+
+#: layout.cc:2590
+#, c-format
+msgid "unable to open --section-ordering-file file %s: %s"
+msgstr ""
+
+#: layout.cc:3024
+#, c-format
+msgid "--build-id=uuid failed: could not open /dev/urandom: %s"
+msgstr ""
+
+#: layout.cc:3031
+#, c-format
+msgid "/dev/urandom: read failed: %s"
+msgstr ""
+
+#: layout.cc:3033
+#, c-format
+msgid "/dev/urandom: expected %zu bytes, got %zd bytes"
+msgstr ""
+
+#: layout.cc:3055
+#, c-format
+msgid "--build-id argument '%s' not a valid hex number"
+msgstr ""
+
+#: layout.cc:3061
+#, fuzzy, c-format
+msgid "unrecognized --build-id argument '%s'"
+msgstr "%P: okänd flagga â€%sâ€\n"
+
+#: layout.cc:3626
+#, c-format
+msgid "load segment overlap [0x%llx -> 0x%llx] and [0x%llx -> 0x%llx]"
+msgstr ""
+
+#: layout.cc:3785 output.cc:4557
+#, c-format
+msgid "out of patch space for section %s; relink with --incremental-full"
+msgstr ""
+
+#: layout.cc:3794 output.cc:4565
+#, c-format
+msgid "%s: section changed size; relink with --incremental-full"
+msgstr ""
+
+#: layout.cc:4051
+msgid "out of patch space for symbol table; relink with --incremental-full"
+msgstr ""
+
+#: layout.cc:4122
+msgid "out of patch space for section header table; relink with --incremental-full"
+msgstr ""
+
+#: layout.cc:4840
+msgid "read-only segment has dynamic relocations"
+msgstr ""
+
+#: layout.cc:4843
+msgid "shared library text segment is not shareable"
+msgstr ""
+
+#: mapfile.cc:70
+#, fuzzy, c-format
+msgid "cannot open map file %s: %s"
+msgstr "%P%F: kan inte öppna tabellfil %s: %E\n"
+
+#: mapfile.cc:84
+#, fuzzy, c-format
+msgid "cannot close map file: %s"
+msgstr "%P%F: kan inte öppna tabellfil %s: %E\n"
+
+#: mapfile.cc:116
+#, fuzzy, c-format
+msgid ""
+"Archive member included because of file (symbol)\n"
+"\n"
+msgstr ""
+"Arkivmedlem inkluderad för att tillfredsställa referens från fil (symbol)\n"
+"\n"
+
+#: mapfile.cc:159
+#, c-format
+msgid ""
+"\n"
+"Allocating common symbols\n"
+msgstr ""
+"\n"
+"Allokerar gemensamma symboler\n"
+
+#: mapfile.cc:161
+#, c-format
+msgid ""
+"Common symbol size file\n"
+"\n"
+msgstr ""
+"Gemensam symbol storlek fil\n"
+"\n"
+
+#: mapfile.cc:195
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Memory map\n"
+"\n"
+msgstr ""
+"\n"
+"Minneskonfiguration\n"
+"\n"
+
+#: mapfile.cc:367
+#, c-format
+msgid ""
+"\n"
+"Discarded input sections\n"
+"\n"
+msgstr ""
+"\n"
+"Överhoppade indatasektioner\n"
+"\n"
+
+#: merge.cc:493
+#, c-format
+msgid "%s: %s merged constants size: %lu; input: %zu; output: %zu\n"
+msgstr ""
+
+#: merge.cc:520
+msgid "mergeable string section length not multiple of character size"
+msgstr ""
+
+#: merge.cc:529
+#, c-format
+msgid "%s: last entry in mergeable string section '%s' not null terminated"
+msgstr ""
+
+#: merge.cc:604
+#, c-format
+msgid "%s: section %s contains incorrectly aligned strings; the alignment of those strings won't be preserved"
+msgstr ""
+
+#: merge.cc:726
+#, c-format
+msgid "%s: %s input bytes: %zu\n"
+msgstr ""
+
+#: merge.cc:728
+#, c-format
+msgid "%s: %s input strings: %zu\n"
+msgstr ""
+
+#: merge.h:366
+msgid "** merge constants"
+msgstr ""
+
+#: merge.h:495
+msgid "** merge strings"
+msgstr ""
+
+#: nacl.cc:43 object.cc:174 object.cc:3111 output.cc:5185
+#, c-format
+msgid "%s: %s"
+msgstr ""
+
+#: object.cc:101
+msgid "missing SHT_SYMTAB_SHNDX section"
+msgstr ""
+
+#: object.cc:145
+#, c-format
+msgid "symbol %u out of range for SHT_SYMTAB_SHNDX section"
+msgstr ""
+
+#: object.cc:152
+#, c-format
+msgid "extended index for symbol %u out of range: %u"
+msgstr ""
+
+#: object.cc:207
+#, c-format
+msgid "section name section has wrong type: %u"
+msgstr ""
+
+#: object.cc:914
+#, c-format
+msgid "section group %u info %u out of range"
+msgstr ""
+
+#: object.cc:933
+#, c-format
+msgid "symbol %u name offset %u out of range"
+msgstr ""
+
+#: object.cc:951
+#, c-format
+msgid "symbol %u invalid section index %u"
+msgstr ""
+
+#: object.cc:1003
+#, c-format
+msgid "section %u in section group %u out of range"
+msgstr ""
+
+#: object.cc:1011
+#, c-format
+msgid "invalid section group %u refers to earlier section %u"
+msgstr ""
+
+#: object.cc:1380 reloc.cc:290 reloc.cc:939
+#, c-format
+msgid "relocation section %u has bad info %u"
+msgstr ""
+
+#: object.cc:1610
+#, fuzzy, c-format
+msgid "%s: removing unused section from '%s' in file '%s'"
+msgstr "Lista borttagna oanvända sektioner via standard fel"
+
+#: object.cc:1636
+#, c-format
+msgid "%s: ICF folding section '%s' in file '%s'into '%s' in file '%s'"
+msgstr ""
+
+#: object.cc:1927
+msgid "size of symbols is not multiple of symbol size"
+msgstr ""
+
+#: object.cc:2156
+#, c-format
+msgid "local symbol %u section name out of range: %u >= %u"
+msgstr ""
+
+#: object.cc:2246
+#, c-format
+msgid "unknown section index %u for local symbol %u"
+msgstr ""
+
+#: object.cc:2256
+#, c-format
+msgid "local symbol %u section index %u out of range"
+msgstr ""
+
+#: object.cc:2826 reloc.cc:870
+#, c-format
+msgid "could not decompress section %s"
+msgstr ""
+
+#: object.cc:2942
+#, fuzzy, c-format
+msgid "%s is not supported but is required for %s in %s"
+msgstr "%P%X: Storleken %d för gruppen %s stöds inte\n"
+
+#: object.cc:3019
+#, fuzzy
+msgid "function "
+msgstr ": I funktionen \"%T\":\n"
+
+#: object.cc:3053
+#, fuzzy, c-format
+msgid "%s: unsupported ELF machine number %d"
+msgstr "%XPEI-arkitekturen stöds inte: %s\n"
+
+#: object.cc:3127 plugin.cc:1822
+#, c-format
+msgid "%s: not configured to support 32-bit big-endian object"
+msgstr ""
+
+#: object.cc:3143 plugin.cc:1831
+#, c-format
+msgid "%s: not configured to support 32-bit little-endian object"
+msgstr ""
+
+#: object.cc:3162 plugin.cc:1843
+#, c-format
+msgid "%s: not configured to support 64-bit big-endian object"
+msgstr ""
+
+#: object.cc:3178 plugin.cc:1852
+#, c-format
+msgid "%s: not configured to support 64-bit little-endian object"
+msgstr ""
+
+#: options.cc:157
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [options] file...\n"
+"Options:\n"
+msgstr "Användning: %s [flaggor] fil…\n"
+
+#. config.guess and libtool.m4 look in ld --help output for the
+#. string "supported targets".
+#: options.cc:165
+#, c-format
+msgid "%s: supported targets:"
+msgstr "%s: mål som stöds:"
+
+#: options.cc:174
+#, fuzzy, c-format
+msgid "%s: supported emulations:"
+msgstr "%s: emuleringar som stöds: "
+
+#: options.cc:186
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr ""
+"Rapportera fel till %s\n"
+"Rapportera fel i översättningen till tp-sv@listor.tp-sv.se\n"
+
+#: options.cc:203 options.cc:213 options.cc:223
+#, c-format
+msgid "%s: invalid option value (expected an integer): %s"
+msgstr ""
+
+#: options.cc:233 options.cc:244
+#, c-format
+msgid "%s: invalid option value (expected a floating point number): %s"
+msgstr ""
+
+#: options.cc:253
+#, c-format
+msgid "%s: must take a non-empty argument"
+msgstr ""
+
+#: options.cc:294
+#, c-format
+msgid "%s: must take one of the following arguments: %s"
+msgstr ""
+
+#: options.cc:325
+#, fuzzy, c-format
+msgid " Supported targets:\n"
+msgstr "%s: mål som stöds:"
+
+#: options.cc:333
+#, c-format
+msgid " Supported emulations:\n"
+msgstr " Emuleringar som stöds:\n"
+
+#: options.cc:476
+#, fuzzy
+msgid "invalid argument to --section-start; must be SECTION=ADDRESS"
+msgstr "%P%F: ogiltigt argument till flaggan â€--section-startâ€\n"
+
+#: options.cc:489
+#, fuzzy
+msgid "--section-start address missing"
+msgstr "Ställ in startadress"
+
+#: options.cc:498
+#, c-format
+msgid "--section-start argument %s is not a valid hex number"
+msgstr ""
+
+#: options.cc:535
+#, fuzzy, c-format
+msgid "unable to parse script file %s"
+msgstr "öppnade skriptfilen %s\n"
+
+#: options.cc:543
+#, fuzzy, c-format
+msgid "unable to parse version script file %s"
+msgstr "öppnade skriptfilen %s\n"
+
+#: options.cc:551
+#, c-format
+msgid "unable to parse dynamic-list script file %s"
+msgstr ""
+
+#: options.cc:663
+#, c-format
+msgid "format '%s' not supported; treating as elf (supported formats: elf, binary)"
+msgstr ""
+
+#: options.cc:705
+#, fuzzy, c-format
+msgid "%s: use the --help option for usage information\n"
+msgstr "%P%F: använd flaggan --help för användningsinformation\n"
+
+#: options.cc:714
+#, fuzzy, c-format
+msgid "%s: %s: %s\n"
+msgstr "%P: läge %s\n"
+
+#: options.cc:818
+msgid "unexpected argument"
+msgstr ""
+
+#: options.cc:831 options.cc:892
+#, fuzzy
+msgid "missing argument"
+msgstr "%P%F: argument saknas till -m\n"
+
+#: options.cc:903
+msgid "unknown -z option"
+msgstr ""
+
+#: options.cc:1115
+#, c-format
+msgid "ignoring --threads: %s was compiled without thread support"
+msgstr ""
+
+#: options.cc:1122
+#, c-format
+msgid "ignoring --thread-count: %s was compiled without thread support"
+msgstr ""
+
+#: options.cc:1176
+#, c-format
+msgid "unable to open -retain-symbols-file file %s: %s"
+msgstr ""
+
+#: options.cc:1213
+msgid "-shared and -static are incompatible"
+msgstr ""
+
+#: options.cc:1215
+msgid "-shared and -pie are incompatible"
+msgstr ""
+
+#: options.cc:1217
+msgid "-pie and -static are incompatible"
+msgstr ""
+
+#: options.cc:1220
+msgid "-shared and -r are incompatible"
+msgstr ""
+
+#: options.cc:1222
+msgid "-pie and -r are incompatible"
+msgstr ""
+
+#: options.cc:1227
+#, fuzzy
+msgid "-F/--filter may not used without -shared"
+msgstr "%P%F: -f kan inte användas utan -shared\n"
+
+#: options.cc:1229
+#, fuzzy
+msgid "-f/--auxiliary may not be used without -shared"
+msgstr "%P%F: -f kan inte användas utan -shared\n"
+
+#: options.cc:1234
+msgid "-retain-symbols-file does not yet work with -r"
+msgstr ""
+
+#: options.cc:1240
+msgid "binary output format not compatible with -shared or -pie or -r"
+msgstr ""
+
+#: options.cc:1246
+#, c-format
+msgid "--hash-bucket-empty-fraction value %g out of range [0.0, 1.0)"
+msgstr ""
+
+#: options.cc:1251
+msgid "Options --incremental-changed, --incremental-unchanged, --incremental-unknown require the use of --incremental"
+msgstr ""
+
+#: options.cc:1261
+msgid "incremental linking is not compatible with -r"
+msgstr ""
+
+#: options.cc:1263
+msgid "incremental linking is not compatible with --emit-relocs"
+msgstr ""
+
+#: options.cc:1266
+msgid "incremental linking is not compatible with --plugin"
+msgstr ""
+
+#: options.cc:1269
+msgid "ignoring --gc-sections for an incremental link"
+msgstr ""
+
+#: options.cc:1274
+msgid "ignoring --icf for an incremental link"
+msgstr ""
+
+#: options.cc:1279
+msgid "ignoring --compress-debug-sections for an incremental link"
+msgstr ""
+
+#: options.cc:1359
+msgid "May not nest groups"
+msgstr ""
+
+#: options.cc:1361
+#, fuzzy
+msgid "may not nest groups in libraries"
+msgstr "%P%F: får inte nästla grupper (--help för användning)\n"
+
+#: options.cc:1373
+msgid "Group end without group start"
+msgstr ""
+
+#: options.cc:1383
+#, fuzzy
+msgid "may not nest libraries"
+msgstr "Länka inte mot delade bibliotek"
+
+#: options.cc:1385
+msgid "may not nest libraries in groups"
+msgstr ""
+
+#: options.cc:1397
+msgid "lib end without lib start"
+msgstr ""
+
+#. I guess it's neither a long option nor a short option.
+#: options.cc:1462
+msgid "unknown option"
+msgstr ""
+
+#: options.cc:1489
+#, fuzzy, c-format
+msgid "%s: missing group end\n"
+msgstr "%P%F: argument saknas till -m\n"
+
+#: options.h:624
+#, fuzzy
+msgid "Report usage information"
+msgstr "Visa versionsinformation"
+
+#: options.h:626
+#, fuzzy
+msgid "Report version information"
+msgstr "Visa versionsinformation"
+
+#: options.h:628
+#, fuzzy
+msgid "Report version and target information"
+msgstr "Visa versions- och emuleringsinformation"
+
+#: options.h:637 options.h:712
+#, fuzzy
+msgid "Not supported"
+msgstr "%P%F: -pie stöds inte\n"
+
+#: options.h:638 options.h:713
+#, fuzzy
+msgid "Do not copy DT_NEEDED tags from shared libraries"
+msgstr "Länka inte mot delade bibliotek"
+
+#: options.h:641 options.h:1289
+#, fuzzy
+msgid "Allow multiple definitions of symbols"
+msgstr "Tillåt flera defintioner"
+
+#: options.h:642
+#, fuzzy
+msgid "Do not allow multiple definitions"
+msgstr "Tillåt flera defintioner"
+
+#: options.h:645
+msgid "Allow unresolved references in shared libraries"
+msgstr "Tillåt oupplösta symboler i delade bibliotek"
+
+#: options.h:646
+#, fuzzy
+msgid "Do not allow unresolved references in shared libraries"
+msgstr "Tillåt inte oupplösta symboler i delade bibliotek"
+
+#: options.h:649
+#, fuzzy
+msgid "Only set DT_NEEDED for shared libraries if used"
+msgstr "Ställ endast in DT_NEEDED för följande dynamiska bibliotek om använda"
+
+#: options.h:650
+msgid "Always DT_NEEDED for shared libraries"
+msgstr ""
+
+#: options.h:653 options.h:831 options.h:1197 options.h:1207
+msgid "Ignored"
+msgstr "Ignorerad"
+
+#: options.h:653
+#, fuzzy
+msgid "[ignored]"
+msgstr "Ignorerad"
+
+#: options.h:661
+#, fuzzy
+msgid "Set input format"
+msgstr "Skriv ut standardutskriftsformat"
+
+#: options.h:664
+#, fuzzy
+msgid "-l searches for shared libraries"
+msgstr "Tillåt oupplösta symboler i delade bibliotek"
+
+#: options.h:666
+#, fuzzy
+msgid "-l does not search for shared libraries"
+msgstr "Länka inte mot delade bibliotek"
+
+#: options.h:669
+msgid "alias for -Bdynamic"
+msgstr ""
+
+#: options.h:671
+msgid "alias for -Bstatic"
+msgstr ""
+
+#: options.h:674
+#, fuzzy
+msgid "Use group name lookup rules for shared library"
+msgstr "Ställ in internt namn på delat bibliotek"
+
+#: options.h:677
+#, fuzzy
+msgid "Bind defined symbols locally"
+msgstr "Tillåt inga odefinierade symboler"
+
+#: options.h:680
+#, fuzzy
+msgid "Bind defined function symbols locally"
+msgstr "Bind globala funktionsreferenser lokalt"
+
+#: options.h:683
+msgid "Generate build ID note"
+msgstr ""
+
+#: options.h:684 options.h:740
+msgid "[=STYLE]"
+msgstr "[=STIL]"
+
+#: options.h:688
+msgid "Chunk size for '--build-id=tree'"
+msgstr ""
+
+#: options.h:688 options.h:693 options.h:1086 options.h:1100 options.h:1268
+#: options.h:1287
+msgid "SIZE"
+msgstr "STORLEK"
+
+#: options.h:692
+msgid "Minimum output file size for '--build-id=tree' to work differently than '--build-id=sha1'"
+msgstr ""
+
+#: options.h:696
+#, fuzzy
+msgid "Check segment addresses for overlaps (default)"
+msgstr "Kontrollera sektionsadresser för överlappningar (standard)"
+
+#: options.h:697
+#, fuzzy
+msgid "Do not check segment addresses for overlaps"
+msgstr "Kontrollera inte sektionsadresser för överlappningar"
+
+#: options.h:701 options.h:706
+msgid "Compress .debug_* sections in the output file"
+msgstr ""
+
+#: options.h:707
+msgid "[none]"
+msgstr ""
+
+#: options.h:716
+msgid "Output cross reference table"
+msgstr "Skapa korsreferenstabell"
+
+#: options.h:717
+#, fuzzy
+msgid "Do not output cross reference table"
+msgstr "Skapa korsreferenstabell"
+
+#: options.h:720
+msgid "Use DT_INIT_ARRAY for all constructors (default)"
+msgstr ""
+
+#: options.h:721
+msgid "Handle constructors as directed by compiler"
+msgstr ""
+
+#: options.h:724
+#, fuzzy
+msgid "Define common symbols"
+msgstr "Definiera en symbol"
+
+#: options.h:725
+#, fuzzy
+msgid "Do not define common symbols"
+msgstr "Definiera inte gemensam lagring"
+
+#: options.h:727 options.h:729
+msgid "Alias for -d"
+msgstr ""
+
+#: options.h:732
+msgid "Turn on debugging"
+msgstr ""
+
+#: options.h:733
+msgid "[all,files,script,task][,...]"
+msgstr ""
+
+#: options.h:736
+msgid "Define a symbol"
+msgstr "Definiera en symbol"
+
+#: options.h:736
+msgid "SYMBOL=EXPRESSION"
+msgstr "SYMBOL=UTTRYCK"
+
+#: options.h:739
+#, fuzzy
+msgid "Demangle C++ symbols in log messages"
+msgstr "Avkoda inte symbolnamn"
+
+#: options.h:743
+#, fuzzy
+msgid "Do not demangle C++ symbols in log messages"
+msgstr "Avkoda inte symbolnamn"
+
+#: options.h:747
+msgid "Look for violations of the C++ One Definition Rule"
+msgstr ""
+
+#: options.h:748
+msgid "Do not look for violations of the C++ One Definition Rule"
+msgstr ""
+
+#: options.h:751
+#, fuzzy
+msgid "Delete all local symbols"
+msgstr "Kasta alla lokala symboler"
+
+#: options.h:753
+#, fuzzy
+msgid "Delete all temporary local symbols"
+msgstr "Kasta temporära lokala symboler (standard)"
+
+#: options.h:756
+#, fuzzy
+msgid "Add data symbols to dynamic symbols"
+msgstr "Lägg till datasymboler till dynamisk lista"
+
+#: options.h:759
+#, fuzzy
+msgid "Add C++ operator new/delete to dynamic symbols"
+msgstr "Använd C++-operator new/delete dynamisk lista"
+
+#: options.h:762
+#, fuzzy
+msgid "Add C++ typeinfo to dynamic symbols"
+msgstr "Använd C++-typinformation dynamisk lista"
+
+#: options.h:765
+#, fuzzy
+msgid "Read a list of dynamic symbols"
+msgstr "Exportera alla dynamiska symboler"
+
+#: options.h:765 options.h:873 options.h:896 options.h:964 options.h:1033
+#: options.h:1142 options.h:1190
+msgid "FILE"
+msgstr "FIL"
+
+#: options.h:768
+#, fuzzy
+msgid "Set program start address"
+msgstr "Ställ in startadress"
+
+#: options.h:768 options.h:1157 options.h:1159 options.h:1161 options.h:1164
+#: options.h:1166
+msgid "ADDRESS"
+msgstr "ADRESS"
+
+#: options.h:771
+#, fuzzy
+msgid "Exclude libraries from automatic export"
+msgstr ""
+" --exclude-libs bibl,bibl,… Exkludera bibliotek från automatisk\n"
+" export\n"
+
+#: options.h:775
+msgid "Export all dynamic symbols"
+msgstr "Exportera alla dynamiska symboler"
+
+#: options.h:776
+#, fuzzy
+msgid "Do not export all dynamic symbols (default)"
+msgstr "Exportera alla dynamiska symboler"
+
+#: options.h:779
+#, fuzzy
+msgid "Export SYMBOL to dynamic symbol table"
+msgstr "Exportera alla dynamiska symboler"
+
+#: options.h:779 options.h:807 options.h:893 options.h:1122 options.h:1177
+#: options.h:1234 options.h:1237
+msgid "SYMBOL"
+msgstr "SYMBOL"
+
+#: options.h:782
+#, fuzzy
+msgid "Link big-endian objects."
+msgstr "Länka objekt som är big-endian"
+
+#: options.h:785
+#, fuzzy
+msgid "Link little-endian objects."
+msgstr "Länka objekt som är little-endian"
+
+#: options.h:788
+msgid "Create exception frame header"
+msgstr ""
+
+#: options.h:791
+msgid "(ARM only) Do not warn about objects with incompatible enum sizes"
+msgstr ""
+
+#: options.h:795
+msgid "Auxiliary filter for shared object symbol table"
+msgstr "Yttre filter för symboltabell över delade objekt"
+
+#: options.h:796 options.h:800
+msgid "SHLIB"
+msgstr "DELBIBL"
+
+#: options.h:799
+msgid "Filter for shared object symbol table"
+msgstr "Filter för symboltabell över delade objekt"
+
+#: options.h:803
+msgid "Treat warnings as errors"
+msgstr "Behandla varningar som fel"
+
+#: options.h:804
+#, fuzzy
+msgid "Do not treat warnings as errors"
+msgstr "Behandla inte varningar som fel (standard)"
+
+#: options.h:807
+msgid "Call SYMBOL at unload-time"
+msgstr "Anropa SYMBOL vid urladdning"
+
+#: options.h:810
+msgid "(ARM only) Fix binaries for Cortex-A8 erratum."
+msgstr ""
+
+#: options.h:811
+msgid "(ARM only) Do not fix binaries for Cortex-A8 erratum."
+msgstr ""
+
+#: options.h:814
+msgid "(ARM only) Fix binaries for ARM1176 erratum."
+msgstr ""
+
+#: options.h:815
+msgid "(ARM only) Do not fix binaries for ARM1176 erratum."
+msgstr ""
+
+#: options.h:818
+msgid "(ARM only) Merge exidx entries in debuginfo."
+msgstr ""
+
+#: options.h:819
+msgid "(ARM only) Do not merge exidx entries in debuginfo."
+msgstr ""
+
+#: options.h:822
+msgid "(ARM only) Rewrite BX rn as MOV pc, rn for ARMv4"
+msgstr ""
+
+#: options.h:826
+msgid "(ARM only) Rewrite BX rn branch to ARMv4 interworking veneer"
+msgstr ""
+
+#: options.h:834
+msgid "Generate .gdb_index section"
+msgstr ""
+
+#: options.h:835
+msgid "Do not generate .gdb_index section"
+msgstr ""
+
+#: options.h:838
+msgid "Enable STB_GNU_UNIQUE symbol binding (default)"
+msgstr ""
+
+#: options.h:839
+msgid "Disable STB_GNU_UNIQUE symbol binding"
+msgstr ""
+
+#: options.h:842
+#, fuzzy
+msgid "Set shared library name"
+msgstr "Skapa ett delat bibliotek"
+
+#: options.h:842 options.h:1016 options.h:1050
+msgid "FILENAME"
+msgstr "FILNAMN"
+
+#: options.h:845
+msgid "Min fraction of empty buckets in dynamic hash"
+msgstr ""
+
+#: options.h:846
+msgid "FRACTION"
+msgstr ""
+
+#: options.h:849
+msgid "Dynamic hash style"
+msgstr ""
+
+#: options.h:849
+msgid "[sysv,gnu,both]"
+msgstr ""
+
+#: options.h:853
+#, fuzzy
+msgid "Set dynamic linker path"
+msgstr "Läs in dynamisk lista"
+
+#: options.h:853
+msgid "PROGRAM"
+msgstr "PROGRAM"
+
+#: options.h:856
+msgid "Do an incremental link if possible; otherwise, do a full link and prepare output for incremental linking"
+msgstr ""
+
+#: options.h:861
+msgid "Do a full link (default)"
+msgstr ""
+
+#: options.h:864
+msgid "Do a full link and prepare output for incremental linking"
+msgstr ""
+
+#: options.h:868
+msgid "Do an incremental link; exit if not possible"
+msgstr ""
+
+#: options.h:871
+msgid "Set base file for incremental linking (default is output file)"
+msgstr ""
+
+#: options.h:876
+msgid "Assume files changed"
+msgstr ""
+
+#: options.h:879
+msgid "Assume files didn't change"
+msgstr ""
+
+#: options.h:882
+msgid "Use timestamps to check files (default)"
+msgstr ""
+
+#: options.h:885
+msgid "Assume startup files unchanged (files preceding this option)"
+msgstr ""
+
+#: options.h:889
+msgid "Amount of extra space to allocate for patches"
+msgstr ""
+
+#: options.h:890
+msgid "PERCENT"
+msgstr ""
+
+#: options.h:893
+msgid "Call SYMBOL at load-time"
+msgstr "Anropa SYMBOL vid inläsning"
+
+#: options.h:896
+#, fuzzy
+msgid "Read only symbol values from FILE"
+msgstr "Behåll endast symboler angivna i FIL"
+
+#: options.h:900
+msgid "Map whole files to memory (default on 64-bit hosts)"
+msgstr ""
+
+#: options.h:901
+msgid "Map relevant file parts to memory (default on 32-bit hosts)"
+msgstr ""
+
+#: options.h:904
+msgid "Keep files mapped across passes (default)"
+msgstr ""
+
+#: options.h:905
+msgid "Release mapped files after each pass"
+msgstr ""
+
+#: options.h:908
+msgid "Generate unwind information for PLT (default)"
+msgstr ""
+
+#: options.h:909
+msgid "Do not generate unwind information for PLT"
+msgstr ""
+
+#: options.h:912
+msgid "Search for library LIBNAME"
+msgstr "Sök efter biblioteket BIBLNAMN"
+
+#: options.h:912
+msgid "LIBNAME"
+msgstr "BIBLNAMN"
+
+#: options.h:915
+#, fuzzy
+msgid "Add directory to search path"
+msgstr "Lägg till KATALOG till bibliotekssökvägen"
+
+#: options.h:915 options.h:1039 options.h:1042 options.h:1046 options.h:1136
+msgid "DIR"
+msgstr ""
+
+#: options.h:918
+msgid "Enable text section reordering for GCC section names (default)"
+msgstr ""
+
+#: options.h:920
+msgid "Disable text section reordering for GCC section names"
+msgstr ""
+
+#: options.h:923
+#, fuzzy
+msgid "Only search directories specified on the command line."
+msgstr ""
+"Använd endast bibliotekskataloger som anges\n"
+" på kommandoraden"
+
+#: options.h:927
+msgid "Put read-only non-executable sections in their own segment"
+msgstr ""
+
+#: options.h:931
+msgid "Set offset between executable and read-only segments"
+msgstr ""
+
+#: options.h:932
+msgid "OFFSET"
+msgstr ""
+
+#: options.h:935
+msgid "Set GNU linker emulation; obsolete"
+msgstr ""
+
+#: options.h:935
+msgid "EMULATION"
+msgstr "EMULERING"
+
+#: options.h:938
+msgid "Map the output file for writing (default)."
+msgstr ""
+
+#: options.h:939
+msgid "Do not map the output file for writing."
+msgstr ""
+
+#: options.h:942
+#, fuzzy
+msgid "Write map file on standard output"
+msgstr "Visa tabellfil på standard ut"
+
+#: options.h:943
+#, fuzzy
+msgid "Write map file"
+msgstr "Skriv en tabellfil"
+
+#: options.h:944
+#, fuzzy
+msgid "MAPFILENAME"
+msgstr "FILNAMN"
+
+#: options.h:947
+msgid "Do not page align data"
+msgstr "Justera inte data efter jämna sidor"
+
+#: options.h:949
+msgid "Do not page align data, do not make text readonly"
+msgstr "Justera inte data efter jämna sidor, gör inte texten endast läsbar"
+
+#: options.h:950
+msgid "Page align data, make text readonly"
+msgstr "Sidjustera data, gör texten endast läsbar"
+
+#: options.h:953
+msgid "Enable use of DT_RUNPATH and DT_FLAGS"
+msgstr ""
+
+#: options.h:954
+msgid "Disable use of DT_RUNPATH and DT_FLAGS"
+msgstr ""
+
+#: options.h:957
+msgid "Create an output file even if errors occur"
+msgstr "Skapa en utdatafil även om fel förekommer"
+
+#: options.h:960 options.h:1270
+#, fuzzy
+msgid "Report undefined symbols (even with --shared)"
+msgstr "Rapportera oupplösta symboler som varning"
+
+#: options.h:964
+msgid "Set output file name"
+msgstr "Ställ in utdatafilnamnet"
+
+#: options.h:967
+#, fuzzy
+msgid "Optimize output file size"
+msgstr "Optimera utdatafil"
+
+#: options.h:967
+msgid "LEVEL"
+msgstr ""
+
+#: options.h:970
+#, fuzzy
+msgid "Set output format"
+msgstr "Skriv ut standardutskriftsformat"
+
+#: options.h:970
+msgid "[binary]"
+msgstr ""
+
+#: options.h:973 options.h:982
+#, fuzzy
+msgid "(ARM only) Ignore for backward compatibility"
+msgstr "Ignorerad för kompatibilitet med SVR4"
+
+#: options.h:976 options.h:978
+msgid "Create a position independent executable"
+msgstr "Skapa en positionsoberoende körbar fil"
+
+#: options.h:985
+msgid "(PowerPC64 only) Align PLT call stubs to fit cache lines"
+msgstr ""
+
+#: options.h:986
+msgid "[=P2ALIGN]"
+msgstr ""
+
+#: options.h:989
+msgid "(PowerPC64 only) PLT call stubs should load r11"
+msgstr ""
+
+#: options.h:990
+msgid "(PowerPC64 only) PLT call stubs should not load r11"
+msgstr ""
+
+#: options.h:993
+msgid "(PowerPC64 only) PLT call stubs with load-load barrier"
+msgstr ""
+
+#: options.h:994
+msgid "(PowerPC64 only) PLT call stubs without barrier"
+msgstr ""
+
+#: options.h:998
+#, fuzzy
+msgid "Load a plugin library"
+msgstr "Läs in namngivet instick"
+
+#: options.h:998
+msgid "PLUGIN"
+msgstr "INSTICK"
+
+#: options.h:1000
+msgid "Pass an option to the plugin"
+msgstr ""
+
+#: options.h:1000
+msgid "OPTION"
+msgstr ""
+
+#: options.h:1004
+msgid "Use posix_fallocate to reserve space in the output file (default)."
+msgstr ""
+
+#: options.h:1006
+msgid "Use fallocate or ftruncate to reserve space."
+msgstr ""
+
+#: options.h:1009
+msgid "Preread archive symbols when multi-threaded"
+msgstr ""
+
+#: options.h:1012
+msgid "Print default output format"
+msgstr "Skriv ut standardutskriftsformat"
+
+#: options.h:1015
+msgid "Print symbols defined and used for each input"
+msgstr ""
+
+#: options.h:1019
+msgid "Ignored for SVR4 compatibility"
+msgstr "Ignorerad för kompatibilitet med SVR4"
+
+#: options.h:1022
+#, fuzzy
+msgid "Generate relocations in output"
+msgstr "Generera omlokaliseringsbar utdata"
+
+#: options.h:1025
+msgid "Generate relocatable output"
+msgstr "Generera omlokaliseringsbar utdata"
+
+#: options.h:1027
+msgid "Synonym for -r"
+msgstr ""
+
+#: options.h:1030
+msgid "Relax branches on certain targets"
+msgstr "Slappna av greningar på vissa mål"
+
+#: options.h:1033
+#, fuzzy
+msgid "keep only symbols listed in this file"
+msgstr "Behåll endast symboler angivna i FIL"
+
+#: options.h:1039 options.h:1042
+#, fuzzy
+msgid "Add DIR to runtime search path"
+msgstr "Lägg till KATALOG till bibliotekssökvägen"
+
+#: options.h:1045
+#, fuzzy
+msgid "Add DIR to link time shared library search path"
+msgstr "Ställ in länkningstidssökväg för delade bibliotek"
+
+#: options.h:1049
+msgid "Layout sections in the order specified."
+msgstr ""
+
+#: options.h:1053
+#, fuzzy
+msgid "Set address of section"
+msgstr "Ställ in adress på .bss-sektion"
+
+#: options.h:1053
+msgid "SECTION=ADDRESS"
+msgstr "SEKTION=ADRESS"
+
+#: options.h:1056
+#, fuzzy
+msgid "Sort common symbols by alignment"
+msgstr "Sortera gemensamma symboler efter justering [i angiven ordning]"
+
+#: options.h:1057
+#, fuzzy
+msgid "[={ascending,descending}]"
+msgstr "[=ascending|descending]"
+
+#: options.h:1060
+msgid "Sort sections by name. '--no-text-reorder' will override '--sort-section=name' for .text"
+msgstr ""
+
+#: options.h:1062
+msgid "[none,name]"
+msgstr ""
+
+#: options.h:1066
+msgid "Dynamic tag slots to reserve (default 5)"
+msgstr ""
+
+#: options.h:1067 options.h:1115 options.h:1148 options.h:1150 options.h:1152
+#: options.h:1154
+msgid "COUNT"
+msgstr "ANTAL"
+
+#: options.h:1070
+msgid "Strip all symbols"
+msgstr "Ta bort alla symboler"
+
+#: options.h:1072
+#, fuzzy
+msgid "Strip debugging information"
+msgstr "Ta bort felsökningssymboler"
+
+#: options.h:1074
+#, fuzzy
+msgid "Emit only debug line number information"
+msgstr "Visa versions- och emuleringsinformation"
+
+#: options.h:1076
+msgid "Strip debug symbols that are unused by gdb (at least versions <= 7.4)"
+msgstr ""
+
+#: options.h:1079
+#, fuzzy
+msgid "Strip LTO intermediate code sections"
+msgstr "Ta bort symboler i kastade sektioner"
+
+#: options.h:1082
+msgid "(ARM, PowerPC only) The maximum distance from instructions in a group of sections to their stubs. Negative values mean stubs are always after (PowerPC before) the group. 1 means use default size.\n"
+msgstr ""
+
+#: options.h:1089
+msgid "Use less memory and more disk I/O (included only for compatibility with GNU ld)"
+msgstr ""
+
+#: options.h:1093 options.h:1096
+#, fuzzy
+msgid "Generate shared library"
+msgstr "Skapa ett delat bibliotek"
+
+#: options.h:1099
+msgid "Stack size when -fsplit-stack function calls non-split"
+msgstr ""
+
+#: options.h:1105
+msgid "Do not link against shared libraries"
+msgstr "Länka inte mot delade bibliotek"
+
+#: options.h:1108
+msgid "Identical Code Folding. '--icf=safe' Folds ctors, dtors and functions whose pointers are definitely not taken."
+msgstr ""
+
+#: options.h:1115
+msgid "Number of iterations of ICF (default 2)"
+msgstr ""
+
+#: options.h:1118
+#, fuzzy
+msgid "List folded identical sections on stderr"
+msgstr "Lista borttagna oanvända sektioner via standard fel"
+
+#: options.h:1119
+#, fuzzy
+msgid "Do not list folded identical sections"
+msgstr "Lista inte borttagna oanvända sektioner"
+
+#: options.h:1122
+msgid "Do not fold this symbol during ICF"
+msgstr ""
+
+#: options.h:1125
+#, fuzzy
+msgid "Remove unused sections"
+msgstr "Lista inte borttagna oanvända sektioner"
+
+#: options.h:1126
+msgid "Don't remove unused sections (default)"
+msgstr "Ta inte bort oanvända sektioner (standard)"
+
+#: options.h:1129
+msgid "List removed unused sections on stderr"
+msgstr "Lista borttagna oanvända sektioner via standard fel"
+
+#: options.h:1130
+msgid "Do not list removed unused sections"
+msgstr "Lista inte borttagna oanvända sektioner"
+
+#: options.h:1133
+#, fuzzy
+msgid "Print resource usage statistics"
+msgstr "Visa statistik över minnesanvändning"
+
+#: options.h:1136
+msgid "Set target system root directory"
+msgstr ""
+
+#: options.h:1139
+msgid "Print the name of each input file"
+msgstr ""
+
+#: options.h:1142
+msgid "Read linker script"
+msgstr "Läs länkskript"
+
+#: options.h:1145
+msgid "Run the linker multi-threaded"
+msgstr ""
+
+#: options.h:1146
+msgid "Do not run the linker multi-threaded"
+msgstr ""
+
+#: options.h:1148
+msgid "Number of threads to use"
+msgstr ""
+
+#: options.h:1150
+msgid "Number of threads to use in initial pass"
+msgstr ""
+
+#: options.h:1152
+msgid "Number of threads to use in middle pass"
+msgstr ""
+
+#: options.h:1154
+msgid "Number of threads to use in final pass"
+msgstr ""
+
+#: options.h:1157
+#, fuzzy
+msgid "Set the address of the bss segment"
+msgstr "Ställ in adress för textsegment"
+
+#: options.h:1159
+#, fuzzy
+msgid "Set the address of the data segment"
+msgstr "Ställ in adress för ldata-segment"
+
+#: options.h:1161 options.h:1163
+#, fuzzy
+msgid "Set the address of the text segment"
+msgstr "Ställ in adress för textsegment"
+
+#: options.h:1166
+#, fuzzy
+msgid "Set the address of the rodata segment"
+msgstr "Ställ in adress för rodata-segment"
+
+#: options.h:1169
+msgid "(PowerPC64 only) Optimize TOC code sequences"
+msgstr ""
+
+#: options.h:1170
+msgid "(PowerPC64 only) Don't optimize TOC code sequences"
+msgstr ""
+
+#: options.h:1173
+msgid "(PowerPC64 only) Sort TOC and GOT sections"
+msgstr ""
+
+#: options.h:1174
+msgid "(PowerPC64 only) Don't sort TOC and GOT sections"
+msgstr ""
+
+#: options.h:1177
+#, fuzzy
+msgid "Create undefined reference to SYMBOL"
+msgstr "Börja med odefinierad referens till SYMBOL"
+
+#: options.h:1180
+#, fuzzy
+msgid "How to handle unresolved symbols"
+msgstr "Tillåt inga odefinierade symboler"
+
+#: options.h:1187
+msgid "Synonym for --debug=files"
+msgstr ""
+
+#: options.h:1190
+#, fuzzy
+msgid "Read version script"
+msgstr "Läs skript med versionsinformation"
+
+#: options.h:1193
+msgid "Warn about duplicate common symbols"
+msgstr "Varna för dubbla gemensamma symboler"
+
+#: options.h:1194
+#, fuzzy
+msgid "Do not warn about duplicate common symbols (default)"
+msgstr "Varna för dubbla gemensamma symboler"
+
+#: options.h:1200
+msgid "Warn if the stack is executable"
+msgstr ""
+
+#: options.h:1201
+#, fuzzy
+msgid "Do not warn if the stack is executable (default)"
+msgstr "Behandla inte varningar som fel (standard)"
+
+#: options.h:1204
+msgid "Don't warn about mismatched input files"
+msgstr "Varna inte om opassande indatafiler"
+
+#: options.h:1210
+#, fuzzy
+msgid "Warn when skipping an incompatible library"
+msgstr "Varna inte om ett inkompatibelt bibliotek hittas"
+
+#: options.h:1211
+#, fuzzy
+msgid "Don't warn when skipping an incompatible library"
+msgstr "Varna inte om ett inkompatibelt bibliotek hittas"
+
+#: options.h:1214
+msgid "Warn if text segment is not shareable"
+msgstr ""
+
+#: options.h:1215
+msgid "Do not warn if text segment is not shareable (default)"
+msgstr ""
+
+#: options.h:1218
+msgid "Report unresolved symbols as warnings"
+msgstr "Rapportera oupplösta symboler som varning"
+
+#: options.h:1222
+msgid "Report unresolved symbols as errors"
+msgstr "Rapportera oupplösta symboler som fel"
+
+#: options.h:1226
+msgid "(ARM only) Do not warn about objects with incompatible wchar_t sizes"
+msgstr ""
+
+#: options.h:1230
+msgid "Include all archive contents"
+msgstr ""
+
+#: options.h:1231
+msgid "Include only needed archive contents"
+msgstr ""
+
+#: options.h:1234
+msgid "Use wrapper functions for SYMBOL"
+msgstr "Använd inkapslingsfunktioner för SYMBOL"
+
+#: options.h:1237
+msgid "Trace references to symbol"
+msgstr ""
+
+#: options.h:1240
+#, fuzzy
+msgid "Allow unused version in script (default)"
+msgstr "Tillåt odefinierade symboler i delade objekt (standardalternativet)"
+
+#: options.h:1241
+#, fuzzy
+msgid "Do not allow unused version in script"
+msgstr "Tillåt inte oupplösta symboler i delade bibliotek"
+
+#: options.h:1244
+msgid "Default search path for Solaris compatibility"
+msgstr "Standardsökväg för Solaris-kompatibilitet"
+
+#: options.h:1245
+msgid "PATH"
+msgstr "SÖKVÄG"
+
+#: options.h:1248
+#, fuzzy
+msgid "Start a library search group"
+msgstr "Ställ in körtidssökväg för delade bibliotek"
+
+#: options.h:1250
+#, fuzzy
+msgid "End a library search group"
+msgstr "Ställ in körtidssökväg för delade bibliotek"
+
+#: options.h:1254
+#, fuzzy
+msgid "Start a library"
+msgstr "Starta en grupp"
+
+#: options.h:1256
+msgid "End a library "
+msgstr ""
+
+#: options.h:1259
+msgid "Ignored for GCC linker option compatibility"
+msgstr "Ignorerad för flaggkompatibilitet med GCC-länkare"
+
+#: options.h:1265
+#, fuzzy
+msgid "Sort dynamic relocs"
+msgstr "Exportera alla dynamiska symboler"
+
+#: options.h:1266
+msgid "Do not sort dynamic relocs"
+msgstr ""
+
+#: options.h:1268
+msgid "Set common page size to SIZE"
+msgstr ""
+
+#: options.h:1273
+msgid "Mark output as requiring executable stack"
+msgstr ""
+
+#: options.h:1275
+msgid "Mark DSO to be initialized first at runtime"
+msgstr ""
+
+#: options.h:1278
+msgid "Mark object to interpose all DSOs but executable"
+msgstr ""
+
+#: options.h:1281
+msgid "Mark object for lazy runtime binding (default)"
+msgstr ""
+
+#: options.h:1284
+msgid "Mark object requiring immediate process"
+msgstr ""
+
+#: options.h:1287
+msgid "Set maximum page size to SIZE"
+msgstr ""
+
+#: options.h:1295
+msgid "Do not create copy relocs"
+msgstr ""
+
+#: options.h:1297
+msgid "Mark object not to use default search paths"
+msgstr ""
+
+#: options.h:1300
+msgid "Mark DSO non-deletable at runtime"
+msgstr ""
+
+#: options.h:1303
+msgid "Mark DSO not available to dlopen"
+msgstr ""
+
+#: options.h:1306
+msgid "Mark DSO not available to dldump"
+msgstr ""
+
+#: options.h:1309
+msgid "Mark output as not requiring executable stack"
+msgstr ""
+
+#: options.h:1311
+msgid "Mark object for immediate function binding"
+msgstr ""
+
+#: options.h:1314
+msgid "Mark DSO to indicate that needs immediate $ORIGIN processing at runtime"
+msgstr ""
+
+#: options.h:1317
+msgid "Where possible mark variables read-only after relocation"
+msgstr ""
+
+#: options.h:1318
+msgid "Don't mark variables read-only after relocation"
+msgstr ""
+
+#: options.h:1320
+msgid "Do not permit relocations in read-only segments"
+msgstr ""
+
+#: options.h:1321 options.h:1323
+msgid "Permit relocations in read-only segments (default)"
+msgstr ""
+
+#: output.cc:1344
+msgid "section group retained but group element discarded"
+msgstr ""
+
+#: output.cc:1711 output.cc:1743
+msgid "out of patch space (GOT); relink with --incremental-full"
+msgstr ""
+
+#: output.cc:2372
+#, fuzzy, c-format
+msgid "invalid alignment %lu for section \"%s\""
+msgstr "%F%S ogiltig tilldelning till platsräknare\n"
+
+#: output.cc:4598
+#, c-format
+msgid "dot moves backward in linker script from 0x%llx to 0x%llx"
+msgstr ""
+
+#: output.cc:4601
+#, c-format
+msgid "address of section '%s' moves backward from 0x%llx to 0x%llx"
+msgstr ""
+
+#: output.cc:4965
+#, c-format
+msgid "%s: incremental base and output file name are the same"
+msgstr ""
+
+#: output.cc:4972
+#, c-format
+msgid "%s: stat: %s"
+msgstr ""
+
+#: output.cc:4977
+#, c-format
+msgid "%s: incremental base file is empty"
+msgstr ""
+
+#: output.cc:4989 output.cc:5087
+#, c-format
+msgid "%s: open: %s"
+msgstr ""
+
+#: output.cc:5006
+#, fuzzy, c-format
+msgid "%s: read failed: %s"
+msgstr "%X%P: cref-allokering misslyckades: %E\n"
+
+#: output.cc:5011
+#, c-format
+msgid "%s: file too short: read only %lld of %lld bytes"
+msgstr ""
+
+#: output.cc:5111
+#, c-format
+msgid "%s: mremap: %s"
+msgstr ""
+
+#: output.cc:5130
+#, c-format
+msgid "%s: mmap: %s"
+msgstr ""
+
+#: output.cc:5222
+#, c-format
+msgid "%s: mmap: failed to allocate %lu bytes for output file: %s"
+msgstr ""
+
+#: output.cc:5240
+#, c-format
+msgid "%s: munmap: %s"
+msgstr ""
+
+#: output.cc:5260
+#, c-format
+msgid "%s: write: unexpected 0 return-value"
+msgstr ""
+
+#: output.cc:5262
+#, c-format
+msgid "%s: write: %s"
+msgstr ""
+
+#: output.cc:5277
+#, c-format
+msgid "%s: close: %s"
+msgstr ""
+
+#: output.h:501
+msgid "** section headers"
+msgstr ""
+
+#: output.h:551
+msgid "** segment headers"
+msgstr ""
+
+#: output.h:598
+msgid "** file header"
+msgstr ""
+
+#: output.h:824
+msgid "** fill"
+msgstr ""
+
+#: output.h:990
+msgid "** string table"
+msgstr ""
+
+#: output.h:1513
+#, fuzzy
+msgid "** dynamic relocs"
+msgstr "Läs in dynamisk lista"
+
+#: output.h:1514 output.h:2214
+msgid "** relocs"
+msgstr ""
+
+#: output.h:2239
+#, fuzzy
+msgid "** group"
+msgstr "Sluta en grupp"
+
+#: output.h:2415
+msgid "** GOT"
+msgstr ""
+
+#: output.h:2597
+msgid "** dynamic"
+msgstr ""
+
+#: output.h:2734
+msgid "** symtab xindex"
+msgstr ""
+
+#: parameters.cc:221
+msgid "input file does not match -EB/EL option"
+msgstr ""
+
+#: parameters.cc:231
+msgid "-Trodata-segment is meaningless without --rosegment"
+msgstr ""
+
+#: parameters.cc:339 target-select.cc:199
+#, fuzzy, c-format
+msgid "unrecognized output format %s"
+msgstr "%P: okänd flagga â€%sâ€\n"
+
+#: parameters.cc:352
+#, fuzzy, c-format
+msgid "unrecognized emulation %s"
+msgstr "%P: okänt emuleringsläge: %s\n"
+
+#: parameters.cc:375
+msgid "no supported target for -EB/-EL option"
+msgstr ""
+
+#: plugin.cc:178
+#, c-format
+msgid "%s: could not load plugin library: %s"
+msgstr ""
+
+#: plugin.cc:187
+#, c-format
+msgid "%s: could not find onload entry point"
+msgstr ""
+
+#: plugin.cc:852
+msgid "input files added by plug-ins in --incremental mode not supported yet"
+msgstr ""
+
+#: powerpc.cc:856
+msgid "missing expected __tls_get_addr call"
+msgstr ""
+
+#: powerpc.cc:1663 powerpc.cc:1865
+#, c-format
+msgid "%s: ABI version %d is not compatible with ABI version %d output"
+msgstr ""
+
+#: powerpc.cc:1697 powerpc.cc:1907
+#, c-format
+msgid "%s: .opd invalid in abiv%d"
+msgstr ""
+
+#: powerpc.cc:1765
+#, c-format
+msgid "%s: unexpected reloc type %u in .opd section"
+msgstr ""
+
+#: powerpc.cc:1776
+#, c-format
+msgid "%s: .opd is not a regular array of opd entries"
+msgstr ""
+
+#: powerpc.cc:1843
+#, c-format
+msgid "%s: local symbol %d has invalid st_other for ABI version 1"
+msgstr ""
+
+#: powerpc.cc:2420
+#, c-format
+msgid "%s:%s exceeds group size"
+msgstr ""
+
+#: powerpc.cc:2643
+#, c-format
+msgid "%s:%s: branch in non-executable section, no long branch stub for you"
+msgstr ""
+
+#: powerpc.cc:3966
+msgid "** glink"
+msgstr ""
+
+#: powerpc.cc:4136 powerpc.cc:4500
+#, c-format
+msgid "%s: linkage table error against `%s'"
+msgstr ""
+
+#: powerpc.cc:4607
+msgid "** save/restore"
+msgstr ""
+
+#: powerpc.cc:5216 sparc.cc:2212
+msgid "requires unsupported dynamic reloc; recompile with -fPIC"
+msgstr ""
+
+#: powerpc.cc:5289
+#, fuzzy, c-format
+msgid "%s: unsupported reloc %u for IFUNC symbol"
+msgstr "%P%X: Storleken %d för gruppen %s stöds inte\n"
+
+#: powerpc.cc:6329 sparc.cc:3076 tilegx.cc:4193 x86_64.cc:3114
+#, fuzzy, c-format
+msgid "%s: unsupported REL reloc section"
+msgstr "%s: emuleringar som stöds: "
+
+#: powerpc.cc:6626
+msgid "__tls_get_addr call lacks marker reloc"
+msgstr ""
+
+#: powerpc.cc:6772
+msgid "call lacks nop, can't restore toc; recompile with -fPIC"
+msgstr ""
+
+#: powerpc.cc:7206 powerpc.cc:7230
+#, c-format
+msgid "toc optimization is not supported for %#08x instruction"
+msgstr ""
+
+#: powerpc.cc:7568
+msgid "relocation overflow"
+msgstr ""
+
+#: readsyms.cc:285
+#, c-format
+msgid "%s: file is empty"
+msgstr ""
+
+#. Here we have to handle any other input file types we need.
+#: readsyms.cc:920
+#, fuzzy, c-format
+msgid "%s: not an object or archive"
+msgstr "%X%s(%s): kan inte hitta medlem i arkiv"
+
+#: reduced_debug_output.cc:187
+msgid "Debug abbreviations extend beyond .debug_abbrev section; failed to reduce debug abbreviations"
+msgstr ""
+
+#: reduced_debug_output.cc:273
+msgid "Extremely large compile unit in debug info; failed to reduce debug info"
+msgstr ""
+
+#: reduced_debug_output.cc:281
+msgid "Debug info extends beyond .debug_info section;failed to reduce debug info"
+msgstr ""
+
+#: reduced_debug_output.cc:301 reduced_debug_output.cc:343
+msgid "Invalid DIE in debug info; failed to reduce debug info"
+msgstr ""
+
+#: reduced_debug_output.cc:324
+msgid "Debug info extends beyond .debug_info section; failed to reduce debug info"
+msgstr ""
+
+#: reloc.cc:317 reloc.cc:959
+#, c-format
+msgid "relocation section %u uses unexpected symbol table %u"
+msgstr ""
+
+#: reloc.cc:335 reloc.cc:976
+#, c-format
+msgid "unexpected entsize for reloc section %u: %lu != %u"
+msgstr ""
+
+#: reloc.cc:344 reloc.cc:985
+#, c-format
+msgid "reloc section %u size %lu uneven"
+msgstr ""
+
+#: reloc.cc:1367
+#, c-format
+msgid "could not convert call to '%s' to '%s'"
+msgstr ""
+
+#: reloc.cc:1527
+#, c-format
+msgid "reloc section size %zu is not a multiple of reloc size %d\n"
+msgstr ""
+
+#. We should only see externally visible symbols in the symbol
+#. table.
+#: resolve.cc:194
+msgid "invalid STB_LOCAL symbol in external symbols"
+msgstr ""
+
+#. Any target which wants to handle STB_LOOS, etc., needs to
+#. define a resolve method.
+#: resolve.cc:200
+#, c-format
+msgid "unsupported symbol binding %d"
+msgstr ""
+
+#. A dynamic object cannot reference a hidden or internal symbol
+#. defined in another object.
+#: resolve.cc:284
+#, c-format
+msgid "%s symbol '%s' in %s is referenced by DSO %s"
+msgstr ""
+
+#: resolve.cc:406
+#, fuzzy, c-format
+msgid "common of '%s' overriding smaller common"
+msgstr "%B: varning: gemensam i â€%T†åsidosätter mindre gemensam\n"
+
+#: resolve.cc:411
+#, fuzzy, c-format
+msgid "common of '%s' overidden by larger common"
+msgstr "%B: varning: gemensam i â€%T†åsidosattes av större gemensam\n"
+
+#: resolve.cc:416
+#, fuzzy, c-format
+msgid "multiple common of '%s'"
+msgstr "%B: varning: flera gemensamma i â€%Tâ€\n"
+
+#: resolve.cc:458
+#, c-format
+msgid "symbol '%s' used as both __thread and non-__thread"
+msgstr ""
+
+#: resolve.cc:501
+#, fuzzy, c-format
+msgid "multiple definition of '%s'"
+msgstr "%X%C: flera definitioner av â€%Tâ€\n"
+
+#: resolve.cc:540
+#, fuzzy, c-format
+msgid "definition of '%s' overriding common"
+msgstr "%B: varning: definitioner av â€%T†åsidosätter gemensam\n"
+
+#: resolve.cc:575
+#, fuzzy, c-format
+msgid "definition of '%s' overriding dynamic common definition"
+msgstr "%B: varning: definitioner av â€%T†åsidosätter gemensam\n"
+
+#: resolve.cc:725
+#, fuzzy, c-format
+msgid "common '%s' overridden by previous definition"
+msgstr "%B: varning: gemensam i â€%T†åsidosattes av definition\n"
+
+#: resolve.cc:860
+msgid "COPY reloc"
+msgstr ""
+
+#: resolve.cc:864 resolve.cc:887
+msgid "command line"
+msgstr ""
+
+#: resolve.cc:867
+#, fuzzy
+msgid "linker script"
+msgstr "Läs länkskript"
+
+#: resolve.cc:871
+msgid "linker defined"
+msgstr ""
+
+#: script-sections.cc:105
+#, c-format
+msgid "section %s overflows end of region %s"
+msgstr ""
+
+#: script-sections.cc:646
+msgid "Attempt to set a memory region for a non-output section"
+msgstr ""
+
+#: script-sections.cc:952 script-sections.cc:3583
+msgid "dot may not move backward"
+msgstr ""
+
+#: script-sections.cc:1019
+msgid "** expression"
+msgstr ""
+
+#: script-sections.cc:1204
+msgid "fill value is not absolute"
+msgstr ""
+
+#: script-sections.cc:2348
+#, c-format
+msgid "alignment of section %s is not absolute"
+msgstr ""
+
+#: script-sections.cc:2449
+#, c-format
+msgid "subalign of section %s is not absolute"
+msgstr ""
+
+#: script-sections.cc:2464
+#, fuzzy, c-format
+msgid "fill of section %s is not absolute"
+msgstr "Adressen på sektionen %s ställd till "
+
+#: script-sections.cc:2577
+msgid "SPECIAL constraints are not implemented"
+msgstr ""
+
+#: script-sections.cc:2619
+msgid "mismatched definition for constrained sections"
+msgstr ""
+
+#: script-sections.cc:3095
+#, c-format
+msgid "region '%.*s' already defined"
+msgstr ""
+
+#: script-sections.cc:3321
+msgid "DATA_SEGMENT_ALIGN may only appear once in a linker script"
+msgstr ""
+
+#: script-sections.cc:3336
+msgid "DATA_SEGMENT_RELRO_END may only appear once in a linker script"
+msgstr ""
+
+#: script-sections.cc:3341
+msgid "DATA_SEGMENT_RELRO_END must follow DATA_SEGMENT_ALIGN"
+msgstr ""
+
+#: script-sections.cc:3519
+msgid "no matching section constraint"
+msgstr ""
+
+#: script-sections.cc:3914
+msgid "creating a segment to contain the file and program headers outside of any MEMORY region"
+msgstr ""
+
+#: script-sections.cc:3963
+msgid "TLS sections are not adjacent"
+msgstr ""
+
+#: script-sections.cc:4110
+#, c-format
+msgid "allocated section %s not in any segment"
+msgstr ""
+
+#: script-sections.cc:4156
+#, c-format
+msgid "no segment %s"
+msgstr ""
+
+#: script-sections.cc:4169
+msgid "section in two PT_LOAD segments"
+msgstr ""
+
+#: script-sections.cc:4176
+msgid "allocated section not in any PT_LOAD segment"
+msgstr ""
+
+#: script-sections.cc:4205
+msgid "may only specify load address for PT_LOAD segment"
+msgstr ""
+
+#: script-sections.cc:4231
+#, c-format
+msgid "PHDRS load address overrides section %s load address"
+msgstr ""
+
+#. We could support this if we wanted to.
+#: script-sections.cc:4242
+msgid "using only one of FILEHDR and PHDRS is not currently supported"
+msgstr ""
+
+#: script-sections.cc:4257
+msgid "sections loaded on first page without room for file and program headers are not supported"
+msgstr ""
+
+#: script-sections.cc:4263
+msgid "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"
+msgstr ""
+
+#: script.cc:1132
+msgid "invalid use of PROVIDE for dot symbol"
+msgstr ""
+
+#: script.cc:1508
+#, c-format
+msgid "%s: SECTIONS seen after other input files; try -T/--script"
+msgstr ""
+
+#. We have a match for both the global and local entries for a
+#. version tag. That's got to be wrong.
+#: script.cc:2212
+#, c-format
+msgid "'%s' appears as both a global and a local symbol for version '%s' in script"
+msgstr ""
+
+#: script.cc:2239
+#, c-format
+msgid "wildcard match appears in both version '%s' and '%s' in script"
+msgstr ""
+
+#: script.cc:2244
+#, c-format
+msgid "wildcard match appears as both global and local in version '%s' in script"
+msgstr ""
+
+#: script.cc:2329
+#, c-format
+msgid "using '%s' as version for '%s' which is also named in version '%s' in script"
+msgstr ""
+
+#: script.cc:2427
+#, c-format
+msgid "version script assignment of %s to symbol %s failed: symbol not defined"
+msgstr ""
+
+#: script.cc:2623
+#, c-format
+msgid "%s:%d:%d: %s"
+msgstr ""
+
+#: script.cc:2689
+msgid "library name must be prefixed with -l"
+msgstr ""
+
+#. There are some options that we could handle here--e.g.,
+#. -lLIBRARY. Should we bother?
+#: script.cc:2816
+#, c-format
+msgid "%s:%d:%d: ignoring command OPTION; OPTION is only valid for scripts specified via -T/--script"
+msgstr ""
+
+#: script.cc:2881
+#, c-format
+msgid "%s:%d:%d: ignoring SEARCH_DIR; SEARCH_DIR is only valid for scripts specified via -T/--script"
+msgstr ""
+
+#: script.cc:2909
+#, c-format
+msgid "%s:%d:%d: invalid use of VERSION in input file"
+msgstr ""
+
+#: script.cc:3025
+#, fuzzy, c-format
+msgid "unrecognized version script language '%s'"
+msgstr "%P: okänd flagga â€%sâ€\n"
+
+#: script.cc:3144 script.cc:3158
+#, c-format
+msgid "%s:%d:%d: DATA_SEGMENT_ALIGN not in SECTIONS clause"
+msgstr ""
+
+#: script.cc:3277
+msgid "unknown PHDR type (try integer)"
+msgstr ""
+
+#: script.cc:3296
+#, c-format
+msgid "%s:%d:%d: MEMORY region '%.*s' referred to outside of SECTIONS clause"
+msgstr ""
+
+#: script.cc:3307
+#, fuzzy, c-format
+msgid "%s:%d:%d: MEMORY region '%.*s' not declared"
+msgstr "%P:%S: varning: minnesregion â€%s†har inte deklarerats\n"
+
+#: script.cc:3352
+msgid "unknown MEMORY attribute"
+msgstr ""
+
+#: script.cc:3382
+#, fuzzy, c-format
+msgid "undefined memory region '%s' referenced in ORIGIN expression"
+msgstr "%F%S: odefinierad MINNES-region â€%s†refererades till i uttryck\n"
+
+#: script.cc:3401
+#, fuzzy, c-format
+msgid "undefined memory region '%s' referenced in LENGTH expression"
+msgstr "%F%S: odefinierad MINNES-region â€%s†refererades till i uttryck\n"
+
+#: sparc.cc:4326
+#, c-format
+msgid "%s: little endian elf flag set on BE object"
+msgstr ""
+
+#: sparc.cc:4329
+#, c-format
+msgid "%s: little endian elf flag clear on LE object"
+msgstr ""
+
+#: stringpool.cc:510
+#, c-format
+msgid "%s: %s entries: %zu; buckets: %zu\n"
+msgstr ""
+
+#: stringpool.cc:514
+#, c-format
+msgid "%s: %s entries: %zu\n"
+msgstr ""
+
+#: stringpool.cc:517
+#, c-format
+msgid "%s: %s Stringdata structures: %zu\n"
+msgstr ""
+
+#: symtab.cc:374
+#, fuzzy, c-format
+msgid "Cannot export local symbol '%s'"
+msgstr "%XKan inte exportera %s: symbolen hittades inte\n"
+
+#: symtab.cc:904
+#, fuzzy, c-format
+msgid "%s: reference to %s"
+msgstr "%X%C: odefinierad referens till â€%Tâ€\n"
+
+#: symtab.cc:906
+#, fuzzy, c-format
+msgid "%s: definition of %s"
+msgstr "%X%C: flera definitioner av â€%Tâ€\n"
+
+#: symtab.cc:1104
+#, c-format
+msgid "bad global symbol name offset %u at %zu"
+msgstr ""
+
+#: symtab.cc:1358
+msgid "--just-symbols does not make sense with a shared object"
+msgstr ""
+
+#: symtab.cc:1369
+#, fuzzy
+msgid "too few symbol versions"
+msgstr "Skapa standardsymbolversion"
+
+#: symtab.cc:1418
+#, c-format
+msgid "bad symbol name offset %u at %zu"
+msgstr ""
+
+#: symtab.cc:1481
+#, c-format
+msgid "versym for symbol %zu out of range: %u"
+msgstr ""
+
+#: symtab.cc:1489
+#, c-format
+msgid "versym for symbol %zu has no name: %u"
+msgstr ""
+
+#: symtab.cc:2742 symtab.cc:2881
+#, fuzzy, c-format
+msgid "%s: unsupported symbol section 0x%x"
+msgstr "%s: emuleringar som stöds: "
+
+#: symtab.cc:3155
+#, c-format
+msgid "%s: symbol table entries: %zu; buckets: %zu\n"
+msgstr ""
+
+#: symtab.cc:3158
+#, c-format
+msgid "%s: symbol table entries: %zu\n"
+msgstr ""
+
+#: symtab.cc:3310
+#, c-format
+msgid "while linking %s: symbol '%s' defined in multiple places (possible ODR violation):"
+msgstr ""
+
+#: symtab.cc:3319 symtab.cc:3322
+#, c-format
+msgid " %s from %s\n"
+msgstr ""
+
+#: target-reloc.h:163
+msgid "internal"
+msgstr ""
+
+#: target-reloc.h:166
+msgid "hidden"
+msgstr ""
+
+#: target-reloc.h:169
+msgid "protected"
+msgstr ""
+
+#: target-reloc.h:174
+#, c-format
+msgid "%s symbol '%s' is not defined locally"
+msgstr ""
+
+#: target-reloc.h:414
+#, c-format
+msgid "reloc has bad offset %zu"
+msgstr ""
+
+#: target.cc:170
+#, c-format
+msgid "linker does not include stack split support required by %s"
+msgstr ""
+
+#: tilegx.cc:2074 x86_64.cc:1244
+msgid "out of patch space (PLT); relink with --incremental-full"
+msgstr ""
+
+#: tilegx.cc:2724 x86_64.cc:1871
+msgid "TLS_DESC not yet supported for incremental linking"
+msgstr ""
+
+#: tilegx.cc:2779
+msgid "TLS_DESC not yet supported for TILEGX"
+msgstr ""
+
+#: tilegx.cc:3188 x86_64.cc:2257
+#, c-format
+msgid "requires unsupported dynamic reloc %u; recompile with -fPIC"
+msgstr ""
+
+#: tls.h:59
+msgid "TLS relocation out of range"
+msgstr ""
+
+#: tls.h:73
+msgid "TLS relocation against invalid instruction"
+msgstr ""
+
+#. This output is intended to follow the GNU standards.
+#: version.cc:66
+#, c-format
+msgid "Copyright 2014 Free Software Foundation, Inc.\n"
+msgstr "Copyright 2014 Free Software Foundation, Inc.\n"
+
+#: version.cc:67
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) a later version.\n"
+"This program has absolutely no warranty.\n"
+msgstr ""
+"Detta program är fri programvara; du kan sprida det vidare under villkoren\n"
+"i GNU General Public License version 3 eller (om du så vill) senare version.\n"
+"Detta program har inga som helst garantier.\n"
+"\n"
+
+#: workqueue-threads.cc:106
+#, c-format
+msgid "%s failed: %s"
+msgstr ""
+
+#: x86_64.cc:2222
+msgid "requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC"
+msgstr ""
+
+#: x86_64.cc:2242
+#, c-format
+msgid "requires dynamic %s reloc against '%s' which may overflow at runtime; recompile with -fPIC"
+msgstr ""
+
+#: x86_64.cc:3776
+#, fuzzy, c-format
+msgid "unsupported reloc type %u"
+msgstr "%XPEI-arkitekturen stöds inte: %s\n"
+
+#: x86_64.cc:4211
+#, c-format
+msgid "unsupported reloc %u against local symbol"
+msgstr ""
+
+#~ msgid " --support-old-code Support interworking with old code\n"
+#~ msgstr " --support-old-code Stöd interaktion med gammal kod\n"
+
+#~ msgid " --thumb-entry=<sym> Set the entry point to be Thumb symbol <sym>\n"
+#~ msgstr " --thumb-entry=<sym> Ställ in ingångspunkten till att vara Thumb-symbol <sym>\n"
+
+#~ msgid "Errors encountered processing file %s"
+#~ msgstr "Fel inträffade vid bearbetning av filen %s"
+
+#~ msgid "%P: warning: '--thumb-entry %s' is overriding '-e %s'\n"
+#~ msgstr "%P: varning: â€--thumb-entry %s†åsidosätter â€-e %sâ€\n"
+
+#~ msgid "%P: warning: cannot find thumb start symbol %s\n"
+#~ msgstr "%P: varning: kan inte hitta Thumb-startsymbol %s\n"
+
+#~ msgid " --base_file <basefile> Generate a base file for relocatable DLLs\n"
+#~ msgstr ""
+#~ " --base_file <basfil> Generera en basfil för\n"
+#~ " omlokaliseringsbara DLL:er\n"
+
+#~ msgid " --dll Set image base to the default for DLLs\n"
+#~ msgstr ""
+#~ " --dll Ställ in bildbas till standard för\n"
+#~ " DLL:er\n"
+
+#~ msgid " --file-alignment <size> Set file alignment\n"
+#~ msgstr " --file-alignment <storlek> Ställ in filjustering\n"
+
+#~ msgid " --heap <size> Set initial size of the heap\n"
+#~ msgstr " --heap <storlek> Ställ in initial storlek på högen\n"
+
+#~ msgid " --image-base <address> Set start address of the executable\n"
+#~ msgstr " --image-base <adress> Ställ in startadressen för det körbara\n"
+
+#~ msgid " --major-image-version <number> Set version number of the executable\n"
+#~ msgstr " --major-image-version <nummer> Ställ in versionsnummer för det körbara\n"
+
+#~ msgid " --major-os-version <number> Set minimum required OS version\n"
+#~ msgstr " --major-os-version <nummer> Ställ in lägsta nödvändiga OS-version\n"
+
+#~ msgid " --major-subsystem-version <number> Set minimum required OS subsystem version\n"
+#~ msgstr ""
+#~ " --major-subsystem-version <nummer> Ställ in lägsta nödvändiga\n"
+#~ " OS-undersystemsversion\n"
+
+#~ msgid " --minor-image-version <number> Set revision number of the executable\n"
+#~ msgstr ""
+#~ " --minor-image-version <nummer> Ställ in underrevisionsnummer för\n"
+#~ " det körbara\n"
+
+#~ msgid " --minor-os-version <number> Set minimum required OS revision\n"
+#~ msgstr " --minor-os-version <nummer> Ställ in lägsta nödvändiga OS-revision\n"
+
+#~ msgid " --minor-subsystem-version <number> Set minimum required OS subsystem revision\n"
+#~ msgstr ""
+#~ " --minor-subsystem-version <nummer> Ställ in lägsta nödvändiga\n"
+#~ " OS-undersystemsrevision\n"
+
+#~ msgid " --section-alignment <size> Set section alignment\n"
+#~ msgstr " --section-alignment <storlek> Ställ in sektionsjustering\n"
+
+#~ msgid " --stack <size> Set size of the initial stack\n"
+#~ msgstr " --stack <storlek> Ställ in storlek på initiala stacken\n"
+
+#~ msgid " --subsystem <name>[:<version>] Set required OS subsystem [& version]\n"
+#~ msgstr ""
+#~ " --subsystem <namn>[:<version>] Ställ in nödvändigt OS-undersystem\n"
+#~ " [och nödvändig version]\n"
+
+#~ msgid " --support-old-code Support interworking with old code\n"
+#~ msgstr " --support-old-code Stöd interaktion med gammal kod\n"
+
+#~ msgid " --[no-]leading-underscore Set explicit symbol underscore prefix mode\n"
+#~ msgstr " --[no-]leading-underscore Ställ in uttryckligt understrecksprefixläge för symboler\n"
+
+#~ msgid " --thumb-entry=<symbol> Set the entry point to be Thumb <symbol>\n"
+#~ msgstr ""
+#~ " --thumb-entry=<symbol> Ställ in ingångspunkten till att\n"
+#~ " vara Thumb-<symbol>\n"
+
+#~ msgid " --insert-timestamp Use a real timestamp rather than zero.\n"
+#~ msgstr " --insert-timestamp Använd en riktig tidsstämpel istället för noll.\n"
+
+#~ msgid " This makes binaries non-deterministic\n"
+#~ msgstr " Detta gör binärer icke-deterministiska\n"
+
+#~ msgid " --add-stdcall-alias Export symbols with and without @nn\n"
+#~ msgstr " --add-stdcall-alias Exportera symboler med och utan @nn\n"
+
+#~ msgid " --disable-stdcall-fixup Don't link _sym to _sym@nn\n"
+#~ msgstr " --disable-stdcall-fixup Länka inte _sym till _sym@nn\n"
+
+#~ msgid " --enable-stdcall-fixup Link _sym to _sym@nn without warnings\n"
+#~ msgstr " --enable-stdcall-fixup Länka _sym till _sym@nn utan varningar\n"
+
+#~ msgid " --exclude-symbols sym,sym,... Exclude symbols from automatic export\n"
+#~ msgstr ""
+#~ " --exclude-symbols sym,sym,… Exkludera symboler från automatisk\n"
+#~ " export\n"
+
+#~ msgid " --exclude-all-symbols Exclude all symbols from automatic export\n"
+#~ msgstr " --exclude-all-symbols Exkludera alla symboler från automatisk export\n"
+
+#~ msgid " --exclude-modules-for-implib mod,mod,...\n"
+#~ msgstr " --exclude-modules-for-implib mod,mod,...\n"
+
+#~ msgid " Exclude objects, archive members from auto\n"
+#~ msgstr " Exkludera objekt, arkivmedlemmar från auto\n"
+
+#~ msgid " export, place into import library instead.\n"
+#~ msgstr " export, placera i ett import-bibliotek istället.\n"
+
+#~ msgid " --export-all-symbols Automatically export all globals to DLL\n"
+#~ msgstr ""
+#~ " --export-all-symbols Exportera automatiskt alla symboler\n"
+#~ " till DLL\n"
+
+#~ msgid " --kill-at Remove @nn from exported symbols\n"
+#~ msgstr " --kill-at Ta bort @nn från exporterade symboler\n"
+
+#~ msgid " --out-implib <file> Generate import library\n"
+#~ msgstr " --out-implib <fil> Generera importbibliotek\n"
+
+#~ msgid " --output-def <file> Generate a .DEF file for the built DLL\n"
+#~ msgstr " --output-def <fil> Generera en .DEF-fil för byggd DLL\n"
+
+#~ msgid " --warn-duplicate-exports Warn about duplicate exports.\n"
+#~ msgstr " --warn-duplicate-exports Varna för dubbla exporter.\n"
+
+#~ msgid ""
+#~ " --compat-implib Create backward compatible import libs;\n"
+#~ " create __imp_<SYMBOL> as well.\n"
+#~ msgstr ""
+#~ " --compat-implib Skapa bakåtkompatibla importbibliotek;\n"
+#~ " och skapa även __imp_<SYMBOL>.\n"
+
+#~ msgid ""
+#~ " --enable-auto-image-base Automatically choose image base for DLLs\n"
+#~ " unless user specifies one\n"
+#~ msgstr ""
+#~ " --enable-auto-image-base Välj automatiskt bildbas för DLL:er\n"
+#~ " såvida inte användaren anger en\n"
+
+#~ msgid " --disable-auto-image-base Do not auto-choose image base. (default)\n"
+#~ msgstr ""
+#~ " --disable-auto-image-base Välj inte bildbas automatiskt\n"
+#~ " (standard).\n"
+
+#~ msgid ""
+#~ " --dll-search-prefix=<string> When linking dynamically to a dll without\n"
+#~ " an importlib, use <string><basename>.dll\n"
+#~ " in preference to lib<basename>.dll \n"
+#~ msgstr ""
+#~ " --dll-search-prefix=<sträng> Använd <sträng><basnamn>.dll istället\n"
+#~ " för lib<basnamn>.dll vid dynamisk\n"
+#~ " länkning utan ett importbibliotek\n"
+
+#~ msgid ""
+#~ " --enable-auto-import Do sophisticated linking of _sym to\n"
+#~ " __imp_sym for DATA references\n"
+#~ msgstr ""
+#~ " --enable-auto-import Utför sofistikerad länkning av _sym till\n"
+#~ " __imp_sym för DATA-referenser\n"
+
+#~ msgid " --disable-auto-import Do not auto-import DATA items from DLLs\n"
+#~ msgstr ""
+#~ " --disable-auto-import Importera inte DATA-objekt från DLL:er\n"
+#~ " automatiskt\n"
+
+#~ msgid ""
+#~ " --enable-runtime-pseudo-reloc Work around auto-import limitations by\n"
+#~ " adding pseudo-relocations resolved at\n"
+#~ " runtime.\n"
+#~ msgstr ""
+#~ " --enable-runtime-pseudo-reloc Kringgå begränsningar i automatisk\n"
+#~ " import genom att lägga till\n"
+#~ " pseudoomlokaliseringar som löses under\n"
+#~ " körtid.\n"
+
+#~ msgid ""
+#~ " --disable-runtime-pseudo-reloc Do not add runtime pseudo-relocations for\n"
+#~ " auto-imported DATA.\n"
+#~ msgstr ""
+#~ " --disable-runtime-pseudo-reloc Lägg inte till pseudoomlokaliseringar\n"
+#~ " för automatisk importerad DATA under\n"
+#~ " körtid.\n"
+
+#~ msgid ""
+#~ " --enable-extra-pe-debug Enable verbose debug output when building\n"
+#~ " or linking to DLLs (esp. auto-import)\n"
+#~ msgstr ""
+#~ " --enable-extra-pe-debug Använd utförlig felsökningsutdata vid\n"
+#~ " bygge av eller länkning till DLL:er\n"
+#~ " (särskilt automatisk import)\n"
+
+#~ msgid ""
+#~ " --large-address-aware Executable supports virtual addresses\n"
+#~ " greater than 2 gigabytes\n"
+#~ msgstr ""
+#~ " --large-address-aware Exekverbar fil har stöd för virtuella adresser\n"
+#~ " större än 2 gigabyte\n"
+
+#~ msgid ""
+#~ " --disable-large-address-aware Executable does not support virtual\n"
+#~ " addresses greater than 2 gigabytes\n"
+#~ msgstr ""
+#~ " --disable-large-address-aware Exekverbara har inte stöd för virtuella\n"
+#~ " adresser större än 2 gigabyte\n"
+
+#~ msgid ""
+#~ " --enable-long-section-names Use long COFF section names even in\n"
+#~ " executable image files\n"
+#~ msgstr ""
+#~ " --enable-long-section-names Använd långa COFF-sektionsnamn även i\n"
+#~ " exekverbara avbildningsfiler\n"
+
+#~ msgid ""
+#~ " --disable-long-section-names Never use long COFF section names, even\n"
+#~ " in object files\n"
+#~ msgstr ""
+#~ " --disable-long-section-names Använd aldrig långa COFF-sektionsnamn, inte\n"
+#~ " ens i objektfiler\n"
+
+#~ msgid ""
+#~ " --dynamicbase\t\t\t Image base address may be relocated using\n"
+#~ "\t\t\t\t address space layout randomization (ASLR)\n"
+#~ msgstr ""
+#~ " --dynamicbase\t\t\t Bildbasadress kan omlokaliseras via\n"
+#~ "\t\t\t\t layoutrandomisering av adressrymd (ASLR)\n"
+
+#~ msgid " --forceinteg\t\t Code integrity checks are enforced\n"
+#~ msgstr " --forceinteg\t\t Kodintegritetskontroller är påtvingade\n"
+
+#~ msgid " --nxcompat\t\t Image is compatible with data execution prevention\n"
+#~ msgstr " --nxcompat\t\t Bild är kompatibel med förhindrande av dataexekvering\n"
+
+#~ msgid " --no-isolation\t\t Image understands isolation but do not isolate the image\n"
+#~ msgstr " --no-isolation\t\t Bild förstår isolering men isolera inte bilden\n"
+
+#~ msgid ""
+#~ " --no-seh\t\t\t Image does not use SEH. No SE handler may\n"
+#~ "\t\t\t\t be called in this image\n"
+#~ msgstr ""
+#~ " --no-seh\t\t\t Bild använder inte SEH. Ingen SE-hanterare får\n"
+#~ "\t\t\t\t anropas i denna bild\n"
+
+#~ msgid " --no-bind\t\t\t Do not bind this image\n"
+#~ msgstr " --no-bind\t\t\t Bind inte denna bild\n"
+
+#~ msgid " --wdmdriver\t\t Driver uses the WDM model\n"
+#~ msgstr " --wdmdriver\t\t Drivrutin använder WDM-modellen\n"
+
+#~ msgid " --tsaware Image is Terminal Server aware\n"
+#~ msgstr " --tsaware Bild är Terminal Server-medveten\n"
+
+#~ msgid "%P: warning: bad version number in -subsystem option\n"
+#~ msgstr "%P: varning: felaktigt nummer i flaggan -subsystem\n"
+
+#~ msgid "%P%F: invalid subsystem type %s\n"
+#~ msgstr "%P%F: ogiltig typ av undersystem %s\n"
+
+#~ msgid "%P%F: invalid hex number for PE parameter '%s'\n"
+#~ msgstr "%P%F: ogiltigt hexadecimalt tal för PE-parametern â€%sâ€\n"
+
+#~ msgid "%P%F: strange hex info for PE parameter '%s'\n"
+#~ msgstr "%P%F: konstig hexadecimal information för PE-parametern â€%sâ€\n"
+
+#~ msgid "%P: warning, file alignment > section alignment.\n"
+#~ msgstr "%P: varning, filjusteringen > sektionsjusteringen.\n"
+
+#~ msgid "%P: warning: --export-dynamic is not supported for PE targets, did you mean --export-all-symbols?\n"
+#~ msgstr "%P: varning: --export-dynamic stöds inte för PE-mål, menade du --export-all-symbols?\n"
+
+#~ msgid "Warning: resolving %s by linking to %s\n"
+#~ msgstr "Varning: löser upp %s genom att länka till %s\n"
+
+#~ msgid "Use --enable-stdcall-fixup to disable these warnings\n"
+#~ msgstr "Använd --enable-stdcall-fixup för att stänga av dessa varningar\n"
+
+#~ msgid "Use --disable-stdcall-fixup to disable these fixups\n"
+#~ msgstr "Använd --disable-stdcall-fixup för att stänga av dessa korrigeringar\n"
+
+#~ msgid "%C: Cannot get section contents - auto-import exception\n"
+#~ msgstr "%C: Kan inte få tag i sektionsinnehåll - undantag i automatisk import\n"
+
+#~ msgid "Info: resolving %s by linking to %s (auto-import)\n"
+#~ msgstr "Info: löser upp %s genom att länka till %s (automatisk import)\n"
+
+#~ msgid ""
+#~ "%P: warning: auto-importing has been activated without --enable-auto-import specified on the command line.\n"
+#~ "This should work unless it involves constant data structures referencing symbols from auto-imported DLLs.\n"
+#~ msgstr ""
+#~ "%P: varning: autoimportering har aktiverats utan att --enable-auto-import angavs på kommandoraden.\n"
+#~ "Detta bör fungera om det inte involverar konstanta datastrukturer som refererar till symboler från autoimporterade DLL:er.\n"
+
+#~ msgid "%B%F: could not read symbols: %E\n"
+#~ msgstr "%B%F: kunde inte läsa symboler: %E\n"
+
+#~ msgid "%F%P: cannot perform PE operations on non PE output file '%B'.\n"
+#~ msgstr "%F%P: kan inte utföra PE-operationer pÃ¥ utdatafil som inte är PE â€%Bâ€.\n"
+
+#~ msgid "Errors encountered processing file %s\n"
+#~ msgstr "Fel uppstod vid behandling av filen %s\n"
+
+#~ msgid "Errors encountered processing file %s for interworking\n"
+#~ msgstr "Fel uppstod vid behandling av filen %s för interaktion\n"
+
+#~ msgid "%P%F: bfd_link_hash_lookup failed: %E\n"
+#~ msgstr "%P%F: bfd_link_hash_lookup misslyckades: %E\n"
+
+#~ msgid "%X%P: bfd_hash_table_init of cref table failed: %E\n"
+#~ msgstr "%X%P: bfd_hash_table_init av korsreferenstabellen misslyckades: %E\n"
+
+#~ msgid "%X%P: cref_hash_lookup failed: %E\n"
+#~ msgstr "%X%P: cref_hash_lookup misslyckades: %E\n"
+
+#~ msgid "No symbols\n"
+#~ msgstr "Inga symboler\n"
+
+#~ msgid "%P: symbol `%T' missing from main hash table\n"
+#~ msgstr "%P: symbolen â€%T†saknas frÃ¥n hashtabellen\n"
+
+#~ msgid "%B%F: could not read relocs: %E\n"
+#~ msgstr "%B%F: kunde inte läsa omlokaliseringar: %E\n"
+
+#~ msgid "%X%C: prohibited cross reference from %s to `%T' in %s\n"
+#~ msgstr "%X%C: förbjuden korsreferens frÃ¥n %s till â€%T†i %s\n"
+
+#~ msgid "%P%X: Different relocs used in set %s\n"
+#~ msgstr "%P%X: Olika omlokaliseringar använda i gruppen %s\n"
+
+#~ msgid "%P%X: Different object file formats composing set %s\n"
+#~ msgstr "%P%X: Olika objektfilformat utgör gruppen %s\n"
+
+#~ msgid "%P%X: %s does not support reloc %s for set %s\n"
+#~ msgstr "%P%X: %s stöder inte omlokaliseringen %s för gruppen %s\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Set Symbol\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Grupp Symbol\n"
+#~ "\n"
+
+#~ msgid "%S SYSLIB ignored\n"
+#~ msgstr "%S SYSLIB ignorerades\n"
+
+#~ msgid "%S HLL ignored\n"
+#~ msgstr "%S HLL ignorerades\n"
+
+#~ msgid " no emulation specific options.\n"
+#~ msgstr " inga emuleringsspecifika flaggor.\n"
+
+#~ msgid "%P: warning: address of `%s' isn't multiple of maximum page size\n"
+#~ msgstr "%P: varning: adress för â€%s†är inte en multipel av maximal sidstorlek\n"
+
+#~ msgid "%F%S %% by zero\n"
+#~ msgstr "%F%S %% med noll\n"
+
+#~ msgid "%X%S: unresolvable symbol `%s' referenced in expression\n"
+#~ msgstr "%X%S: oupplösningsbara symbolen â€%s†refererades i uttrycket\n"
+
+#~ msgid "%F%S: undefined section `%s' referenced in expression\n"
+#~ msgstr "%F%S: odefinierade sektionen â€%s†refererades till i uttryck\n"
+
+#~ msgid "%F%S: unknown constant `%s' referenced in expression\n"
+#~ msgstr "%F%S: okänd konstant â€%s†refererades till i uttryck\n"
+
+#~ msgid "%F%S can not PROVIDE assignment to location counter\n"
+#~ msgstr "%F%S kan inte TILLHANDAHÅLLA tilldelning till platsräknare\n"
+
+#~ msgid "%F%S assignment to location counter invalid outside of SECTIONS\n"
+#~ msgstr "%F%S tilldelning till platsräknare ogiltig utanför SEKTIONER\n"
+
+#~ msgid "%F%S cannot move location counter backwards (from %V to %V)\n"
+#~ msgstr "%F%S kan inte flytta platsräknare bakåt (från %V till %V)\n"
+
+#~ msgid "%P%F:%s: hash creation failed\n"
+#~ msgstr "%P%F:%s: skapande av hash misslyckades\n"
+
+#~ msgid "%F%S: nonconstant expression for %s\n"
+#~ msgstr "%F%S: icke-konstant uttryck för %s\n"
+
+#~ msgid "attempt to open %s failed\n"
+#~ msgstr "försök att öppna %s misslyckades\n"
+
+#~ msgid "attempt to open %s succeeded\n"
+#~ msgstr "försök att öppna %s lyckades\n"
+
+#~ msgid "%F%P: invalid BFD target `%s'\n"
+#~ msgstr "%F%P: ogiltigt BFD-mÃ¥l â€%sâ€\n"
+
+#~ msgid "%P: skipping incompatible %s when searching for %s\n"
+#~ msgstr "%P: hoppar över inkompatibel %s vid sökning av %s\n"
+
+#~ msgid "%P: cannot find %s (%s): %E\n"
+#~ msgstr "%P: kan inte hitta %s (%s): %E\n"
+
+#~ msgid "%P: cannot find %s: %E\n"
+#~ msgstr "%P: kan inte hitta %s: %E\n"
+
+#~ msgid "%P: cannot find %s inside %s\n"
+#~ msgstr "%P: kan inte hitta %s inuti %s\n"
+
+#~ msgid "cannot find script file %s\n"
+#~ msgstr "kan inte hitta skriptfilen %s\n"
+
+#~ msgid "%P%F: cannot open linker script file %s: %E\n"
+#~ msgstr "%P%F: kan inte öppna länkskriptfilen %s: %E\n"
+
+#~ msgid "%P%F: cannot represent machine `%s'\n"
+#~ msgstr "%P%F: kan inte representera maskinen â€%sâ€\n"
+
+#~ msgid "%P%F: can not create hash table: %E\n"
+#~ msgstr "%P%F: kan inte skapa hashtabell: %E\n"
+
+#~ msgid "%P:%S: warning: redeclaration of memory region `%s'\n"
+#~ msgstr "%P:%S: varning: omdeklaration av minnesregion â€%sâ€\n"
+
+#~ msgid "%F%P:%S: error: alias for default memory region\n"
+#~ msgstr "%F%P:%S: fel: alias för standard minnesområde\n"
+
+#~ msgid "%F%P:%S: error: redefinition of memory region alias `%s'\n"
+#~ msgstr "%F%P: %S: fel: omdefinition av alias för minnesomrÃ¥de â€%sâ€\n"
+
+#~ msgid "%F%P:%S: error: memory region `%s' for alias `%s' does not exist\n"
+#~ msgstr "%F%P:%S: fel: minnesomrÃ¥de â€%s†för alias â€%s†existerar inte\n"
+
+#~ msgid "%P%F: failed creating section `%s': %E\n"
+#~ msgstr "%P%F: misslyckades att skapa sektion â€%sâ€: %E\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "As-needed library included to satisfy reference by file (symbol)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "As-needed-bibliotek inkluderat för att tillfredsställa referens av fil (symbol)\n"
+#~ "\n"
+
+#~ msgid "Name"
+#~ msgstr "Namn"
+
+#~ msgid "Origin"
+#~ msgstr "Början"
+
+#~ msgid "Length"
+#~ msgstr "Längd"
+
+#~ msgid "Attributes"
+#~ msgstr "Attribut"
+
+#~ msgid ""
+#~ "\n"
+#~ "Linker script and memory map\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Länkskript och minnestabell\n"
+#~ "\n"
+
+#~ msgid "%P%F: Illegal use of `%s' section\n"
+#~ msgstr "%P%F: OtillÃ¥ten användning av sektionen â€%sâ€\n"
+
+#~ msgid "%P%F: output format %s cannot represent section called %s\n"
+#~ msgstr "%P%F: utdataformatet %s kan inte representera sektionen kallad %s\n"
+
+#~ msgid "%B: file not recognized: %E\n"
+#~ msgstr "%B: filen inte igenkänd: %E\n"
+
+#~ msgid "%B: matching formats:"
+#~ msgstr "%B: matchande format:"
+
+#~ msgid "%F%B: file not recognized: %E\n"
+#~ msgstr "%F%B: filen inte igenkänd: %E\n"
+
+#~ msgid "%F%B: error adding symbols: %E\n"
+#~ msgstr "%F%B: fel då symboler lades till: %E\n"
+
+#~ msgid "%P: warning: could not find any targets that match endianness requirement\n"
+#~ msgstr "%P: varning: kunde inte hitta några mål som matchar kravet på byteordning\n"
+
+#~ msgid "%P%F: target %s not found\n"
+#~ msgstr "%P%F: målet %s hittades inte\n"
+
+#~ msgid "%P%F:%s: can not make object file: %E\n"
+#~ msgstr "%P%F:%s: kan inte skapa objektfilen: %E\n"
+
+#~ msgid "%P: warning: %s contains output sections; did you forget -T?\n"
+#~ msgstr "%P: varning: %s innehåller utdatasektioner; glömde du -T?\n"
+
+#~ msgid "%P%F: bfd_hash_allocate failed creating symbol %s\n"
+#~ msgstr "%P%F: bfd_hash_allocate misslyckades att skapa symbol %s\n"
+
+#~ msgid "%P%F: bfd_hash_lookup failed creating symbol %s\n"
+#~ msgstr "%P%F: bfd_hash_lookup misslyckades med att skapa symbol %s\n"
+
+#~ msgid "%F%P: %s not found for insert\n"
+#~ msgstr "%F%P: %s hittades inte vid infogning\n"
+
+#~ msgid " load address 0x%V"
+#~ msgstr " inläsningsadress 0x%V"
+
+#~ msgid "%W (size before relaxing)\n"
+#~ msgstr "%W (storlek innan avslappning)\n"
+
+#~ msgid "Fail with %d\n"
+#~ msgstr "Misslyckas med %d\n"
+
+#~ msgid "%X%P: section %s loaded at [%V,%V] overlaps section %s loaded at [%V,%V]\n"
+#~ msgstr "%X%P: sektion %s laddad vid [%V,%V] överlappar med sektion %s laddad vid [%V,%V]\n"
+
+#~ msgid "%X%P: region `%s' overflowed by %ld bytes\n"
+#~ msgstr "%X%P: region â€%s†fick %ld byte överspill\n"
+
+#~ msgid "%X%P: address 0x%v of %B section `%s' is not within region `%s'\n"
+#~ msgstr "%X%P: adress 0x%v i %B-sektion â€%s†är inte inom omrÃ¥det â€%sâ€\n"
+
+#~ msgid "%X%P: %B section `%s' will not fit in region `%s'\n"
+#~ msgstr ""
+#~ "%X%P: %B-sektion â€%s†kommer inte att fÃ¥ plats i region â€%sâ€\n"
+#~ "\n"
+
+#~ msgid "%F%S: non constant or forward reference address expression for section %s\n"
+#~ msgstr "%F%S: icke-konstant eller framåtrefererande adressuttryck för sektion %s\n"
+
+#~ msgid "%P%X: Internal error on COFF shared library section %s\n"
+#~ msgstr "%P%X: Internt fel i delat COFF-bibliotek sektion %s\n"
+
+#~ msgid "%P%F: error: no memory region specified for loadable section `%s'\n"
+#~ msgstr "%P%F: fel: inget minnesomrÃ¥de angivet för inläsbara sektionen â€%sâ€\n"
+
+#~ msgid "%P: warning: no memory region specified for loadable section `%s'\n"
+#~ msgstr "%P: varning: inget minnesomrÃ¥de angivet för inläsbara sektionen â€%sâ€\n"
+
+#~ msgid "%P: warning: changing start of section %s by %lu bytes\n"
+#~ msgstr "%P: varning: ändrar start på sektion %s med %lu byte\n"
+
+#~ msgid "%P: warning: dot moved backwards before `%s'\n"
+#~ msgstr "%P: varning: punkt flyttad bakÃ¥t före â€%sâ€\n"
+
+#~ msgid "%P%F: can't relax section: %E\n"
+#~ msgstr "%P%F: kan inte slappna av sektion: %E\n"
+
+#~ msgid "%F%P: invalid data statement\n"
+#~ msgstr "%F%P: ogiltig datasats\n"
+
+#~ msgid "%P%F: gc-sections requires either an entry or an undefined symbol\n"
+#~ msgstr "%P%F: gc-sektioner kräver antingen en post eller en odefinierad symbol\n"
+
+#~ msgid "%P%F:%s: can't set start address\n"
+#~ msgstr "%P%F:%s: kan inte ställa in startadress\n"
+
+#~ msgid "%P%F: can't set start address\n"
+#~ msgstr "%P%F: kan inte ställa in startadress\n"
+
+#~ msgid "%P: warning: cannot find entry symbol %s; defaulting to %V\n"
+#~ msgstr "%P: varning: kan inte hitta ingångssymbolen %s; använder som standard %V\n"
+
+#~ msgid "%P: warning: cannot find entry symbol %s; not setting start address\n"
+#~ msgstr "%P: varning: kan inte hitta ingångssymbolen %s; ställer inte in startadress\n"
+
+#~ msgid "%P%F: Relocatable linking with relocations from format %s (%B) to format %s (%B) is not supported\n"
+#~ msgstr "%P%F: Omlokaliseringsbar länkning med omlokaliseringar från formatet %s (%B) till formatet %s (%B) stöds inte\n"
+
+#~ msgid "%P%X: %s architecture of input file `%B' is incompatible with %s output\n"
+#~ msgstr "%P%X: %s-arkitekturen i indatafilen â€%B†är inkompatibel med %s-utdata\n"
+
+#~ msgid "%P%X: failed to merge target specific data of file %B\n"
+#~ msgstr "%P%X: misslyckades med att slå samman målspecifik data från fil %B\n"
+
+#~ msgid "%P%F: Could not define common symbol `%T': %E\n"
+#~ msgstr "%P%F: Kunde inte definiera generell symbol â€%Tâ€: %E\n"
+
+#~ msgid "%P%F: invalid syntax in flags\n"
+#~ msgstr "%P%F: ogiltig syntax i flaggor\n"
+
+#~ msgid "%F%P:%S: error: align with input and explicit align specified\n"
+#~ msgstr "%F%P:%S: fel: justering med indata och uttrycklig justering angiven\n"
+
+#~ msgid "%P%F: Failed to create hash table\n"
+#~ msgstr "%P%F: Misslyckades med att skapa hashtabell\n"
+
+#~ msgid "%P%F: %s: plugin reported error after all symbols read\n"
+#~ msgstr "%P%F: %s: instick rapporterade fel efter att alla symboler lästs in\n"
+
+#~ msgid "%P%F: multiple STARTUP files\n"
+#~ msgstr "%P%F: flera samtidiga STARTUP-filer\n"
+
+#~ msgid "%X%P:%S: section has both a load address and a load region\n"
+#~ msgstr "%X%P:%S: sektionen har både en inläsningsadress och ett minnesinläsningsområde\n"
+
+#~ msgid "%X%P:%S: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"
+#~ msgstr "%X%P:%S: PHDRS och FILEHDR stöds inte när föregående PT_LOAD-huvuden saknar dem\n"
+
+#~ msgid "%F%P: no sections assigned to phdrs\n"
+#~ msgstr "%F%P: inga sektioner tilldelade till phdrs\n"
+
+#~ msgid "%F%P: bfd_record_phdr failed: %E\n"
+#~ msgstr "%F%P: bfd_record_phdr misslyckades: %E\n"
+
+#~ msgid "%X%P: section `%s' assigned to non-existent phdr `%s'\n"
+#~ msgstr "%X%P: sektionen â€%s†är tilldelad till icke-existerande phdr â€%sâ€\n"
+
+#~ msgid "%X%P: unknown language `%s' in version information\n"
+#~ msgstr "%X%P: okänt sprÃ¥k i â€%s†i versionsinformation\n"
+
+#~ msgid "%X%P: anonymous version tag cannot be combined with other version tags\n"
+#~ msgstr "%X%P: anonym versionstagg kan inte kombineras med andra versionstaggar\n"
+
+#~ msgid "%X%P: duplicate version tag `%s'\n"
+#~ msgstr "%X%P: dubbel versionstagg â€%sâ€\n"
+
+#~ msgid "%X%P: duplicate expression `%s' in version information\n"
+#~ msgstr "%X%P: dubbelt uttryck â€%s†i versionsinformation\n"
+
+#~ msgid "%X%P: unable to find version dependency `%s'\n"
+#~ msgstr "%X%P: kan inte hitta versionsberoende â€%sâ€\n"
+
+#~ msgid "%X%P: unable to read .exports section contents\n"
+#~ msgstr "%X%P: kan inte läsa innehållet i .exports-sektionen\n"
+
+#~ msgid "%X%P: unknown feature `%s'\n"
+#~ msgstr "%X%P: okänd funktion â€%sâ€\n"
+
+#~ msgid "%X%P: can't set BFD default target to `%s': %E\n"
+#~ msgstr "%X%P: kan inte ställa in BFD-standardmÃ¥let till â€%sâ€: %E\n"
+
+#~ msgid "built in linker script"
+#~ msgstr "inbyggt länkskript"
+
+#~ msgid "using external linker script:"
+#~ msgstr "använder externt länkskript:"
+
+#~ msgid "using internal linker script:"
+#~ msgstr "använder internt länkskript:"
+
+#~ msgid "%P: link errors found, deleting executable `%s'\n"
+#~ msgstr "%P: länkfel hittades, tar bort den körbara filen â€%sâ€\n"
+
+#~ msgid "%X%P: unable to open for source of copy `%s'\n"
+#~ msgstr "%X%P: kan inte öppna för källan till kopian â€%sâ€\n"
+
+#~ msgid "%X%P: unable to open for destination of copy `%s'\n"
+#~ msgstr "%X%P: kan inte öppna för mÃ¥l av kopian â€%sâ€\n"
+
+#~ msgid "%P: Error writing file `%s'\n"
+#~ msgstr "%P: Fel vid skrivning av filen â€%sâ€\n"
+
+#~ msgid "%P: Error closing file `%s'\n"
+#~ msgstr "%P: Fel vid stängning av filen â€%sâ€\n"
+
+#~ msgid "%P%F: bfd_hash_lookup failed: %E\n"
+#~ msgstr "%P%F: bfd_hash_lookup misslyckades: %E\n"
+
+#~ msgid "%X%P: error: duplicate retain-symbols-file\n"
+#~ msgstr "%X%P: fel: dubbel retain-symbols-file\n"
+
+#~ msgid "%P%F: bfd_hash_lookup for insertion failed: %E\n"
+#~ msgstr "%P%F: bfd_hash_lookup för ingång misslyckades: %E\n"
+
+#~ msgid "%P: `-retain-symbols-file' overrides `-s' and `-S'\n"
+#~ msgstr "%P: â€-retain-symbols-file†åsidosätter â€-s†och â€-Sâ€\n"
+
+#~ msgid "%D: first defined here\n"
+#~ msgstr "%D: först definierad här\n"
+
+#~ msgid "%P: Disabling relaxation: it will not work with multiple definitions\n"
+#~ msgstr "%P: Stänger av avslappning: det kommer inte att fungera med flera definitioner\n"
+
+#~ msgid "%B: warning: common is here\n"
+#~ msgstr "%B: varning: gemensam är här\n"
+
+#~ msgid "%B: warning: defined here\n"
+#~ msgstr "%B: varning: definierad här\n"
+
+#~ msgid "%B: warning: larger common is here\n"
+#~ msgstr "%B: varning: större gemensam är här\n"
+
+#~ msgid "%B: warning: smaller common is here\n"
+#~ msgstr "%B: varning: mindre gemensam är här\n"
+
+#~ msgid "%B: warning: previous common is here\n"
+#~ msgstr "%B: varning: föregående gemensam är här\n"
+
+#~ msgid "%P: warning: global constructor %s used\n"
+#~ msgstr "%P: varning: global konstruktor %s användes\n"
+
+#~ msgid "%P%F: BFD backend error: BFD_RELOC_CTOR unsupported\n"
+#~ msgstr "%P%F: Fel i BFD-backend: BFD_RELOC_CTOR stöds inte\n"
+
+#~ msgid "%C: warning: undefined reference to `%T'\n"
+#~ msgstr "%C: varning: odefinierad referens till â€%Tâ€\n"
+
+#~ msgid "%X%D: more undefined references to `%T' follow\n"
+#~ msgstr "%X%D: flera odefinierade referenser till â€%T†följer\n"
+
+#~ msgid "%D: warning: more undefined references to `%T' follow\n"
+#~ msgstr "%D: varning: flera odefinierade referenser till â€%T†följer\n"
+
+#~ msgid "%X%B: undefined reference to `%T'\n"
+#~ msgstr "%X%B: odefinierad referens till â€%Tâ€\n"
+
+#~ msgid "%B: warning: undefined reference to `%T'\n"
+#~ msgstr "%B: varning: odefinierad referens till â€%Tâ€\n"
+
+#~ msgid "%X%B: more undefined references to `%T' follow\n"
+#~ msgstr "%X%B: flera odefinierade referenser till â€%T†följer\n"
+
+#~ msgid "%B: warning: more undefined references to `%T' follow\n"
+#~ msgstr "%B: varning: flera odefinierade referenser till â€%T†följer\n"
+
+#~ msgid " additional relocation overflows omitted from the output\n"
+#~ msgstr " ytterligare omlokaliseringsspill utelämnade från utdatan\n"
+
+#~ msgid " relocation truncated to fit: %s against undefined symbol `%T'"
+#~ msgstr " omlokalisering trunkerad för att passa: %s mot odefinierad symbol â€%Tâ€"
+
+#~ msgid " relocation truncated to fit: %s against symbol `%T' defined in %A section in %B"
+#~ msgstr " omlokalisering trunkerad för att passa: %s mot symbol â€%T†definierad i %A-sektion i %B"
+
+#~ msgid " relocation truncated to fit: %s against `%T'"
+#~ msgstr " omlokalisering trunkerad för att passa: %s mot â€%Tâ€"
+
+#~ msgid "%X%H: dangerous relocation: %s\n"
+#~ msgstr "%X%H: farlig omlokalisering: %s\n"
+
+#~ msgid "%X%H: reloc refers to symbol `%T' which is not being output\n"
+#~ msgstr "%X%H: omlokalisering refererar symbol â€%T†som inte skrivs ut\n"
+
+#~ msgid "no symbol"
+#~ msgstr "ingen symbol"
+
+#~ msgid "%B: In function `%T':\n"
+#~ msgstr "%B: I funktionen â€%Tâ€:\n"
+
+#~ msgid "%P: internal error: aborting at %s line %d in %s\n"
+#~ msgstr "%P: internt fel: avbryter vid %s rad %d i %s\n"
+
+#~ msgid "%P: internal error: aborting at %s line %d\n"
+#~ msgstr "%P: internt fel: avbryter vid %s rad %d\n"
+
+#~ msgid "%P%F: please report this bug\n"
+#~ msgstr "%P%F: rapportera detta fel\n"
+
+#~ msgid "GNU ld %s\n"
+#~ msgstr "GNU ld %s\n"
+
+#~ msgid "%P%F: bfd_new_link_order failed\n"
+#~ msgstr "%P%F: bfd_new_link_order misslyckades\n"
+
+#~ msgid "%F%P: cannot create split section name for %s\n"
+#~ msgstr "%F%P: kan inte skapa delat sektionsnamn för %s\n"
+
+#~ msgid "%F%P: clone section failed: %E\n"
+#~ msgstr "%F%P: klonsektion misslyckades: %E\n"
+
+#~ msgid "%8x something else\n"
+#~ msgstr "%8x någonting annat\n"
+
+#~ msgid "%F%P: final link failed: %E\n"
+#~ msgstr "%F%P: avslutande länkning misslyckades: %E\n"
+
+#~ msgid "KEYWORD"
+#~ msgstr "NYCKELORD"
+
+#~ msgid "Shared library control for HP/UX compatibility"
+#~ msgstr "Styrning av delade bibliotek för kompatibilitet med HP/UX"
+
+#~ msgid "ARCH"
+#~ msgstr "ARK"
+
+#~ msgid "Set architecture"
+#~ msgstr "Ställ in arkitektur"
+
+#~ msgid "TARGET"
+#~ msgstr "MÃ…L"
+
+#~ msgid "Specify target for following input files"
+#~ msgstr "Ange mål för följande indatafiler"
+
+#~ msgid "Read MRI format linker script"
+#~ msgstr "Läs länkskript i MRI-format"
+
+#~ msgid "Force common symbols to be defined"
+#~ msgstr "Tvinga gemensamma symboler att vara definierade"
+
+#~ msgid "Undo the effect of --export-dynamic"
+#~ msgstr "Gör effekten av --export-dynamic ogjord"
+
+#~ msgid "Small data size (if no size, same as --shared)"
+#~ msgstr "Liten datastorlek (om ingen storlek, samma som --shared)"
+
+#~ msgid "Set PROGRAM as the dynamic linker to use"
+#~ msgstr "Ställ in PROGRAM som den dynamiska länkare som ska användas"
+
+#~ msgid "DIRECTORY"
+#~ msgstr "KATALOG"
+
+#~ msgid "Override the default sysroot location"
+#~ msgstr "Åsidosätt standard sysroot-plats"
+
+#~ msgid "Set emulation"
+#~ msgstr "Ställ in emulering"
+
+#~ msgid "ARG"
+#~ msgstr "ARG"
+
+#~ msgid "Send arg to last-loaded plugin"
+#~ msgstr "Skicka argument till senast inlästa instick"
+
+#~ msgid "Ignored for GCC LTO option compatibility"
+#~ msgstr "Ignorerad för flaggkompatibilitet med GCC LTO"
+
+#~ msgid "Just link symbols (if directory, same as --rpath)"
+#~ msgstr "Länka bara symboler (om katalog, samma som --rpath)"
+
+#~ msgid "Do not strip symbols in discarded sections"
+#~ msgstr "Ta inte bort symboler i kastade sektioner"
+
+#~ msgid "Trace file opens"
+#~ msgstr "Spåra filöppningar"
+
+#~ msgid "Read default linker script"
+#~ msgstr "Läs in standardlänkskript"
+
+#~ msgid "[=SECTION]"
+#~ msgstr "[=SEKTION]"
+
+#~ msgid "Don't merge input [SECTION | orphan] sections"
+#~ msgstr "Slå inte samman [SEKTION | föräldralösa] sektioner"
+
+#~ msgid "Build global constructor/destructor tables"
+#~ msgstr "Bygg globala konstruktors-/destruktorstabeller"
+
+#~ msgid "Don't discard any local symbols"
+#~ msgstr "Kasta inte några lokala symboler"
+
+#~ msgid "Trace mentions of SYMBOL"
+#~ msgstr "Spåra omnämningar av SYMBOL"
+
+#~ msgid "Accept input files whose architecture cannot be determined"
+#~ msgstr "Acceptera indatafiler vars arkitektur inte kan avgöras"
+
+#~ msgid "Reject input files whose architecture is unknown"
+#~ msgstr "Avvisa indatafiler vars arkitektur är okänd"
+
+#~ msgid ""
+#~ "Always set DT_NEEDED for dynamic libraries mentioned on\n"
+#~ " the command line"
+#~ msgstr ""
+#~ "Ställ alltid in DT_NEEDED för dynamiska bibliotek som nämns på\n"
+#~ " kommandoraden"
+
+#~ msgid "Ignored for SunOS compatibility"
+#~ msgstr "Ignorerad för SunOS-kompatibilitet"
+
+#~ msgid "Link against shared libraries"
+#~ msgstr "Länka mot delade bibliotek"
+
+#~ msgid "Bind global references locally"
+#~ msgstr "Bind globala referenser lokalt"
+
+#~ msgid "Copy DT_NEEDED links mentioned inside DSOs that follow"
+#~ msgstr "Kopiera DT_NEEDED-länkar som nämns inuti DSO:er som följer"
+
+#~ msgid "Do not copy DT_NEEDED links mentioned inside DSOs that follow"
+#~ msgstr "Kopiera inte DT_NEEDED-länkar som nämns inuti DSO:er som följer"
+
+#~ msgid "Demangle symbol names [using STYLE]"
+#~ msgstr "Avkoda symbolnamn [använd STIL]"
+
+#~ msgid "Generate embedded relocs"
+#~ msgstr "Generera inbäddade omlokaliseringar"
+
+#~ msgid "Force generation of file with .exe suffix"
+#~ msgstr "Tvinga generering av fil med ändelsen .exe"
+
+#~ msgid "Remove unused sections (on some targets)"
+#~ msgstr "Ta bort oanvända sektioner (på vissa mål)"
+
+#~ msgid "Set default hash table size close to <NUMBER>"
+#~ msgstr "Ställ in standardstorlek för hashtabell nära <NUMMER>"
+
+#~ msgid "Print option help"
+#~ msgstr "Visa hjälp om flaggor"
+
+#~ msgid "Use less memory and more disk I/O"
+#~ msgstr "Använd mindre minne och mer disk-I/O"
+
+#~ msgid "Create default symbol version for imported symbols"
+#~ msgstr "Skapa standardsymbolversion för importerade symboler"
+
+#~ msgid "Turn off --whole-archive"
+#~ msgstr "Slå av ---whole-archive"
+
+#~ msgid "Specify target of output file"
+#~ msgstr "Ange mål för utdatafil"
+
+#~ msgid "Ignored for Linux compatibility"
+#~ msgstr "Ignorerad för kompatibilitet med Linux"
+
+#~ msgid "Reduce memory overheads, possibly taking much longer"
+#~ msgstr "Reducera minnesanvändning, kan ta längre tid"
+
+#~ msgid "Reduce code size by using target specific optimizations"
+#~ msgstr "Reducera kodstorlek genom att använda målspecifika optimeringar"
+
+#~ msgid "Do not use relaxation techniques to reduce code size"
+#~ msgstr "Använd inte lättnadstekniker för att reducera kodstorlek"
+
+#~ msgid "name|alignment"
+#~ msgstr "name|alignment"
+
+#~ msgid "Sort sections by name or maximum alignment"
+#~ msgstr "Sortera sektioner efter namn eller maximal justering"
+
+#~ msgid "How many tags to reserve in .dynamic section"
+#~ msgstr "Hur många taggar som ska reserveras i .dynamic-sektion"
+
+#~ msgid "[=SIZE]"
+#~ msgstr "[=STORLEK]"
+
+#~ msgid "Split output sections every SIZE octets"
+#~ msgstr "Dela utdatasektioner var STORLEK oktett"
+
+#~ msgid "[=COUNT]"
+#~ msgstr "[=ANTAL]"
+
+#~ msgid "Split output sections every COUNT relocs"
+#~ msgstr "Dela utdatasektioner var ANTAL omlokalisering"
+
+#~ msgid "Display target specific options"
+#~ msgstr "Visa målspecifika flaggor"
+
+#~ msgid "Do task level linking"
+#~ msgstr "Utför länkning på uppgiftsnivå"
+
+#~ msgid "Use same format as native linker"
+#~ msgstr "Använd samma format som inhemska länkaren"
+
+#~ msgid "Set address of named section"
+#~ msgstr "Ställ in adress på namngiven sektion"
+
+#~ msgid "Set address of .data section"
+#~ msgstr "Ställ in adress på .data-sektion"
+
+#~ msgid "Set address of .text section"
+#~ msgstr "Ställ in adress på .text-sektion"
+
+#~ msgid ""
+#~ "How to handle unresolved symbols. <method> is:\n"
+#~ " ignore-all, report-all, ignore-in-object-files,\n"
+#~ " ignore-in-shared-libs"
+#~ msgstr ""
+#~ "Hur oupplösta symboler ska hanteras. <metod> är:\n"
+#~ " ignore-all, report-all, ignore-in-object-files,\n"
+#~ " ignore-in-shared-libs"
+
+#~ msgid "[=NUMBER]"
+#~ msgstr "[=NUMMER]"
+
+#~ msgid "Output lots of information during link"
+#~ msgstr "Visa mycket information under länkning"
+
+#~ msgid ""
+#~ "Take export symbols list from .exports, using\n"
+#~ " SYMBOL as the version."
+#~ msgstr ""
+#~ "Plocka lista med exportsymboler från .exports och\n"
+#~ " använd SYMBOL som version."
+
+#~ msgid "Warn if global constructors/destructors are seen"
+#~ msgstr "Varna om globala konstruktorer/destruktorer hittas"
+
+#~ msgid "Warn if the multiple GP values are used"
+#~ msgstr "Varna om flera GP-värden används"
+
+#~ msgid "Warn only once per undefined symbol"
+#~ msgstr "Varna endast en gång per odefinierad symbol"
+
+#~ msgid "Warn if start of section changes due to alignment"
+#~ msgstr "Varna om början på sektionen ändras på grund av justering"
+
+#~ msgid "Warn if shared object has DT_TEXTREL"
+#~ msgstr "Varna om delat objekt har DT_TEXTREL"
+
+#~ msgid "Warn if an object has alternate ELF machine code"
+#~ msgstr "Varna om objekt har alternativ ELF-maskinkod"
+
+#~ msgid "Include all objects from following archives"
+#~ msgstr "Inkludera alla objekt från följande arkiv"
+
+#~ msgid "Unresolved SYMBOL will not cause an error or warning"
+#~ msgstr "Oupplöst SYMBOL kommer inte att orsaka fel eller varning"
+
+#~ msgid "%P%F: unrecognized -a option `%s'\n"
+#~ msgstr "%P%F: okänd -a-flagga â€%sâ€\n"
+
+#~ msgid "%P%F: unrecognized -assert option `%s'\n"
+#~ msgstr "%P%F: okänd -assert-flagga â€%sâ€\n"
+
+#~ msgid "%F%P: unknown demangling style `%s'\n"
+#~ msgstr "%F%P: okänd avkodningsstil â€%sâ€\n"
+
+#~ msgid "%P%F: invalid number `%s'\n"
+#~ msgstr "%P%F: ogiltigt tal â€%sâ€\n"
+
+#~ msgid "%P%F: bad --unresolved-symbols option: %s\n"
+#~ msgstr "%P%F: okänd --unresolved-symbols-flagga %s\n"
+
+#~ msgid "%P%F: bad -plugin-opt option\n"
+#~ msgstr "%P%F: okänd -plugin-opt-flagga\n"
+
+#~ msgid "%P%F: bad -rpath option\n"
+#~ msgstr "%P%F: okänd -rpath-flagga\n"
+
+#~ msgid "%P%F: -shared not supported\n"
+#~ msgstr "%P%F: -shared stöds inte\n"
+
+#~ msgid "descending"
+#~ msgstr "fallande"
+
+#~ msgid "ascending"
+#~ msgstr "stigande"
+
+#~ msgid "%P%F: invalid common section sorting option: %s\n"
+#~ msgstr "%P%F: ogiltigt sorteringsalternativ för generell sektion: %s\n"
+
+#~ msgid "name"
+#~ msgstr "namn"
+
+#~ msgid "alignment"
+#~ msgstr "justering"
+
+#~ msgid "%P%F: invalid section sorting option: %s\n"
+#~ msgstr "%P%F: ogiltigt alternativ för sektionssortering: %s\n"
+
+#~ msgid "%P%F: missing argument(s) to option \"--section-start\"\n"
+#~ msgstr "%P%F: argument saknas till flaggan â€--section-startâ€\n"
+
+#~ msgid "%P%F: group ended before it began (--help for usage)\n"
+#~ msgstr "%P%F: gruppen slutade innan den började (--help för användning)\n"
+
+#~ msgid "%P%X: --hash-size needs a numeric argument\n"
+#~ msgstr "%P%X: --hash-size behöver ett numeriskt argument\n"
+
+#~ msgid "%P%F: -r and -shared may not be used together\n"
+#~ msgstr "%P%F: -r och -shared kan inte användas tillsammans\n"
+
+#~ msgid "%P%F: -F may not be used without -shared\n"
+#~ msgstr "%P%F: -F kan inte användas utan -shared\n"
+
+#~ msgid "%P%F: invalid hex number `%s'\n"
+#~ msgstr "%P%F: ogiltigt hexadecimalt tal â€%sâ€\n"
+
+#~ msgid "Options:\n"
+#~ msgstr "Flaggor:\n"
+
+#~ msgid " @FILE"
+#~ msgstr " @FIL"
+
+#~ msgid "Read options from FILE\n"
+#~ msgstr "Inläsningsflaggor från FIL\n"
+
+#~ msgid "%s: emulation specific options:\n"
+#~ msgstr "%s: emuleringsspecifika flaggor:\n"
+
+#~ msgid "%P%F: unknown format type %s\n"
+#~ msgstr "%P%F: okänd formattyp %s\n"
+
+#~ msgid "%XCannot export %s: invalid export name\n"
+#~ msgstr "%XKan inte exportera %s: ogiltigt exportnamn\n"
+
+#~ msgid "%XError, duplicate EXPORT with ordinals: %s (%d vs %d)\n"
+#~ msgstr "%XFel, dubbel EXPORT med ordinaler: %s (%d gentemot %d)\n"
+
+#~ msgid "Warning, duplicate EXPORT: %s\n"
+#~ msgstr "Varning, dubbel EXPORT: %s\n"
+
+#~ msgid "%XCannot export %s: symbol not defined\n"
+#~ msgstr "%XKan inte exportera %s: symbolen är inte definierad\n"
+
+#~ msgid "%XCannot export %s: symbol wrong type (%d vs %d)\n"
+#~ msgstr "%XKan inte exportera %s: symbolen är av fel typ (%d gentemot %d)\n"
+
+#~ msgid "%XError, ordinal used twice: %d (%s vs %s)\n"
+#~ msgstr "%XFel, ordinalen användes två gånger: %d (%s gentemot %s)\n"
+
+#~ msgid "%XError: %d-bit reloc in dll\n"
+#~ msgstr "%XFel: %d-bitars omlokalisering i dll\n"
+
+#~ msgid "%s: Can't open output def file %s\n"
+#~ msgstr "%s: Kan inte öppna utdatadefinitionsfilen %s\n"
+
+#~ msgid "; no contents available\n"
+#~ msgstr "; inget innehåll är tillgängligt\n"
+
+#~ msgid "%C: variable '%T' can't be auto-imported. Please read the documentation for ld's --enable-auto-import for details.\n"
+#~ msgstr "%C: variabeln â€%T†kan inte importeras automatiskt. Läs dokumentationen för ld:s --enable-auto-import för detaljer.\n"
+
+#~ msgid "%XCan't open .lib file: %s\n"
+#~ msgstr "%XKan inte öppna .lib-filen: %s\n"
+
+#~ msgid "Creating library file: %s\n"
+#~ msgstr "Skapar biblioteksfil: %s\n"
+
+#~ msgid "%Xbfd_openr %s: %E\n"
+#~ msgstr "%Xbfd_openr %s: %E\n"
+
+#~ msgid "%X%s(%s): can't find member in non-archive file"
+#~ msgstr "%X%s(%s): kan inte hitta medlem i icke-arkivfil"
+
+#~ msgid "%XError: can't use long section names on this arch\n"
+#~ msgstr "%XError: kan inte använda långa sektionsnamn för denna ark\n"
+
+#~ msgid "<no plugin>"
+#~ msgstr "<inget instick>"
+
+#~ msgid "%P%F: %s: error loading plugin: %s\n"
+#~ msgstr "%P%F: %s: Fel vid inläsning av instick: %s\n"
+
+#~ msgid "could not create dummy IR bfd: %F%E\n"
+#~ msgstr "kunde inte skapa låtsas IR-bfd: %F%E\n"
+
+#~ msgid "%P%F: %s: non-ELF symbol in ELF BFD!\n"
+#~ msgstr "%P%F: %s: icke-ELF-symbol i ELF BFD!\n"
+
+#~ msgid "%P%F: unknown ELF symbol visibility: %d!\n"
+#~ msgstr "%P%F: okänd synlighet för ELF-symbol: %d!\n"
+
+#~ msgid "%P: %B: symbol `%s' definition: %d, visibility: %d, resolution: %d\n"
+#~ msgstr "%P: %B: symbol â€%s†definition: %d, synlighet: %d, upplösning %d\n"
+
+#~ msgid "%P%F: %s: plugin error: %d\n"
+#~ msgstr "%P%F: %s: insticksfel: %d\n"
+
+#~ msgid "%P%F: %s: plugin reported error claiming file\n"
+#~ msgstr "%P%F: %s: instick rapporterade fel vid anspråk på fil\n"
+
+#~ msgid "%P: %s: error in plugin cleanup: %d (ignored)\n"
+#~ msgstr "%P: %s fel vid insticksuppstädning: %d (överhoppat)\n"
+
+#~ msgid " --support-old-code Support interworking with old code\n"
+#~ msgstr " --support-old-code Stöd interaktion med gammal kod\n"
+
+#~ msgid ""
+#~ " --enable-auto-import Do sophistcated linking of _sym to\n"
+#~ " __imp_sym for DATA references\n"
+#~ msgstr ""
+#~ " --enable-auto-import Utför sofistikerad länkning av _sym till\n"
+#~ " __imp_sym för DATA-referenser\n"
+
+#~ msgid "%B%F: could not read symbols; %E\n"
+#~ msgstr "%B%F: kunde inte läsa symboler; %E\n"
+
+#~ msgid "%F%P: %s uses undefined section %s\n"
+#~ msgstr "%F%P: %s använder odefinierad sektion %s\n"
+
+#~ msgid "%F%P: %s forward reference of section %s\n"
+#~ msgstr "%F%P: %s framåtreferens av sektionen %s\n"
+
+#~ msgid "%F%S non constant expression for %s\n"
+#~ msgstr "%F%S ickekonstant uttryck för %s\n"
+
+#~ msgid "%F%P: cannot open %s for %s: %E\n"
+#~ msgstr "%F%P: kan inte öppna %s för %s: %E\n"
+
+#~ msgid "%P%F: target architecture respecified\n"
+#~ msgstr "%P%F: målarkitekturen specifierades om\n"
+
+#~ msgid "%P: %B: warning: ignoring duplicate `%s' section symbol `%s'\n"
+#~ msgstr "%P: %B: varning: ignorerar dubbla \"%s\"-sektionssymbolen \"%s\"\n"
+
+#~ msgid "%X%P: region %s is full (%B section %s)\n"
+#~ msgstr "%X%P: området %s är fullt (%B-sektion %s)\n"
+
+#~ msgid "%P: no [COMMON] command, defaulting to .bss\n"
+#~ msgstr "%P: inget [COMMON]-kommando, använder standardalternativet .bss\n"
+
+#~ msgid "%P%F: -r and --mpc860c0 may not be used together\n"
+#~ msgstr "%P%F: -r och --mpc860c0 kan inte användas tillsammans\n"
+
+#~ msgid "%P%F: --relax and -r may not be used together\n"
+#~ msgstr "%P%F: --relax och -r kan inte användas tillsammans\n"
+
+#~ msgid "%F%P: bfd_hash_table_init failed: %E\n"
+#~ msgstr "%F%P: bfd_hash_table_init misslyckades: %E\n"
+
+#~ msgid "%F%P: bfd_hash_lookup failed: %E\n"
+#~ msgstr "%F%P: bfd_hash_lookup misslyckades: %E\n"
+
+#~ msgid "%P%X: generated"
+#~ msgstr "%P%X: genererad"
+
+#~ msgid "%B%F: could not read symbols\n"
+#~ msgstr "%B%F: kunde inte läsa symboler\n"
+
+#~ msgid "[=WORDS]"
+#~ msgstr "[=ORD]"
+
+#~ msgid ""
+#~ "Modify problematic branches in last WORDS (1-10,\n"
+#~ "\t\t\t\tdefault 5) words of a page"
+#~ msgstr ""
+#~ "Ändra problematiska greningar i sista ORD (1-10,\n"
+#~ "\t\t\t\tstandardvärde 5) orden på en sida"
+
+#~ msgid "%P%F: invalid argument to option \"mpc860c0\"\n"
+#~ msgstr "%P%F: ogiltigt argument till flaggan \"mpc860c0\"\n"
+
+#~ msgid " create __imp_<SYMBOL> as well.\n"
+#~ msgstr " skapa även __imp_<SYMBOL>.\n"
+
+#~ msgid " --dll-search-prefix=<string> When linking dynamically to a dll witout an\n"
+#~ msgstr " --dll-search-prefix=<sträng> Använd hellre <sträng><basnamn>.dll\n"
+
+#~ msgid " importlib, use <string><basename>.dll \n"
+#~ msgstr " än lib<basnamn>.dll vid dynamisk\n"
+
+#~ msgid "Archive member included"
+#~ msgstr "Inkluderade arkivmedlem"
+
+#~ msgid "Don't merge orphan sections with the same name"
+#~ msgstr "Slå inte samman föräldralösa sektioner med samma namn"
diff --git a/gold/po/uk.po b/gold/po/uk.po
new file mode 100644
index 0000000..5f7c861
--- /dev/null
+++ b/gold/po/uk.po
@@ -0,0 +1,3451 @@
+# gold Ukrainian translation
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+#
+# Yuri Chornoivan <yurchor@ukr.net>, 2012, 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: gold 2.24.90\n"
+"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
+"POT-Creation-Date: 2014-02-10 09:42+1030\n"
+"PO-Revision-Date: 2014-10-14 22:52+0300\n"
+"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
+"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
+"Language: uk\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Lokalize 1.5\n"
+
+#: archive.cc:135
+#, c-format
+msgid "script or expression reference to %s"
+msgstr "Ñкрипт або вираз поÑилаєтьÑÑ Ð½Ð° %s"
+
+#: archive.cc:229
+#, c-format
+msgid "%s: no archive symbol table (run ranlib)"
+msgstr "%s: немає таблиці Ñимволів архіву (запуÑÑ‚Ñ–Ñ‚ÑŒ ranlib)"
+
+#: archive.cc:317
+#, c-format
+msgid "%s: bad archive symbol table names"
+msgstr "%s: помилкові назви у таблиці Ñимволів архіву"
+
+#: archive.cc:349
+#, c-format
+msgid "%s: malformed archive header at %zu"
+msgstr "%s: помилкове Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° архіву за адреÑою %zu"
+
+#: archive.cc:369
+#, c-format
+msgid "%s: malformed archive header size at %zu"
+msgstr "%s: помилкове Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ заголовка архіву за адреÑою %zu"
+
+#: archive.cc:380
+#, c-format
+msgid "%s: malformed archive header name at %zu"
+msgstr "%s: помилкове Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°Ð·Ð²Ð¸ заголовка архіву за адреÑою %zu"
+
+#: archive.cc:411
+#, c-format
+msgid "%s: bad extended name index at %zu"
+msgstr "%s: помилковий покажчик розширених назв за адреÑою %zu"
+
+#: archive.cc:421
+#, c-format
+msgid "%s: bad extended name entry at header %zu"
+msgstr "%s: помилковий Ð·Ð°Ð¿Ð¸Ñ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ñ— назви у заголовку %zu"
+
+#: archive.cc:518
+#, c-format
+msgid "%s: short archive header at %zu"
+msgstr "%s: закороткий заголовок архіву за адреÑою %zu"
+
+#: archive.cc:702
+#, c-format
+msgid "%s: member at %zu is not an ELF object"
+msgstr "%s: елемент за адреÑою %zu не Ñ” об’єктом ELF"
+
+#: archive.cc:1043
+#, c-format
+msgid "%s: archive libraries: %u\n"
+msgstr "%s: бібліотек архіву: %u\n"
+
+#: archive.cc:1045
+#, c-format
+msgid "%s: total archive members: %u\n"
+msgstr "%s: загалом елементів архіву: %u\n"
+
+#: archive.cc:1047
+#, c-format
+msgid "%s: loaded archive members: %u\n"
+msgstr "%s: завантажених елементів архіву: %u\n"
+
+#: archive.cc:1277
+#, c-format
+msgid "%s: lib groups: %u\n"
+msgstr "%s: групи бібліотек: %u\n"
+
+#: archive.cc:1279
+#, c-format
+msgid "%s: total lib groups members: %u\n"
+msgstr "%s: загальна кількіÑÑ‚ÑŒ учаÑників груп бібліотек: %u\n"
+
+#: archive.cc:1281
+#, c-format
+msgid "%s: loaded lib groups members: %u\n"
+msgstr "%s: кількіÑÑ‚ÑŒ завантажених учаÑників груп бібліотек: %u\n"
+
+#: arm-reloc-property.cc:303
+#, c-format
+msgid "invalid reloc %u"
+msgstr "некоректне переÑÑƒÐ²Ð°Ð½Ð½Ñ %u"
+
+#: arm-reloc-property.cc:316
+msgid "reloc "
+msgstr "переÑÑƒÐ²Ð°Ð½Ð½Ñ "
+
+#: arm-reloc-property.cc:316
+msgid "unimplemented reloc "
+msgstr "нереалізоване переÑÑƒÐ²Ð°Ð½Ð½Ñ "
+
+#: arm-reloc-property.cc:319
+msgid "dynamic reloc "
+msgstr "динамічне переÑÑƒÐ²Ð°Ð½Ð½Ñ "
+
+#: arm-reloc-property.cc:322
+msgid "private reloc "
+msgstr "приватне переÑÑƒÐ²Ð°Ð½Ð½Ñ "
+
+#: arm-reloc-property.cc:325
+msgid "obsolete reloc "
+msgstr "заÑтаріле переÑÑƒÐ²Ð°Ð½Ð½Ñ "
+
+#: arm.cc:1074
+msgid "** ARM cantunwind"
+msgstr "** неможливо розгорнути Ð´Ð»Ñ ARM"
+
+#: arm.cc:4037
+#, c-format
+msgid "%s: Thumb BLX instruction targets thumb function '%s'."
+msgstr "%s: інÑÑ‚Ñ€ÑƒÐºÑ†Ñ–Ñ thumb BLX має ціллю функцію thumb «%s»."
+
+#: arm.cc:4183
+msgid "conditional branch to PLT in THUMB-2 not supported yet."
+msgstr "підтримки умовного Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ Ð´Ð¾ PLT у THUMB-2 ще не передбачено."
+
+#: arm.cc:5263
+msgid "PREL31 overflow in EXIDX_CANTUNWIND entry"
+msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ PREL31 у запиÑÑ– EXIDX_CANTUNWIND"
+
+#. Something is wrong with this section. Better not touch it.
+#: arm.cc:5509
+#, c-format
+msgid "uneven .ARM.exidx section size in %s section %u"
+msgstr "незвичний розмір розділу .ARM.exidx у розділі %2$u %1$s"
+
+#: arm.cc:5835
+msgid "Found non-EXIDX input sections in EXIDX output section"
+msgstr "У розділі Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ EXIDX виÑвлено вхідні розділи, Ñкі не належать до EXIDX"
+
+#: arm.cc:5889 arm.cc:5893
+#, c-format
+msgid "unwinding may not work because EXIDX input section %u of %s is not in EXIDX output section"
+msgstr "Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶Ðµ не Ñпрацювати, оÑкільки розділ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ EXIDX %u %s не належить до розділу Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ EXIDX"
+
+#: arm.cc:6179
+#, c-format
+msgid "cannot scan executable section %u of %s for Cortex-A8 erratum because it has no mapping symbols."
+msgstr "ÑÐºÐ°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ розділу %u %s щодо помилок Ð´Ð»Ñ Cortex-A8 неможливе, оÑкільки у ньому немає Ñимволів прив’Ñзки."
+
+#: arm.cc:6381 object.cc:818
+#, c-format
+msgid "invalid symbol table name index: %u"
+msgstr "некоректний Ñ–Ð½Ð´ÐµÐºÑ Ð½Ð°Ð·Ð²Ð¸ таблиці Ñимволів: %u"
+
+#: arm.cc:6389 object.cc:824
+#, c-format
+msgid "symbol table name section has wrong type: %u"
+msgstr "розділ назви таблиці Ñимволів належить до помилкового типу: %u"
+
+#: arm.cc:6639
+#, c-format
+msgid "EXIDX section %s(%u) links to invalid section %u in %s"
+msgstr "розділ EXIDX %s(%u) поÑилаєтьÑÑ Ð½Ð° некоректний розділ %u у %s"
+
+#: arm.cc:6648
+#, c-format
+msgid "EXIDX sections %s(%u) and %s(%u) both link to text section%s(%u) in %s"
+msgstr "розділи EXIDX %s(%u) та %s(%u) одночаÑно пов’Ñзано з текÑтовим розділом %s(%u) у %s"
+
+#: arm.cc:6662
+#, c-format
+msgid "EXIDX section %s(%u) links to non-allocated section %s(%u) in %s"
+msgstr "розділ EXIDX %s(%u) пов’Ñзано з нерозміщеним розділом %s(%u) у %s"
+
+#. I would like to make this an error but currently ld just ignores
+#. this.
+#: arm.cc:6672
+#, c-format
+msgid "EXIDX section %s(%u) links to non-executable section %s(%u) in %s"
+msgstr "розділ EXIDX %s(%u) пов’Ñзано з невиконуваним розділом %s(%u) у %s"
+
+#: arm.cc:6756
+#, c-format
+msgid "SHF_LINK_ORDER not set in EXIDX section %s of %s"
+msgstr "SHF_LINK_ORDER не вÑтановлено у розділі EXIDX %s %s"
+
+#: arm.cc:6789
+#, c-format
+msgid "relocation section %u has invalid info %u"
+msgstr "розділ переÑувань %u міÑтить помилкові дані, %u"
+
+#: arm.cc:6795
+#, c-format
+msgid "section %u has multiple relocation sections %u and %u"
+msgstr "у розділі %u міÑÑ‚ÑÑ‚ÑŒÑÑ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° розділів переÑуваннÑ, %u та %u"
+
+#: arm.cc:7155
+#, c-format
+msgid "undefined or discarded local symbol %u from object %s in GOT"
+msgstr "невизначений або відкинутий локальний Ñимвол %u від об’єкта %s у GOT"
+
+#: arm.cc:7177
+#, c-format
+msgid "undefined or discarded symbol %s in GOT"
+msgstr "невизначений або відкинутий Ñимвол %s у GOT"
+
+#: arm.cc:7293 i386.cc:168 sparc.cc:1349 tilegx.cc:182 x86_64.cc:257
+msgid "** PLT"
+msgstr "** PLT"
+
+#: arm.cc:7800 i386.cc:1685 powerpc.cc:5111 sparc.cc:2117 tilegx.cc:3123
+#: tilegx.cc:3575 x86_64.cc:2169 x86_64.cc:2598
+#, c-format
+msgid "%s: unsupported reloc %u against local symbol"
+msgstr "%s: непідтримуване переÑÑƒÐ²Ð°Ð½Ð½Ñ %u щодо локального Ñимволу"
+
+#: arm.cc:7844
+#, c-format
+msgid "requires unsupported dynamic reloc %s; recompile with -fPIC"
+msgstr "потребує непідтримуваного динамічного переÑÑƒÐ²Ð°Ð½Ð½Ñ %s; повторно зберіть з -fPIC"
+
+#: arm.cc:7935 i386.cc:1775 x86_64.cc:2377
+#, c-format
+msgid "section symbol %u has bad shndx %u"
+msgstr "Ñимвол розділу %u має помилковий shndx %u"
+
+#. These are relocations which should only be seen by the
+#. dynamic linker, and should never be seen here.
+#: arm.cc:8044 arm.cc:8477 i386.cc:1844 i386.cc:2293 sparc.cc:2532
+#: sparc.cc:3009 tilegx.cc:3570 tilegx.cc:4123 x86_64.cc:2470 x86_64.cc:2931
+#, c-format
+msgid "%s: unexpected reloc %u in object file"
+msgstr "%s: неочікуване переÑÑƒÐ²Ð°Ð½Ð½Ñ %u у об’єктному файлі"
+
+#: arm.cc:8076 i386.cc:1878 sparc.cc:2431 tilegx.cc:3474 x86_64.cc:2502
+#, c-format
+msgid "local symbol %u has bad shndx %u"
+msgstr "локальний Ñимвол %u має помилковий shndx %u"
+
+#: arm.cc:8177 i386.cc:2021 powerpc.cc:5655 sparc.cc:2551 tilegx.cc:3591
+#: tilegx.cc:4128 x86_64.cc:2614 x86_64.cc:3053
+#, c-format
+msgid "%s: unsupported reloc %u against global symbol %s"
+msgstr "%s: непідтримуване переÑÑƒÐ²Ð°Ð½Ð½Ñ %u щодо загального Ñимволу %s"
+
+#: arm.cc:8635 i386.cc:2503
+#, c-format
+msgid "%s: unsupported RELA reloc section"
+msgstr "%s: непідтримуваний розділ переÑÑƒÐ²Ð°Ð½Ð½Ñ RELA"
+
+#: arm.cc:8725
+msgid "unable to provide V4BX reloc interworking fix up; the target profile does not support BX instruction"
+msgstr "не вдалоÑÑ Ð²ÐºÐ°Ð·Ð°Ñ‚Ð¸ належного Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ð·Ð°Ñ”Ð¼Ð¾Ð´Ñ–Ñ— переÑувань V4BX; у профілі Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ðµ передбачено підтримки інÑтрукції BX"
+
+#: arm.cc:8859
+#, c-format
+msgid "cannot relocate %s in object file"
+msgstr "переÑÑƒÐ²Ð°Ð½Ð½Ñ %s у об’єктному файлі неможливе"
+
+#: arm.cc:9333 arm.cc:9914
+#, c-format
+msgid "relocation overflow in %s"
+msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÑÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ %s"
+
+#: arm.cc:9341 arm.cc:9919
+#, c-format
+msgid "unexpected opcode while processing relocation %s"
+msgstr "неочікуваний код операції під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ переÑÑƒÐ²Ð°Ð½Ð½Ñ %s"
+
+#: arm.cc:9485 i386.cc:2841 i386.cc:2923 i386.cc:2994 i386.cc:3030
+#: i386.cc:3102 powerpc.cc:7562 sparc.cc:3589 sparc.cc:3780 sparc.cc:3841
+#: sparc.cc:3948 tilegx.cc:4712 x86_64.cc:3486 x86_64.cc:3586 x86_64.cc:3664
+#: x86_64.cc:3698
+#, c-format
+msgid "unsupported reloc %u"
+msgstr "непідтримуване переÑÑƒÐ²Ð°Ð½Ð½Ñ %u"
+
+#: arm.cc:9564
+#, c-format
+msgid "%s: unexpected %s in object file"
+msgstr "%s: неочікуване %s у об’єктному файлі"
+
+#: arm.cc:9899
+#, c-format
+msgid "cannot handle %s in a relocatable link"
+msgstr "обробка %s у поÑиланні переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð°"
+
+#: arm.cc:10003
+#, c-format
+msgid "Source object %s has EABI version %d but output has EABI version %d."
+msgstr "об’єкт-джерело, %s, викориÑтовує верÑÑ–ÑŽ EABI %d, а Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñтовує верÑÑ–ÑŽ EABI %d."
+
+#: arm.cc:10100 powerpc.cc:2077 target.cc:94
+#, c-format
+msgid "%s: unsupported ELF file type %d"
+msgstr "%s: непідтримуваний тип файлів ELF %d"
+
+#: arm.cc:10296
+#, c-format
+msgid "%s: unknown CPU architecture"
+msgstr "%s: невідома архітектура процеÑора"
+
+#: arm.cc:10333
+#, c-format
+msgid "%s: conflicting CPU architectures %d/%d"
+msgstr "%s: конфлікт архітектур процеÑорів %d/%d"
+
+#: arm.cc:10471
+#, c-format
+msgid "%s has both the current and legacy Tag_MPextension_use attributes"
+msgstr "Ð´Ð»Ñ %s визначено одразу обидва атрибути Tag_MPextension_use, current Ñ– legacy"
+
+#: arm.cc:10499
+#, c-format
+msgid "%s uses VFP register arguments, output does not"
+msgstr "у %s викориÑтовуютьÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¸-регіÑтри VFP, а у виведенні — ні"
+
+#: arm.cc:10645
+#, c-format
+msgid "conflicting architecture profiles %c/%c"
+msgstr "конфлікт профілів архітектур %c/%c"
+
+#. It's sometimes ok to mix different configs, so this is only
+#. a warning.
+#: arm.cc:10703
+#, c-format
+msgid "%s: conflicting platform configuration"
+msgstr "%s: конфлікт конфігурацій платформ"
+
+#: arm.cc:10712
+#, c-format
+msgid "%s: conflicting use of R9"
+msgstr "%s: конфлікт викориÑÑ‚Ð°Ð½Ð½Ñ R9"
+
+#: arm.cc:10725
+#, c-format
+msgid "%s: SB relative addressing conflicts with use of R9"
+msgstr "%s: викориÑÑ‚Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð½Ð¾Ñної адреÑації SB конфліктує з викориÑтаннÑм R9"
+
+#: arm.cc:10740
+#, c-format
+msgid "%s uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may fail"
+msgstr "у %s викориÑтовуєтьÑÑ %u-байтовий wchar_t, хоча у виведенні викориÑтовуєтьÑÑ %u-байтовий wchar_t; викориÑÑ‚Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ wchar_t між об’єктами може зазнати невдачі"
+
+#: arm.cc:10766
+#, c-format
+msgid "%s uses %s enums yet the output is to use %s enums; use of enum values across objects may fail"
+msgstr "%s викориÑтовуютьÑÑ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÐ¸ %s, хоча у виведенні викориÑтовуютьÑÑ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÐ¸ %s; викориÑÑ‚Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ переліків між об’єктами може зазнати невдачі"
+
+#: arm.cc:10782
+#, c-format
+msgid "%s uses iWMMXt register arguments, output does not"
+msgstr "у %s викориÑтовуютьÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¸-регіÑтри iWMMXt, а у виведенні — ні"
+
+#: arm.cc:10803
+#, c-format
+msgid "fp16 format mismatch between %s and output"
+msgstr "розбіжноÑÑ‚Ñ– у визначенні Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ fp16 між %s та виведеннÑм"
+
+#: arm.cc:10849
+#, c-format
+msgid "%s has has both the current and legacy Tag_MPextension_use attributes"
+msgstr "Ð´Ð»Ñ %s визначено одразу обидва атрибути Tag_MPextension_use, current Ñ– legacy"
+
+#: arm.cc:10895 arm.cc:10988
+#, c-format
+msgid "%s: unknown mandatory EABI object attribute %d"
+msgstr "%s: невідомий обов’Ñзковий атрибути об’єкта EABI %d"
+
+#: arm.cc:10899 arm.cc:10993
+#, c-format
+msgid "%s: unknown EABI object attribute %d"
+msgstr "%s: невідомий атрибут об’єкта EABI, %d"
+
+#: arm.cc:11345
+#, c-format
+msgid "cannot handle branch to local %u in a merged section %s"
+msgstr "не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ гілку до локального Ñимволу %u у об’єднаному розділі %s"
+
+#: arm.cc:11425 target-reloc.h:390
+msgid "relocation refers to discarded section"
+msgstr "переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾ÑилаєтьÑÑ Ð½Ð° відкинутий розділ"
+
+#. We cannot handle this now.
+#: arm.cc:11589
+#, c-format
+msgid "multiple SHT_ARM_EXIDX sections %s and %s in a non-relocatable link"
+msgstr "декілька розділів SHT_ARM_EXIDX %s та %s у непридатному до переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñиланні"
+
+#: attributes.cc:410
+#, c-format
+msgid "%s: must be processed by '%s' toolchain"
+msgstr "%s: має бути оброблено набором інÑтрументів «%s»"
+
+#: attributes.cc:418
+#, c-format
+msgid "%s: object tag '%d, %s' is incompatible with tag '%d, %s'"
+msgstr "%s: мітка об’єкта «%d, %s» неÑуміÑна з міткою «%d, %s»"
+
+#: binary.cc:129
+#, c-format
+msgid "cannot open %s: %s:"
+msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ %s: %s:"
+
+#: common.cc:352 output.cc:2432 output.cc:2531
+#, c-format
+msgid "out of patch space in section %s; relink with --incremental-full"
+msgstr "вихід за межі латки у розділі %s; виконайте повторне ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° допомогою --incremental-full"
+
+#: compressed_output.cc:225
+msgid "not compressing section data: zlib error"
+msgstr "дані розділу не буде ÑтиÑнуто: помилка zlib"
+
+#: cref.cc:384
+#, c-format
+msgid "cannot open symbol count file %s: %s"
+msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл обліку Ñимволів %s: %s"
+
+#: cref.cc:398
+#, c-format
+msgid ""
+"\n"
+"Cross Reference Table\n"
+"\n"
+msgstr ""
+"\n"
+"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð¿ÐµÑ€ÐµÑ…Ñ€ÐµÑних поÑилань\n"
+"\n"
+
+#: cref.cc:399
+msgid "Symbol"
+msgstr "Символ"
+
+#: cref.cc:401
+msgid "File"
+msgstr "Файл"
+
+#: descriptors.cc:125
+#, c-format
+msgid "file %s was removed during the link"
+msgstr "файл %s не було вилучено під Ñ‡Ð°Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ"
+
+#: descriptors.cc:177
+msgid "out of file descriptors and couldn't close any"
+msgstr "забагато деÑкрипторів файлів Ñ– не вдаєтьÑÑ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ð¸ жоден з вже Ñтворених"
+
+#: descriptors.cc:198 descriptors.cc:234 descriptors.cc:267
+#, c-format
+msgid "while closing %s: %s"
+msgstr "під Ñ‡Ð°Ñ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ %s: %s"
+
+#: dirsearch.cc:73
+#, c-format
+msgid "%s: can not read directory: %s"
+msgstr "%s: не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ каталог: %s"
+
+#: dwarf_reader.cc:454
+#, c-format
+msgid "%s: DWARF info may be corrupt; offsets in a range list entry are in different sections"
+msgstr "%s: інформацію DWARF могло бути пошкоджено; відÑтупи у запиÑÑ– ÑпиÑку діапазонів перебувають у різних розділах"
+
+#: dwarf_reader.cc:1513
+#, c-format
+msgid "%s: corrupt debug info in %s"
+msgstr "%s: пошкоджено діагноÑтичну інформацію у %s"
+
+#: dynobj.cc:176
+#, c-format
+msgid "unexpected duplicate type %u section: %u, %u"
+msgstr "неочікуване Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ типу %u: %u, %u"
+
+#: dynobj.cc:231
+#, c-format
+msgid "unexpected link in section %u header: %u != %u"
+msgstr "неочікуване поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñƒ заголовку розділу %u: %u != %u"
+
+#: dynobj.cc:267
+#, c-format
+msgid "DYNAMIC section %u link out of range: %u"
+msgstr "поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ DYNAMIC %u лежить поза межами доÑтупного діапазону: %u"
+
+#: dynobj.cc:275
+#, c-format
+msgid "DYNAMIC section %u link %u is not a strtab"
+msgstr "поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ DYNAMIC %u, %u, не Ñ” strtab"
+
+#: dynobj.cc:304
+#, c-format
+msgid "DT_SONAME value out of range: %lld >= %lld"
+msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ DT_SONAME поза межами припуÑтимого діапазону: %lld >= %lld"
+
+#: dynobj.cc:316
+#, c-format
+msgid "DT_NEEDED value out of range: %lld >= %lld"
+msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ DT_NEEDED поза межами припуÑтимого діапазону: %lld >= %lld"
+
+#: dynobj.cc:329
+msgid "missing DT_NULL in dynamic segment"
+msgstr "не виÑтачає DT_NULL у динамічному Ñегменті"
+
+#: dynobj.cc:382
+#, c-format
+msgid "invalid dynamic symbol table name index: %u"
+msgstr "некоректний Ñ–Ð½Ð´ÐµÐºÑ Ð½Ð°Ð·Ð²Ð¸ таблиці динамічних Ñимволів: %u"
+
+#: dynobj.cc:389
+#, c-format
+msgid "dynamic symbol table name section has wrong type: %u"
+msgstr "розділ назви таблиці динамічних Ñимволів належить до помилкового типу: %u"
+
+#: dynobj.cc:476 object.cc:690 object.cc:1453
+#, c-format
+msgid "bad section name offset for section %u: %lu"
+msgstr "помилковий відÑтуп назви розділу Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %u: %lu"
+
+#: dynobj.cc:506
+#, c-format
+msgid "duplicate definition for version %u"
+msgstr "Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ— %u"
+
+#: dynobj.cc:535
+#, c-format
+msgid "unexpected verdef version %u"
+msgstr "неочікувана верÑÑ–Ñ verdef %u"
+
+#: dynobj.cc:551
+#, c-format
+msgid "verdef vd_cnt field too small: %u"
+msgstr "поле vd_cnt verdef є надто малим: %u"
+
+#: dynobj.cc:559
+#, c-format
+msgid "verdef vd_aux field out of range: %u"
+msgstr "поле vd_aux verdef лежить поза межами доÑтупного діапазону: %u"
+
+#: dynobj.cc:570
+#, c-format
+msgid "verdaux vda_name field out of range: %u"
+msgstr "поле vd_name verdef лежить поза межами доÑтупного діапазону: %u"
+
+#: dynobj.cc:580
+#, c-format
+msgid "verdef vd_next field out of range: %u"
+msgstr "поле vd_next verdef лежить поза межами доÑтупного діапазону: %u"
+
+#: dynobj.cc:614
+#, c-format
+msgid "unexpected verneed version %u"
+msgstr "неочікувана верÑÑ–Ñ verneed %u"
+
+#: dynobj.cc:623
+#, c-format
+msgid "verneed vn_aux field out of range: %u"
+msgstr "поле vn_aux verneed лежить поза межами доÑтупного діапазону: %u"
+
+#: dynobj.cc:637
+#, c-format
+msgid "vernaux vna_name field out of range: %u"
+msgstr "поле vna_name vernaux лежить поза межами доÑтупного діапазону: %u"
+
+#: dynobj.cc:648
+#, c-format
+msgid "verneed vna_next field out of range: %u"
+msgstr "поле vna_next verneed лежить поза межами доÑтупного діапазону: %u"
+
+#: dynobj.cc:659
+#, c-format
+msgid "verneed vn_next field out of range: %u"
+msgstr "поле vn_next verneed лежить поза межами доÑтупного діапазону: %u"
+
+#: dynobj.cc:708
+msgid "size of dynamic symbols is not multiple of symbol size"
+msgstr "розмір динамічних Ñимволів не Ñ” кратним до розміру одного Ñимволу"
+
+#: dynobj.cc:1524
+#, c-format
+msgid "symbol %s has undefined version %s"
+msgstr "Ñимвол %s має невизначену верÑÑ–ÑŽ, %s"
+
+#: ehframe.cc:381
+msgid "overflow in PLT unwind data; unwinding through PLT may fail"
+msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñƒ даних Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ PLT; Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ð·Ð° допомогою PLT може завершитиÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾ÑŽ"
+
+#: ehframe.h:78
+msgid "** eh_frame_hdr"
+msgstr "** eh_frame_hdr"
+
+#: ehframe.h:419
+msgid "** eh_frame"
+msgstr "** eh_frame"
+
+#: errors.cc:81 errors.cc:92
+#, c-format
+msgid "%s: fatal error: "
+msgstr "%s: критична помилка: "
+
+#: errors.cc:103 errors.cc:139
+#, c-format
+msgid "%s: error: "
+msgstr "%s: помилка: "
+
+#: errors.cc:115 errors.cc:155
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: попередженнÑ: "
+
+#: errors.cc:179
+msgid "warning"
+msgstr "попередженнÑ"
+
+#: errors.cc:184
+msgid "error"
+msgstr "помилка"
+
+#: errors.cc:190
+#, c-format
+msgid "%s: %s: undefined reference to '%s'\n"
+msgstr "%s: %s: невизначене поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° «%s»\n"
+
+#: errors.cc:194
+#, c-format
+msgid "%s: %s: undefined reference to '%s', version '%s'\n"
+msgstr "%s: %s: невизначене поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° «%s», верÑÑ–Ñ Â«%s»\n"
+
+#: errors.cc:198
+#, c-format
+msgid "%s: the vtable symbol may be undefined because the class is missing its key function"
+msgstr "%s: Ñимвол vtable може бути невизначеним, оÑкільки у клаÑÑ– не виÑтачає його ключової функції"
+
+#: errors.cc:208
+#, c-format
+msgid "%s: "
+msgstr "%s: "
+
+#: expression.cc:192
+#, c-format
+msgid "undefined symbol '%s' referenced in expression"
+msgstr "у виразі виÑвлено поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Ñимвол «%s», Ñкий не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸"
+
+#: expression.cc:230
+msgid "invalid reference to dot symbol outside of SECTIONS clause"
+msgstr "некоректне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Ñимвол з крапкою поза межами Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ SECTIONS"
+
+#. Handle unary operators. We use a preprocessor macro as a hack to
+#. capture the C operator.
+#: expression.cc:302
+msgid "unary "
+msgstr "унарне "
+
+#. Handle binary operators. We use a preprocessor macro as a hack to
+#. capture the C operator. KEEP_LEFT means that if the left operand
+#. is section relative and the right operand is not, the result uses
+#. the same section as the left operand. KEEP_RIGHT is the same with
+#. left and right swapped. IS_DIV means that we need to give an error
+#. if the right operand is zero. WARN means that we should warn if
+#. used on section relative values in a relocatable link. We always
+#. warn if used on values in different sections in a relocatable link.
+#: expression.cc:446
+msgid "binary "
+msgstr "двійкове "
+
+#: expression.cc:450
+msgid " by zero"
+msgstr " на нуль"
+
+#: expression.cc:636
+msgid "max applied to section relative value"
+msgstr "max заÑтоÑовано до значеннÑ, Ñке змінюєтьÑÑ Ð· розділом"
+
+#: expression.cc:687
+msgid "min applied to section relative value"
+msgstr "min заÑтоÑовано до значеннÑ, Ñке змінюєтьÑÑ Ð· розділом"
+
+#: expression.cc:828
+msgid "aligning to section relative value"
+msgstr "Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð° значеннÑм, Ñке змінюєтьÑÑ Ð· розділом"
+
+#: expression.cc:993
+#, c-format
+msgid "unknown constant %s"
+msgstr "невідома Ñтала %s"
+
+#: fileread.cc:141
+#, c-format
+msgid "munmap failed: %s"
+msgstr "помилка munmap: %s"
+
+#: fileread.cc:209
+#, c-format
+msgid "%s: fstat failed: %s"
+msgstr "%s: помилка fstat: %s"
+
+#: fileread.cc:250
+#, c-format
+msgid "could not reopen file %s"
+msgstr "не вдалоÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ відкрити файл %s"
+
+#: fileread.cc:401
+#, c-format
+msgid "%s: pread failed: %s"
+msgstr "%s: помилка pread: %s"
+
+#: fileread.cc:415
+#, c-format
+msgid "%s: file too short: read only %lld of %lld bytes at %lld"
+msgstr "%s: файл Ñ” надто коротким: прочитано лише %lld з %lld байтів за адреÑою %lld"
+
+#: fileread.cc:538
+#, c-format
+msgid "%s: attempt to map %lld bytes at offset %lld exceeds size of file; the file may be corrupt"
+msgstr "%s: Ñпроба відобразити %lld байтів за відÑтупом %lld призвела до виходу за межі файла; ймовірно, файл пошкоджено"
+
+#: fileread.cc:678
+#, c-format
+msgid "%s: lseek failed: %s"
+msgstr "%s: помилка lseek: %s"
+
+#: fileread.cc:684
+#, c-format
+msgid "%s: readv failed: %s"
+msgstr "%s: помилка readv: %s"
+
+#: fileread.cc:687
+#, c-format
+msgid "%s: file too short: read only %zd of %zd bytes at %lld"
+msgstr "%s: файл Ñ” надто коротким: прочитано лише %zd з %zd байтів за адреÑою %lld"
+
+#: fileread.cc:854
+#, c-format
+msgid "%s: total bytes mapped for read: %llu\n"
+msgstr "%s: загалом отримано байтів Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ: %llu\n"
+
+#: fileread.cc:856
+#, c-format
+msgid "%s: maximum bytes mapped for read at one time: %llu\n"
+msgstr "%s: макÑимальна кількіÑÑ‚ÑŒ байтів, отриманих Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð° один раз: %llu\n"
+
+#: fileread.cc:949
+#, c-format
+msgid "%s: stat failed: %s"
+msgstr "%s: помилка stat: %s"
+
+#: fileread.cc:1046
+#, c-format
+msgid "cannot find %s%s"
+msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ %s%s"
+
+#: fileread.cc:1071
+#, c-format
+msgid "cannot find %s"
+msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ %s"
+
+#: fileread.cc:1110
+#, c-format
+msgid "cannot open %s: %s"
+msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ %s: %s"
+
+#: gdb-index.cc:369
+#, c-format
+msgid "%s: --gdb-index currently supports only C and C++ languages"
+msgstr "%s: у поточній верÑÑ–Ñ— --gdb-index передбачено підтримку лише мов C та C++"
+
+#. The top level DIE should be one of the above.
+#: gdb-index.cc:390
+#, c-format
+msgid "%s: top level DIE is not DW_TAG_compile_unit or DW_TAG_type_unit"
+msgstr "%s: DIE верхнього Ñ€Ñ–Ð²Ð½Ñ Ð½Ðµ Ñ” DW_TAG_compile_unit або DW_TAG_type_unit"
+
+#: gdb-index.cc:844
+#, c-format
+msgid "%s: DWARF info may be corrupt; low_pc and high_pc are in different sections"
+msgstr "%s: інформацію DWARF могло бути пошкоджено; low_pc та high_pc перебувають у різних розділах"
+
+#: gdb-index.cc:970
+#, c-format
+msgid "%s: DWARF CUs: %u\n"
+msgstr "%s: CU DWARF: %u\n"
+
+#: gdb-index.cc:972
+#, c-format
+msgid "%s: DWARF CUs without pubnames/pubtypes: %u\n"
+msgstr "%s: CU DWARF без відкритих назв або відкритих типів: %u\n"
+
+#: gdb-index.cc:974
+#, c-format
+msgid "%s: DWARF TUs: %u\n"
+msgstr "%s: TU DWARF: %u\n"
+
+#: gdb-index.cc:976
+#, c-format
+msgid "%s: DWARF TUs without pubnames/pubtypes: %u\n"
+msgstr "%s: TU DWARF без відкритих назв або відкритих типів: %u\n"
+
+#: gdb-index.h:149
+msgid "** gdb_index"
+msgstr "** gdb_index"
+
+#: gold-threads.cc:103
+#, c-format
+msgid "pthead_mutextattr_init failed: %s"
+msgstr "помилка pthead_mutextattr_init: %s"
+
+#: gold-threads.cc:107
+#, c-format
+msgid "pthread_mutextattr_settype failed: %s"
+msgstr "помилка pthread_mutextattr_settype: %s"
+
+#: gold-threads.cc:112
+#, c-format
+msgid "pthread_mutex_init failed: %s"
+msgstr "помилка pthread_mutex_init: %s"
+
+#: gold-threads.cc:116
+#, c-format
+msgid "pthread_mutexattr_destroy failed: %s"
+msgstr "помилка pthread_mutexattr_destroy: %s"
+
+#: gold-threads.cc:123
+#, c-format
+msgid "pthread_mutex_destroy failed: %s"
+msgstr "помилка pthread_mutex_destroy: %s"
+
+#: gold-threads.cc:131 gold-threads.cc:396
+#, c-format
+msgid "pthread_mutex_lock failed: %s"
+msgstr "помилка pthread_mutex_lock: %s"
+
+#: gold-threads.cc:139 gold-threads.cc:410
+#, c-format
+msgid "pthread_mutex_unlock failed: %s"
+msgstr "помилка pthread_mutex_unlock: %s"
+
+#: gold-threads.cc:220
+#, c-format
+msgid "pthread_cond_init failed: %s"
+msgstr "помилка pthread_cond_init: %s"
+
+#: gold-threads.cc:227
+#, c-format
+msgid "pthread_cond_destroy failed: %s"
+msgstr "помилка pthread_cond_destroy: %s"
+
+#: gold-threads.cc:236
+#, c-format
+msgid "pthread_cond_wait failed: %s"
+msgstr "помилка pthread_cond_wait: %s"
+
+#: gold-threads.cc:244
+#, c-format
+msgid "pthread_cond_signal failed: %s"
+msgstr "помилка pthread_cond_signal: %s"
+
+#: gold-threads.cc:252
+#, c-format
+msgid "pthread_cond_broadcast failed: %s"
+msgstr "помилка pthread_cond_broadcast: %s"
+
+#: gold-threads.cc:403
+#, c-format
+msgid "pthread_once failed: %s"
+msgstr "помилка pthread_once: %s"
+
+#: gold.cc:101
+#, c-format
+msgid "%s: internal error in %s, at %s:%d\n"
+msgstr "%s: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° у %s, за адреÑою %s:%d\n"
+
+#: gold.cc:191
+msgid "no input files"
+msgstr "немає вхідних даних"
+
+#: gold.cc:221
+msgid "linking with --incremental-full"
+msgstr "ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° допомогою --incremental-full"
+
+#: gold.cc:223
+msgid "restart link with --incremental-full"
+msgstr "перезапуÑтити link з параметром --incremental-full"
+
+#: gold.cc:285
+msgid "cannot mix -r with --gc-sections or --icf"
+msgstr "не можна одночаÑно викориÑтовувати -r Ñ– --gc-sections або --icf"
+
+#: gold.cc:612
+#, c-format
+msgid "cannot mix -static with dynamic object %s"
+msgstr "не можна викориÑтовувати -static з динамічним об’єктом %s"
+
+#: gold.cc:616
+#, c-format
+msgid "cannot mix -r with dynamic object %s"
+msgstr "не можна викориÑтовувати -r з динамічним об’єктом %s"
+
+#: gold.cc:620
+#, c-format
+msgid "cannot use non-ELF output format with dynamic object %s"
+msgstr "не можна викориÑтовувати формат Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…, відмінний від ELF, з динамічним об’єктом %s"
+
+#: gold.cc:632
+#, c-format
+msgid "cannot mix split-stack '%s' and non-split-stack '%s' when using -r"
+msgstr "не можна одночаÑно викориÑтовувати розділений Ñтек «%s» Ñ– нерозділений Ñтек «%s» у разі викориÑÑ‚Ð°Ð½Ð½Ñ -r"
+
+#. FIXME: This needs to specify the location somehow.
+#: i386.cc:601 i386.cc:2655 sparc.cc:312 sparc.cc:3185 x86_64.cc:746
+#: x86_64.cc:3250
+msgid "missing expected TLS relocation"
+msgstr "не виÑтачає очікуваного переÑÑƒÐ²Ð°Ð½Ð½Ñ TLS"
+
+#: i386.cc:1699 sparc.cc:2229 tilegx.cc:3209 x86_64.cc:2279
+#, c-format
+msgid "%s: unsupported TLS reloc %u for IFUNC symbol"
+msgstr "%s: непідтримуване переÑÑƒÐ²Ð°Ð½Ð½Ñ TLS %u Ð´Ð»Ñ Ñимволу IFUNC"
+
+#: i386.cc:2809 i386.cc:3558 powerpc.cc:7521 sparc.cc:3583 tilegx.cc:4706
+#: x86_64.cc:3465 x86_64.cc:4205
+#, c-format
+msgid "unexpected reloc %u in object file"
+msgstr "неочікуване переÑÑƒÐ²Ð°Ð½Ð½Ñ %u у об’єктному файлі"
+
+#: i386.cc:3002
+msgid "both SUN and GNU model TLS relocations"
+msgstr "TLS-переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±Ð¾Ñ… моделей, SUN Ñ– GNU"
+
+#: i386.cc:3572
+#, c-format
+msgid "unsupported reloc %u in object file"
+msgstr "непідтримуване переÑÑƒÐ²Ð°Ð½Ð½Ñ %u у об’єктному файлі"
+
+#: i386.cc:3802 x86_64.cc:4459
+#, c-format
+msgid "failed to match split-stack sequence at section %u offset %0zx"
+msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ відповідник поÑлідовноÑÑ‚Ñ– поділу Ñтека у розділі %u, зÑув %0zx"
+
+#: icf.cc:768
+#, c-format
+msgid "%s: ICF Converged after %u iteration(s)"
+msgstr "%s: збіжніÑÑ‚ÑŒ ICF піÑÐ»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ %u ітерацій"
+
+#: icf.cc:771
+#, c-format
+msgid "%s: ICF stopped after %u iteration(s)"
+msgstr "%s: Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ ICF піÑÐ»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ %u ітерацій"
+
+#: icf.cc:785
+#, c-format
+msgid "Could not find symbol %s to unfold\n"
+msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñимвол %s Ð´Ð»Ñ Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ\n"
+
+#: incremental.cc:80
+msgid "** incremental_inputs"
+msgstr "** incremental_inputs"
+
+#: incremental.cc:145
+#, c-format
+msgid "the link might take longer: cannot perform incremental link: %s"
+msgstr "ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶Ðµ тривати довше: виконати оновлювальне ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ вдалоÑÑ: %s"
+
+#: incremental.cc:411
+msgid "no incremental data from previous build"
+msgstr "немає даних від попереднього Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð¹Ð¾Ð³Ð¾ оновленнÑ"
+
+#: incremental.cc:417
+msgid "different version of incremental build data"
+msgstr "інша верÑÑ–Ñ Ð´Ð°Ð½Ð¸Ñ… оновлюваного попереднього збираннÑ"
+
+#: incremental.cc:429
+msgid "command line changed"
+msgstr "змінено Ñ€Ñдок команди"
+
+#: incremental.cc:456
+#, c-format
+msgid "%s: script file changed"
+msgstr "%s: файл Ñкрипту змінено"
+
+#: incremental.cc:859
+#, c-format
+msgid "unsupported ELF machine number %d"
+msgstr "непідтримуваний номер архітектури ELF, %d"
+
+#: incremental.cc:867 object.cc:3063
+#, c-format
+msgid "%s: incompatible target"
+msgstr "%s: неÑуміÑне з програмою призначеннÑ"
+
+#: incremental.cc:889
+msgid "output is not an ELF file."
+msgstr "файл Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… не Ñ” файлом ELF."
+
+#: incremental.cc:912
+msgid "unsupported file: 32-bit, big-endian"
+msgstr "непідтримуваний файл: 32-бітовий, зворотний порÑдок байтів"
+
+#: incremental.cc:921
+msgid "unsupported file: 32-bit, little-endian"
+msgstr "непідтримуваний файл: 32-бітовий, прÑмий порÑдок байтів"
+
+#: incremental.cc:933
+msgid "unsupported file: 64-bit, big-endian"
+msgstr "непідтримуваний файл: 64-бітовий, зворотний порÑдок байтів"
+
+#: incremental.cc:942
+msgid "unsupported file: 64-bit, little-endian"
+msgstr "непідтримуваний файл: 64-бітовий, прÑмий порÑдок байтів"
+
+#: incremental.cc:2078
+msgid "COMDAT group has no signature"
+msgstr "група COMDAT не має підпиÑу"
+
+#: incremental.cc:2084
+#, c-format
+msgid "COMDAT group %s included twice in incremental link"
+msgstr "групу COMDAT %s двічі включено до нарощувального компонуваннÑ"
+
+#: int_encoding.cc:50 int_encoding.cc:83
+msgid "Unusually large LEB128 decoded, debug information may be corrupted"
+msgstr "Декодовано незвично великі дані LEB128, можливо, діагноÑтичні дані пошкоджено"
+
+#: layout.cc:225
+#, c-format
+msgid "%s: total free lists: %u\n"
+msgstr "%s: загалом вільних ÑпиÑків: %u\n"
+
+#: layout.cc:227
+#, c-format
+msgid "%s: total free list nodes: %u\n"
+msgstr "%s: загальна кількіÑÑ‚ÑŒ вільних вузлів ÑпиÑку: %u\n"
+
+#: layout.cc:229
+#, c-format
+msgid "%s: calls to Free_list::remove: %u\n"
+msgstr "%s: виклик Free_list::remove: %u\n"
+
+#: layout.cc:231 layout.cc:235
+#, c-format
+msgid "%s: nodes visited: %u\n"
+msgstr "%s: відвіданих вузлів: %u\n"
+
+#: layout.cc:233
+#, c-format
+msgid "%s: calls to Free_list::allocate: %u\n"
+msgstr "%s: виклик Free_list::allocate: %u\n"
+
+#: layout.cc:946
+#, c-format
+msgid "Unable to create output section '%s' because it is not allowed by the SECTIONS clause of the linker script"
+msgstr "Ðеможливо Ñтворити розділ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Â«%s», оÑкільки це заборонено директивою SECTIONS Ñкрипту компонуваннÑ"
+
+#: layout.cc:2015
+msgid "multiple '.interp' sections in input files may cause confusing PT_INTERP segment"
+msgstr "викориÑÑ‚Ð°Ð½Ð½Ñ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ¾Ñ… розділів «.interp» у файлах вхідних даних може призвеÑти до помилки у Ñегменті PT_INTERP"
+
+#: layout.cc:2079
+#, c-format
+msgid "%s: missing .note.GNU-stack section implies executable stack"
+msgstr "%s: пропущений розділ .note.GNU-stack неÑвним чином визначає виконуваніÑÑ‚ÑŒ Ñтека"
+
+#: layout.cc:2091
+#, c-format
+msgid "%s: requires executable stack"
+msgstr "%s: потребує виконуваного Ñтека"
+
+#: layout.cc:2590
+#, c-format
+msgid "unable to open --section-ordering-file file %s: %s"
+msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл --section-ordering-file %s: %s"
+
+#: layout.cc:3024
+#, c-format
+msgid "--build-id=uuid failed: could not open /dev/urandom: %s"
+msgstr "помилка викориÑÑ‚Ð°Ð½Ð½Ñ --build-id=uuid: не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ /dev/urandom: %s"
+
+#: layout.cc:3031
+#, c-format
+msgid "/dev/urandom: read failed: %s"
+msgstr "/dev/urandom: помилка читаннÑ: %s"
+
+#: layout.cc:3033
+#, c-format
+msgid "/dev/urandom: expected %zu bytes, got %zd bytes"
+msgstr "/dev/urandom: мало бути отримано %zu байтів, отримано %zd байтів"
+
+#: layout.cc:3055
+#, c-format
+msgid "--build-id argument '%s' not a valid hex number"
+msgstr "аргумент --build-id, «%s», не Ñ” коректним шіÑтнадцÑтковим чиÑлом"
+
+#: layout.cc:3061
+#, c-format
+msgid "unrecognized --build-id argument '%s'"
+msgstr "нерозпізнаний аргумент --build-id, «%s»"
+
+#: layout.cc:3626
+#, c-format
+msgid "load segment overlap [0x%llx -> 0x%llx] and [0x%llx -> 0x%llx]"
+msgstr "Ð¿ÐµÑ€ÐµÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñегментів Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ [0x%llx -> 0x%llx] Ñ– [0x%llx -> 0x%llx]"
+
+#: layout.cc:3785 output.cc:4557
+#, c-format
+msgid "out of patch space for section %s; relink with --incremental-full"
+msgstr "вихід за межі латки Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s; виконайте повторне ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° допомогою --incremental-full"
+
+#: layout.cc:3794 output.cc:4565
+#, c-format
+msgid "%s: section changed size; relink with --incremental-full"
+msgstr "%s: зміна розміру розділу; виконайте повторне ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð· параметром --incremental-full"
+
+#: layout.cc:4051
+msgid "out of patch space for symbol table; relink with --incremental-full"
+msgstr "вихід за межі латки Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñимволів; виконайте повторне ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° допомогою --incremental-full"
+
+#: layout.cc:4122
+msgid "out of patch space for section header table; relink with --incremental-full"
+msgstr "вихід за межі латки Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– заголовків; виконайте повторне ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° допомогою --incremental-full"
+
+#: layout.cc:4840
+msgid "read-only segment has dynamic relocations"
+msgstr "Ñегмент, призначений лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ, міÑтить динамічні переÑуваннÑ"
+
+#: layout.cc:4843
+msgid "shared library text segment is not shareable"
+msgstr "текÑтовий Ñегмент бібліотеки Ñпільного викориÑÑ‚Ð°Ð½Ð½Ñ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ до Ñпільного викориÑтаннÑ"
+
+#: mapfile.cc:70
+#, c-format
+msgid "cannot open map file %s: %s"
+msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл картки (map) %s: %s"
+
+#: mapfile.cc:84
+#, c-format
+msgid "cannot close map file: %s"
+msgstr "не вдалоÑÑ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ð¸ файл карти (map): %s"
+
+#: mapfile.cc:116
+#, c-format
+msgid ""
+"Archive member included because of file (symbol)\n"
+"\n"
+msgstr ""
+"Елемент архіву включено через файл (Ñимвол)\n"
+"\n"
+
+#: mapfile.cc:159
+#, c-format
+msgid ""
+"\n"
+"Allocating common symbols\n"
+msgstr ""
+"\n"
+"Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ñ… Ñимволів\n"
+
+#: mapfile.cc:161
+#, c-format
+msgid ""
+"Common symbol size file\n"
+"\n"
+msgstr ""
+"Загальний Ñимвол розмір файл\n"
+"\n"
+
+#: mapfile.cc:195
+#, c-format
+msgid ""
+"\n"
+"Memory map\n"
+"\n"
+msgstr ""
+"\n"
+"Карта пам’ÑÑ‚Ñ–\n"
+"\n"
+
+#: mapfile.cc:367
+#, c-format
+msgid ""
+"\n"
+"Discarded input sections\n"
+"\n"
+msgstr ""
+"\n"
+"Відкинуті розділи вхідних даних\n"
+"\n"
+
+#: merge.cc:493
+#, c-format
+msgid "%s: %s merged constants size: %lu; input: %zu; output: %zu\n"
+msgstr "%s: розмір %s з об’єднаннÑм Ñталих: %lu; вхідні дані: %zu; виведені дані: %zu\n"
+
+#: merge.cc:520
+msgid "mergeable string section length not multiple of character size"
+msgstr "довжина придатного до Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñ€Ñдків не Ñ” кратною до розміру Ñимволу"
+
+#: merge.cc:529
+#, c-format
+msgid "%s: last entry in mergeable string section '%s' not null terminated"
+msgstr "%s: оÑтанній Ð·Ð°Ð¿Ð¸Ñ Ñƒ придатному до Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ñ€Ñдків «%s» не завершуєтьÑÑ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ñимволом"
+
+#: merge.cc:604
+#, c-format
+msgid "%s: section %s contains incorrectly aligned strings; the alignment of those strings won't be preserved"
+msgstr "%s: у розділі %s міÑÑ‚ÑÑ‚ÑŒÑÑ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¾ вирівнÑні Ñ€Ñдки; Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ñ†Ð¸Ñ… Ñ€Ñдків збережено не буде"
+
+#: merge.cc:726
+#, c-format
+msgid "%s: %s input bytes: %zu\n"
+msgstr "%s: вхідні байти %s: %zu\n"
+
+#: merge.cc:728
+#, c-format
+msgid "%s: %s input strings: %zu\n"
+msgstr "%s: вхідні Ñ€Ñдки %s: %zu\n"
+
+#: merge.h:366
+msgid "** merge constants"
+msgstr "** Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð½Ñтант"
+
+#: merge.h:495
+msgid "** merge strings"
+msgstr "** Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ€Ñдків"
+
+#: nacl.cc:43 object.cc:174 object.cc:3111 output.cc:5185
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: object.cc:101
+msgid "missing SHT_SYMTAB_SHNDX section"
+msgstr "не виÑтачає розділу SHT_SYMTAB_SHNDX"
+
+#: object.cc:145
+#, c-format
+msgid "symbol %u out of range for SHT_SYMTAB_SHNDX section"
+msgstr "Ñимвол %u поза допуÑтимим Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ SHT_SYMTAB_SHNDX діапазоном"
+
+#: object.cc:152
+#, c-format
+msgid "extended index for symbol %u out of range: %u"
+msgstr "розширений Ñ–Ð½Ð´ÐµÐºÑ Ð´Ð»Ñ Ñимволу %u лежить поза межами допуÑтимого діапазону: %u"
+
+#: object.cc:207
+#, c-format
+msgid "section name section has wrong type: %u"
+msgstr "розділ назви розділів належить до помилкового типу: %u"
+
+#: object.cc:914
+#, c-format
+msgid "section group %u info %u out of range"
+msgstr "група розділів %u, відомоÑÑ‚Ñ– (info) %u поза межами діапазону допуÑтимих значень"
+
+#: object.cc:933
+#, c-format
+msgid "symbol %u name offset %u out of range"
+msgstr "Ñимвол %u, зÑув назви %u лежить поза межами допуÑтимого діапазону"
+
+#: object.cc:951
+#, c-format
+msgid "symbol %u invalid section index %u"
+msgstr "Ð´Ð»Ñ Ñимволу %u вказано некоректний Ñ–Ð½Ð´ÐµÐºÑ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, %u"
+
+#: object.cc:1003
+#, c-format
+msgid "section %u in section group %u out of range"
+msgstr "розділ %u у групі розділів %u лежить поза межами доÑтупного діапазону"
+
+#: object.cc:1011
+#, c-format
+msgid "invalid section group %u refers to earlier section %u"
+msgstr "некоректна група розділів %u поÑилаєтьÑÑ Ð½Ð° попередній розділ %u"
+
+#: object.cc:1380 reloc.cc:290 reloc.cc:939
+#, c-format
+msgid "relocation section %u has bad info %u"
+msgstr "розділ переÑувань %u міÑтить помилкові дані, %u"
+
+#: object.cc:1610
+#, c-format
+msgid "%s: removing unused section from '%s' in file '%s'"
+msgstr "%s: вилучаємо невикориÑтаний розділ з «%s» у файлі «%s»"
+
+#: object.cc:1636
+#, c-format
+msgid "%s: ICF folding section '%s' in file '%s'into '%s' in file '%s'"
+msgstr "%s: ICF-Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ «%s» у файлі «%s» до «%s» у файлі «%s»"
+
+#: object.cc:1927
+msgid "size of symbols is not multiple of symbol size"
+msgstr "розмір Ñимволів не Ñ” кратним до розміру одного Ñимволу"
+
+#: object.cc:2156
+#, c-format
+msgid "local symbol %u section name out of range: %u >= %u"
+msgstr "назва розділу локальних Ñимволів %u лежить поза межами діапазону: %u >= %u"
+
+#: object.cc:2246
+#, c-format
+msgid "unknown section index %u for local symbol %u"
+msgstr "невідомий Ñ–Ð½Ð´ÐµÐºÑ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %u Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñимволу %u"
+
+#: object.cc:2256
+#, c-format
+msgid "local symbol %u section index %u out of range"
+msgstr "Ñ–Ð½Ð´ÐµÐºÑ %u розділу локальних Ñимволів %u лежить поза межами діапазону"
+
+#: object.cc:2826 reloc.cc:870
+#, c-format
+msgid "could not decompress section %s"
+msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ñ‚Ð¸ розділ %s"
+
+#: object.cc:2942
+#, c-format
+msgid "%s is not supported but is required for %s in %s"
+msgstr "%s не підтримуєтьÑÑ Ð°Ð»Ðµ потрібен Ð´Ð»Ñ %s у %s"
+
+#: object.cc:3019
+msgid "function "
+msgstr "Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ "
+
+#: object.cc:3053
+#, c-format
+msgid "%s: unsupported ELF machine number %d"
+msgstr "%s: непідтримуваний номер архітектури ELF, %d"
+
+#: object.cc:3127 plugin.cc:1822
+#, c-format
+msgid "%s: not configured to support 32-bit big-endian object"
+msgstr "%s: не налаштовано на підтримку 32-бітових об’єктів зі зворотним порÑдком байтів"
+
+#: object.cc:3143 plugin.cc:1831
+#, c-format
+msgid "%s: not configured to support 32-bit little-endian object"
+msgstr "%s: не налаштовано на підтримку 32-бітових об’єктів з прÑмим порÑдком байтів"
+
+#: object.cc:3162 plugin.cc:1843
+#, c-format
+msgid "%s: not configured to support 64-bit big-endian object"
+msgstr "%s: не налаштовано на підтримку 64-бітових об’єктів зі зворотним порÑдком байтів"
+
+#: object.cc:3178 plugin.cc:1852
+#, c-format
+msgid "%s: not configured to support 64-bit little-endian object"
+msgstr "%s: не налаштовано на підтримку 64-бітових об’єктів з прÑмим порÑдком байтів"
+
+#: options.cc:157
+#, c-format
+msgid ""
+"Usage: %s [options] file...\n"
+"Options:\n"
+msgstr ""
+"КориÑтуваннÑ: %s [параметри] файл...\n"
+"Параметри:\n"
+
+#. config.guess and libtool.m4 look in ld --help output for the
+#. string "supported targets".
+#: options.cc:165
+#, c-format
+msgid "%s: supported targets:"
+msgstr "%s: підтримувані цілі:"
+
+#: options.cc:174
+#, c-format
+msgid "%s: supported emulations:"
+msgstr "%s: підтримувані режими емулÑції:"
+
+#: options.cc:186
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr "Звіти про помилки надÑилайте на %s\n"
+
+#: options.cc:203 options.cc:213 options.cc:223
+#, c-format
+msgid "%s: invalid option value (expected an integer): %s"
+msgstr "%s: некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° (мало бути вказано ціле чиÑло): %s"
+
+#: options.cc:233 options.cc:244
+#, c-format
+msgid "%s: invalid option value (expected a floating point number): %s"
+msgstr "%s: некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° (мало бути вказано чиÑло з рухомою крапкою): %s"
+
+#: options.cc:253
+#, c-format
+msgid "%s: must take a non-empty argument"
+msgstr "%s: має приймати непорожній аргумент"
+
+#: options.cc:294
+#, c-format
+msgid "%s: must take one of the following arguments: %s"
+msgstr "%s: має приймати один з таких аргументів: %s"
+
+#: options.cc:325
+#, c-format
+msgid " Supported targets:\n"
+msgstr " Підтримувані платформи призначеннÑ:\n"
+
+#: options.cc:333
+#, c-format
+msgid " Supported emulations:\n"
+msgstr " Підтримувані режими емулÑції:\n"
+
+#: options.cc:476
+msgid "invalid argument to --section-start; must be SECTION=ADDRESS"
+msgstr "некоректний аргумент --section-start; формат аргументу має бути таким: РОЗДІЛ=ÐДРЕСÐ"
+
+#: options.cc:489
+msgid "--section-start address missing"
+msgstr "пропущено адреÑу --section-start"
+
+#: options.cc:498
+#, c-format
+msgid "--section-start argument %s is not a valid hex number"
+msgstr "аргумент %s --section-start не Ñ” коректним шіÑтнадцÑтковим чиÑлом"
+
+#: options.cc:535
+#, c-format
+msgid "unable to parse script file %s"
+msgstr "не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ файл Ñкрипту %s"
+
+#: options.cc:543
+#, c-format
+msgid "unable to parse version script file %s"
+msgstr "не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ файл Ñкрипту верÑій %s"
+
+#: options.cc:551
+#, c-format
+msgid "unable to parse dynamic-list script file %s"
+msgstr "не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ файл Ñкрипту динамічних ÑпиÑків %s"
+
+#: options.cc:663
+#, c-format
+msgid "format '%s' not supported; treating as elf (supported formats: elf, binary)"
+msgstr "підтримки формату «%s» не передбачено; вважатиметьÑÑ, що форматом Ñ” elf (підтримувані формати: elf, binary)"
+
+#: options.cc:705
+#, c-format
+msgid "%s: use the --help option for usage information\n"
+msgstr "%s: ÑкориÑтайтеÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ --help, щоб отримати підказку щодо кориÑтуваннÑ\n"
+
+#: options.cc:714
+#, c-format
+msgid "%s: %s: %s\n"
+msgstr "%s: %s: %s\n"
+
+#: options.cc:818
+msgid "unexpected argument"
+msgstr "неÑподіваний аргумент"
+
+#: options.cc:831 options.cc:892
+msgid "missing argument"
+msgstr "не виÑтачає аргументу"
+
+#: options.cc:903
+msgid "unknown -z option"
+msgstr "невідомий параметр -z"
+
+#: options.cc:1115
+#, c-format
+msgid "ignoring --threads: %s was compiled without thread support"
+msgstr "ігноруємо --threads: %s було зібрано без підтримки потоків виконаннÑ"
+
+#: options.cc:1122
+#, c-format
+msgid "ignoring --thread-count: %s was compiled without thread support"
+msgstr "ігноруємо --thread-count: %s було зібрано без підтримки потоків виконаннÑ"
+
+#: options.cc:1176
+#, c-format
+msgid "unable to open -retain-symbols-file file %s: %s"
+msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл -retain-symbols-file %s: %s"
+
+#: options.cc:1213
+msgid "-shared and -static are incompatible"
+msgstr "-shared Ñ– -static не можна викориÑтовувати разом"
+
+#: options.cc:1215
+msgid "-shared and -pie are incompatible"
+msgstr "-shared Ñ– -pie не можна викориÑтовувати разом"
+
+#: options.cc:1217
+msgid "-pie and -static are incompatible"
+msgstr "параметри -pie Ñ– -static Ñ” неÑуміÑними"
+
+#: options.cc:1220
+msgid "-shared and -r are incompatible"
+msgstr "параметри -shared Ñ– -r Ñ” неÑуміÑними"
+
+#: options.cc:1222
+msgid "-pie and -r are incompatible"
+msgstr "-pie Ñ– -r неÑуміÑні"
+
+#: options.cc:1227
+msgid "-F/--filter may not used without -shared"
+msgstr "-F/--filter не можна викориÑтовувати без параметра -shared"
+
+#: options.cc:1229
+msgid "-f/--auxiliary may not be used without -shared"
+msgstr "-f/--auxiliary не можна викориÑтовувати без параметра -shared"
+
+#: options.cc:1234
+msgid "-retain-symbols-file does not yet work with -r"
+msgstr "-retain-symbols-file у поточній верÑÑ–Ñ— не Ñ” ÑуміÑним з -r"
+
+#: options.cc:1240
+msgid "binary output format not compatible with -shared or -pie or -r"
+msgstr "бінарний формат Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ” неÑуміÑним з -shared, -pie або -r"
+
+#: options.cc:1246
+#, c-format
+msgid "--hash-bucket-empty-fraction value %g out of range [0.0, 1.0)"
+msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ --hash-bucket-empty-fraction, %g, лежить поза межами діапазону [0.0, 1.0)"
+
+#: options.cc:1251
+msgid "Options --incremental-changed, --incremental-unchanged, --incremental-unknown require the use of --incremental"
+msgstr "Щоб ÑкориÑтатиÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸ --incremental-changed, --incremental-unchanged, --incremental-unknown, Ñлід викориÑтати параметр --incremental"
+
+#: options.cc:1261
+msgid "incremental linking is not compatible with -r"
+msgstr "нарощувальне ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð½ÐµÑуміÑне з параметром -r"
+
+#: options.cc:1263
+msgid "incremental linking is not compatible with --emit-relocs"
+msgstr "нарощувальне ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð½ÐµÑуміÑне з параметром --emit-relocs"
+
+#: options.cc:1266
+msgid "incremental linking is not compatible with --plugin"
+msgstr "нарощувальне ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð½ÐµÑуміÑне з параметром --plugin"
+
+#: options.cc:1269
+msgid "ignoring --gc-sections for an incremental link"
+msgstr "ігноруємо --gc-sections, оÑкільки ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ” нарощувальним"
+
+#: options.cc:1274
+msgid "ignoring --icf for an incremental link"
+msgstr "ігноруємо --icf, оÑкільки ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ” нарощувальним"
+
+#: options.cc:1279
+msgid "ignoring --compress-debug-sections for an incremental link"
+msgstr "ігноруємо --compress-debug-sections, оÑкільки ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ” нарощувальним"
+
+#: options.cc:1359
+msgid "May not nest groups"
+msgstr "Ðе можна вкладати групи одна в одну"
+
+#: options.cc:1361
+msgid "may not nest groups in libraries"
+msgstr "не можна викориÑтовувати вкладені групи у бібліотеках"
+
+#: options.cc:1373
+msgid "Group end without group start"
+msgstr "Ð—Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¸ без початку групи"
+
+#: options.cc:1383
+msgid "may not nest libraries"
+msgstr "не можна вкладати бібліотеки"
+
+#: options.cc:1385
+msgid "may not nest libraries in groups"
+msgstr "не можна вкладати бібліотеки до груп"
+
+#: options.cc:1397
+msgid "lib end without lib start"
+msgstr "Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ без початку бібліотеки"
+
+#. I guess it's neither a long option nor a short option.
+#: options.cc:1462
+msgid "unknown option"
+msgstr "невідомий параметр"
+
+#: options.cc:1489
+#, c-format
+msgid "%s: missing group end\n"
+msgstr "%s: не виÑтачає Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¸\n"
+
+#: options.h:624
+msgid "Report usage information"
+msgstr "вивеÑти дані щодо кориÑтуваннÑ"
+
+#: options.h:626
+msgid "Report version information"
+msgstr "вивеÑти дані щодо верÑÑ–Ñ—"
+
+#: options.h:628
+msgid "Report version and target information"
+msgstr "вивеÑти дані щодо верÑÑ–Ñ— Ñ– платформ призначеннÑ"
+
+#: options.h:637 options.h:712
+msgid "Not supported"
+msgstr "Ðе підтримуєтьÑÑ"
+
+#: options.h:638 options.h:713
+msgid "Do not copy DT_NEEDED tags from shared libraries"
+msgstr "не копіювати теґи DT_NEEDED зі Ñпільних бібліотек"
+
+#: options.h:641 options.h:1289
+msgid "Allow multiple definitions of symbols"
+msgstr "Дозволити декілька визначень Ñимволу"
+
+#: options.h:642
+msgid "Do not allow multiple definitions"
+msgstr "Ðе дозволÑти декілька визначень Ñимволу"
+
+#: options.h:645
+msgid "Allow unresolved references in shared libraries"
+msgstr "дозволÑти нерозв’Ñзні поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñƒ бібліотеках Ñпільного викориÑтаннÑ"
+
+#: options.h:646
+msgid "Do not allow unresolved references in shared libraries"
+msgstr "заборонÑти нерозв’Ñзні поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñƒ бібліотеках Ñпільного викориÑтаннÑ"
+
+#: options.h:649
+msgid "Only set DT_NEEDED for shared libraries if used"
+msgstr "вÑтановлювати DT_NEEDED Ð´Ð»Ñ Ñпільних бібліотек лише у разі викориÑтаннÑ"
+
+#: options.h:650
+msgid "Always DT_NEEDED for shared libraries"
+msgstr "завжди викориÑтовувати DT_NEEDED Ð´Ð»Ñ Ñпільних бібліотек"
+
+#: options.h:653 options.h:831 options.h:1197 options.h:1207
+msgid "Ignored"
+msgstr "Проігнороване"
+
+#: options.h:653
+msgid "[ignored]"
+msgstr "[проігноровано]"
+
+#: options.h:661
+msgid "Set input format"
+msgstr "вÑтановити формат Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…"
+
+#: options.h:664
+msgid "-l searches for shared libraries"
+msgstr "-l шукає бібліотеки Ñпільного викориÑтаннÑ"
+
+#: options.h:666
+msgid "-l does not search for shared libraries"
+msgstr "-l не виконує пошук бібліотек Ñпільного викориÑтаннÑ"
+
+#: options.h:669
+msgid "alias for -Bdynamic"
+msgstr "альтернативний варіант -Bdynamic"
+
+#: options.h:671
+msgid "alias for -Bstatic"
+msgstr "альтернативний варіант -Bstatic"
+
+#: options.h:674
+msgid "Use group name lookup rules for shared library"
+msgstr "ВикориÑтовувати правила пошуку назв груп Ð´Ð»Ñ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñпільного викориÑтаннÑ"
+
+#: options.h:677
+msgid "Bind defined symbols locally"
+msgstr "прив’Ñзувати визначені Ñимволи локально"
+
+#: options.h:680
+msgid "Bind defined function symbols locally"
+msgstr "прив’Ñзувати визначені Ñимволи функцій локально"
+
+#: options.h:683
+msgid "Generate build ID note"
+msgstr "Ñтворити Ð·Ð°Ð¿Ð¸Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ð° збираннÑ"
+
+#: options.h:684 options.h:740
+msgid "[=STYLE]"
+msgstr "[=СТИЛЬ]"
+
+#: options.h:688
+msgid "Chunk size for '--build-id=tree'"
+msgstr "Розмір фрагмента Ð´Ð»Ñ Â«--build-id=tree»"
+
+#: options.h:688 options.h:693 options.h:1086 options.h:1100 options.h:1268
+#: options.h:1287
+msgid "SIZE"
+msgstr "РОЗМІР"
+
+#: options.h:692
+msgid "Minimum output file size for '--build-id=tree' to work differently than '--build-id=sha1'"
+msgstr "Мінімальний розмір файла вихідних даних Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, щоб «--build-id=tree» працювало інакше, ніж «--build-id=sha1»"
+
+#: options.h:696
+msgid "Check segment addresses for overlaps (default)"
+msgstr "перевірÑти адреÑи Ñегментів на Ð¿ÐµÑ€ÐµÐºÑ€Ð¸Ñ‚Ñ‚Ñ (типова поведінка)"
+
+#: options.h:697
+msgid "Do not check segment addresses for overlaps"
+msgstr "не перевірÑти адреÑи Ñегментів на перекриттÑ"
+
+#: options.h:701 options.h:706
+msgid "Compress .debug_* sections in the output file"
+msgstr "ÑтиÑнути розділи .debug_* у файлі виведених даних"
+
+#: options.h:707
+msgid "[none]"
+msgstr "[немає]"
+
+#: options.h:716
+msgid "Output cross reference table"
+msgstr "вивеÑти таблицю перехреÑних поÑилань"
+
+#: options.h:717
+msgid "Do not output cross reference table"
+msgstr "Ðе виводити таблицю перехреÑних поÑилань"
+
+#: options.h:720
+msgid "Use DT_INIT_ARRAY for all constructors (default)"
+msgstr "ВикориÑтовувати DT_INIT_ARRAY Ð´Ð»Ñ ÑƒÑÑ–Ñ… конÑтрукторів (типово)"
+
+#: options.h:721
+msgid "Handle constructors as directed by compiler"
+msgstr "ОброблÑти конÑтруктори так, Ñк вказано компілÑтором"
+
+#: options.h:724
+msgid "Define common symbols"
+msgstr "Визначити загальні Ñимволи"
+
+#: options.h:725
+msgid "Do not define common symbols"
+msgstr "Ðе визначати загальні Ñимволи"
+
+#: options.h:727 options.h:729
+msgid "Alias for -d"
+msgstr "замінник -d"
+
+#: options.h:732
+msgid "Turn on debugging"
+msgstr "Увімкнути режим діагноÑтики"
+
+#: options.h:733
+msgid "[all,files,script,task][,...]"
+msgstr "[all,files,script,task][,...]"
+
+#: options.h:736
+msgid "Define a symbol"
+msgstr "визначити Ñимвол"
+
+#: options.h:736
+msgid "SYMBOL=EXPRESSION"
+msgstr "СИМВОЛ=ВИРÐЗ"
+
+#: options.h:739
+msgid "Demangle C++ symbols in log messages"
+msgstr "розшифровувати Ñимволи C++ у повідомленнÑÑ… журналу"
+
+#: options.h:743
+msgid "Do not demangle C++ symbols in log messages"
+msgstr "не розшифровувати Ñимволи C++ у повідомленнÑÑ… журналу"
+
+#: options.h:747
+msgid "Look for violations of the C++ One Definition Rule"
+msgstr "Шукати Ð¿Ð¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð° одного Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ C++"
+
+#: options.h:748
+msgid "Do not look for violations of the C++ One Definition Rule"
+msgstr "Ðе шукати Ð¿Ð¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð° одного Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ C++"
+
+#: options.h:751
+msgid "Delete all local symbols"
+msgstr "Вилучити уÑÑ– локальні Ñимволи"
+
+#: options.h:753
+msgid "Delete all temporary local symbols"
+msgstr "вилучати вÑÑ– тимчаÑові локальні Ñимволи"
+
+#: options.h:756
+msgid "Add data symbols to dynamic symbols"
+msgstr "додавати Ñимволи даних до динамічних Ñимволів"
+
+#: options.h:759
+msgid "Add C++ operator new/delete to dynamic symbols"
+msgstr "додавати оператор C++ new/delete до динамічних Ñимволів"
+
+#: options.h:762
+msgid "Add C++ typeinfo to dynamic symbols"
+msgstr "додавати дані щодо типів C++ до динамічних Ñимволів"
+
+#: options.h:765
+msgid "Read a list of dynamic symbols"
+msgstr "прочитати ÑпиÑок динамічних Ñимволів"
+
+#: options.h:765 options.h:873 options.h:896 options.h:964 options.h:1033
+#: options.h:1142 options.h:1190
+msgid "FILE"
+msgstr "ФÐЙЛ"
+
+#: options.h:768
+msgid "Set program start address"
+msgstr "вÑтановити початкову адреÑу програми"
+
+#: options.h:768 options.h:1157 options.h:1159 options.h:1161 options.h:1164
+#: options.h:1166
+msgid "ADDRESS"
+msgstr "ÐДРЕСÐ"
+
+#: options.h:771
+msgid "Exclude libraries from automatic export"
+msgstr "виключити бібліотеки з автоматичного екÑпортуваннÑ"
+
+#: options.h:775
+msgid "Export all dynamic symbols"
+msgstr "ЕкÑпортувати вÑÑ– динамічні Ñимволи"
+
+#: options.h:776
+msgid "Do not export all dynamic symbols (default)"
+msgstr "не екÑпортувати вÑÑ– динамічні Ñимволи (типова поведінка)"
+
+#: options.h:779
+msgid "Export SYMBOL to dynamic symbol table"
+msgstr "ЕкÑпортувати СИМВОЛ до динамічної таблиці Ñимволів"
+
+#: options.h:779 options.h:807 options.h:893 options.h:1122 options.h:1177
+#: options.h:1234 options.h:1237
+msgid "SYMBOL"
+msgstr "СИМВОЛ"
+
+#: options.h:782
+msgid "Link big-endian objects."
+msgstr "Компонувати об’єкти з прÑмим порÑдком байтів."
+
+#: options.h:785
+msgid "Link little-endian objects."
+msgstr "Компонувати об’єкти зі зворотним порÑдком байтів."
+
+#: options.h:788
+msgid "Create exception frame header"
+msgstr "Ñтворити заголовок блоку виключень"
+
+#: options.h:791
+msgid "(ARM only) Do not warn about objects with incompatible enum sizes"
+msgstr "(лише ARM) Ðе попереджати про об’єкти з неÑуміÑними з enum розмірами"
+
+#: options.h:795
+msgid "Auxiliary filter for shared object symbol table"
+msgstr "допоміжне Ñ„Ñ–Ð»ÑŒÑ‚Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñимволів за об’єктом Ñпільного викориÑтаннÑ"
+
+#: options.h:796 options.h:800
+msgid "SHLIB"
+msgstr "СПБІБЛ"
+
+#: options.h:799
+msgid "Filter for shared object symbol table"
+msgstr "Ñ„Ñ–Ð»ÑŒÑ‚Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñимволів за об’єктом Ñпільного викориÑтаннÑ"
+
+#: options.h:803
+msgid "Treat warnings as errors"
+msgstr "вважати Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°Ð¼Ð¸"
+
+#: options.h:804
+msgid "Do not treat warnings as errors"
+msgstr "не вважати Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°Ð¼Ð¸"
+
+#: options.h:807
+msgid "Call SYMBOL at unload-time"
+msgstr "викликати СИМВОЛ під Ñ‡Ð°Ñ Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ"
+
+#: options.h:810
+msgid "(ARM only) Fix binaries for Cortex-A8 erratum."
+msgstr "(лише ARM) ВиправлÑти у виконуваних файлах помилки Cortex-A8."
+
+#: options.h:811
+msgid "(ARM only) Do not fix binaries for Cortex-A8 erratum."
+msgstr "(лише ARM) Ðе виправлÑти у виконуваних файлах помилки Cortex-A8."
+
+#: options.h:814
+msgid "(ARM only) Fix binaries for ARM1176 erratum."
+msgstr "(лише ARM) ВиправлÑти у виконуваних файлах помилки ARM1176."
+
+#: options.h:815
+msgid "(ARM only) Do not fix binaries for ARM1176 erratum."
+msgstr "(лише ARM) Ðе виправлÑти у виконуваних файлах помилки ARM1176."
+
+#: options.h:818
+msgid "(ARM only) Merge exidx entries in debuginfo."
+msgstr "(лише ARM) Об’єднувати запиÑи exidx у debuginfo."
+
+#: options.h:819
+msgid "(ARM only) Do not merge exidx entries in debuginfo."
+msgstr "(лише ARM) Ðе об’єднувати запиÑи exidx у debuginfo."
+
+#: options.h:822
+msgid "(ARM only) Rewrite BX rn as MOV pc, rn for ARMv4"
+msgstr "(лише ARM) ПерепиÑувати BX rn Ñк MOV pc, rn Ð´Ð»Ñ ARMv4"
+
+#: options.h:826
+msgid "(ARM only) Rewrite BX rn branch to ARMv4 interworking veneer"
+msgstr "(лише ARM) ПерезапиÑувати гілку rn BX на обгортку взаємодії ARMv4"
+
+#: options.h:834
+msgid "Generate .gdb_index section"
+msgstr "Створити розділ .gdb_index"
+
+#: options.h:835
+msgid "Do not generate .gdb_index section"
+msgstr "Ðе Ñтворювати розділ .gdb_index"
+
+#: options.h:838
+msgid "Enable STB_GNU_UNIQUE symbol binding (default)"
+msgstr "Увімкнути прив’Ñзку Ñимволів STB_GNU_UNIQUE (типово)"
+
+#: options.h:839
+msgid "Disable STB_GNU_UNIQUE symbol binding"
+msgstr "Вимкнути прив’Ñзку Ñимволів STB_GNU_UNIQUE"
+
+#: options.h:842
+msgid "Set shared library name"
+msgstr "вÑтановити назву бібліотеки Ñпільного викориÑтаннÑ"
+
+#: options.h:842 options.h:1016 options.h:1050
+msgid "FILENAME"
+msgstr "ÐÐЗВРФÐЙЛÐ"
+
+#: options.h:845
+msgid "Min fraction of empty buckets in dynamic hash"
+msgstr "мінімальна чаÑтка порожніх блоків у динамічному хеші"
+
+#: options.h:846
+msgid "FRACTION"
+msgstr "ЧÐСТКÐ"
+
+#: options.h:849
+msgid "Dynamic hash style"
+msgstr "динамічний Ñтиль хешуваннÑ"
+
+#: options.h:849
+msgid "[sysv,gnu,both]"
+msgstr "[sysv,gnu,both]"
+
+#: options.h:853
+msgid "Set dynamic linker path"
+msgstr "вÑтановити шлÑÑ… до динамічного компонувальника"
+
+#: options.h:853
+msgid "PROGRAM"
+msgstr "ПРОГРÐÐœÐ"
+
+#: options.h:856
+msgid "Do an incremental link if possible; otherwise, do a full link and prepare output for incremental linking"
+msgstr "Виконати нарощувальне компонуваннÑ, Ñкщо це можливо. Якщо неможливо, виконати повне ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ– приготувати виведені дані до нарощувального компонуваннÑ."
+
+#: options.h:861
+msgid "Do a full link (default)"
+msgstr "Виконати повне ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ (типово)"
+
+#: options.h:864
+msgid "Do a full link and prepare output for incremental linking"
+msgstr "Виконати повне ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ– приготувати виведені дані до нарощувального компонуваннÑ."
+
+#: options.h:868
+msgid "Do an incremental link; exit if not possible"
+msgstr "Виконати нарощувальне компонуваннÑ; вийти, Ñкщо це неможливо"
+
+#: options.h:871
+msgid "Set base file for incremental linking (default is output file)"
+msgstr "Ð’Ñтановити базовий файл Ð´Ð»Ñ Ð½Ð°Ñ€Ð¾Ñ‰ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ (типовим файлом Ñ” файл виведеннÑ)"
+
+#: options.h:876
+msgid "Assume files changed"
+msgstr "припуÑкати, що файли змінилиÑÑ"
+
+#: options.h:879
+msgid "Assume files didn't change"
+msgstr "припуÑкати, що файли не змінилиÑÑ"
+
+#: options.h:882
+msgid "Use timestamps to check files (default)"
+msgstr "викориÑтовувати чаÑові позначки Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ файлів (типова поведінка)"
+
+#: options.h:885
+msgid "Assume startup files unchanged (files preceding this option)"
+msgstr "ПрипуÑкати, що початкові файли Ñ” незмінними (файли, що передують цьому параметру)"
+
+#: options.h:889
+msgid "Amount of extra space to allocate for patches"
+msgstr "ОбÑÑг додаткової пам’ÑÑ‚Ñ–, Ñкий Ñлід зарезервувати Ð´Ð»Ñ Ð»Ð°Ñ‚Ð¾Ðº"
+
+#: options.h:890
+msgid "PERCENT"
+msgstr "ВІДСОТОК"
+
+#: options.h:893
+msgid "Call SYMBOL at load-time"
+msgstr "Викликати СИМВОЛ під Ñ‡Ð°Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ"
+
+#: options.h:896
+msgid "Read only symbol values from FILE"
+msgstr "читати лише Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñимволів з ФÐЙЛÐ"
+
+#: options.h:900
+msgid "Map whole files to memory (default on 64-bit hosts)"
+msgstr "Копіювати уÑÑ– файли до пам’ÑÑ‚Ñ– (типово на 64-бітових вузлах)"
+
+#: options.h:901
+msgid "Map relevant file parts to memory (default on 32-bit hosts)"
+msgstr "Копіювати відповідні чаÑтини файлів до пам’ÑÑ‚Ñ– (типово на 32-бітових вузлах)"
+
+#: options.h:904
+msgid "Keep files mapped across passes (default)"
+msgstr "Підтримувати прив’Ñзку файлів між проходами (типово)"
+
+#: options.h:905
+msgid "Release mapped files after each pass"
+msgstr "Прибирати прив’Ñзку файлів піÑÐ»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ проходу"
+
+#: options.h:908
+msgid "Generate unwind information for PLT (default)"
+msgstr "Створити дані Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ð´Ð»Ñ PLT (типово)"
+
+#: options.h:909
+msgid "Do not generate unwind information for PLT"
+msgstr "Ðе Ñтворювати даних Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ð´Ð»Ñ PLT"
+
+#: options.h:912
+msgid "Search for library LIBNAME"
+msgstr "шукати бібліотеку ÐÐЗВÐ_БІБЛ"
+
+#: options.h:912
+msgid "LIBNAME"
+msgstr "ÐÐЗВÐ_БІБЛ"
+
+#: options.h:915
+msgid "Add directory to search path"
+msgstr "додати каталог до шлÑху пошуку"
+
+#: options.h:915 options.h:1039 options.h:1042 options.h:1046 options.h:1136
+msgid "DIR"
+msgstr "КÐТÐЛОГ"
+
+#: options.h:918
+msgid "Enable text section reordering for GCC section names (default)"
+msgstr "Уможливити перевпорÑÐ´ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÑтових розділів Ð´Ð»Ñ Ð½Ð°Ð·Ð² розділів GCC (типово)"
+
+#: options.h:920
+msgid "Disable text section reordering for GCC section names"
+msgstr "Заборонити перевпорÑÐ´ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÑтових розділів Ð´Ð»Ñ Ð½Ð°Ð·Ð² розділів GCC"
+
+#: options.h:923
+msgid "Only search directories specified on the command line."
+msgstr "Шукати лише у каталогах, вказаних у Ñ€Ñдку команди."
+
+#: options.h:927
+msgid "Put read-only non-executable sections in their own segment"
+msgstr "Розташувати придатні лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð½ÐµÐ²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ñ– розділи у влаÑному Ñегменті"
+
+#: options.h:931
+msgid "Set offset between executable and read-only segments"
+msgstr "Ð’Ñтановити відÑтуп між виконуваними Ñ– придатними лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñегментами"
+
+#: options.h:932
+msgid "OFFSET"
+msgstr "ЗСУВ"
+
+#: options.h:935
+msgid "Set GNU linker emulation; obsolete"
+msgstr "Ð’Ñтановити режим емулÑції компонувальника GNU; заÑтаріле"
+
+#: options.h:935
+msgid "EMULATION"
+msgstr "ЕМУЛЯЦІЯ"
+
+#: options.h:938
+msgid "Map the output file for writing (default)."
+msgstr "Відобразити файл вихідних даних Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу (типово)."
+
+#: options.h:939
+msgid "Do not map the output file for writing."
+msgstr "Ðе відображати файл вихідних даних Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу."
+
+#: options.h:942
+msgid "Write map file on standard output"
+msgstr "запиÑати файл карти до Ñтандартного виведеннÑ"
+
+#: options.h:943
+msgid "Write map file"
+msgstr "запиÑати файл карти (map)"
+
+#: options.h:944
+msgid "MAPFILENAME"
+msgstr "ÐÐЗВÐФÐЙЛÐКÐРТИ"
+
+#: options.h:947
+msgid "Do not page align data"
+msgstr "не ділити дані Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ñторінки"
+
+#: options.h:949
+msgid "Do not page align data, do not make text readonly"
+msgstr "не ділити дані Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ñторінки, не робити текÑÑ‚ придатним лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ"
+
+#: options.h:950
+msgid "Page align data, make text readonly"
+msgstr "поділити дані Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ñторінки, зробити текÑÑ‚ придатним лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ"
+
+#: options.h:953
+msgid "Enable use of DT_RUNPATH and DT_FLAGS"
+msgstr "увімкнути викориÑÑ‚Ð°Ð½Ð½Ñ DT_RUNPATH Ñ– DT_FLAGS"
+
+#: options.h:954
+msgid "Disable use of DT_RUNPATH and DT_FLAGS"
+msgstr "вимкнути викориÑÑ‚Ð°Ð½Ð½Ñ DT_RUNPATH Ñ– DT_FLAGS"
+
+#: options.h:957
+msgid "Create an output file even if errors occur"
+msgstr "Ñтворити файл виведених даних, навіть Ñкщо трапилиÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸"
+
+#: options.h:960 options.h:1270
+msgid "Report undefined symbols (even with --shared)"
+msgstr "повідомлÑти про невизначені Ñимволи (навіть з --shared)"
+
+#: options.h:964
+msgid "Set output file name"
+msgstr "вÑтановити назву файла вихідних даних"
+
+#: options.h:967
+msgid "Optimize output file size"
+msgstr "оптимізувати розмір файла виведених даних"
+
+#: options.h:967
+msgid "LEVEL"
+msgstr "РІВЕÐЬ"
+
+#: options.h:970
+msgid "Set output format"
+msgstr "вÑтановити формат Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…"
+
+#: options.h:970
+msgid "[binary]"
+msgstr "[двійковий]"
+
+#: options.h:973 options.h:982
+msgid "(ARM only) Ignore for backward compatibility"
+msgstr "(лише ARM) Ігнорувати Ð´Ð»Ñ Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¾Ñ— ÑуміÑноÑÑ‚Ñ–"
+
+#: options.h:976 options.h:978
+msgid "Create a position independent executable"
+msgstr "Ñтворити виконуваний файл з незалежним позиціюваннÑм"
+
+#: options.h:985
+msgid "(PowerPC64 only) Align PLT call stubs to fit cache lines"
+msgstr "(лише PowerPC64) ВирівнÑти фіктивні виклики PLT за Ñ€Ñдками кешу"
+
+#: options.h:986
+msgid "[=P2ALIGN]"
+msgstr "[=P2ALIGN]"
+
+#: options.h:989
+msgid "(PowerPC64 only) PLT call stubs should load r11"
+msgstr "(лише PowerPC64) Фіктивні виклики PLT мають завантажувати r11"
+
+#: options.h:990
+msgid "(PowerPC64 only) PLT call stubs should not load r11"
+msgstr "(лише PowerPC64) Фіктивні виклики PLT не повинні завантажувати r11"
+
+#: options.h:993
+msgid "(PowerPC64 only) PLT call stubs with load-load barrier"
+msgstr "(лише PowerPC64) Фіктивні виклики PLT бар’єром завантаженнÑ-завантаженнÑ"
+
+#: options.h:994
+msgid "(PowerPC64 only) PLT call stubs without barrier"
+msgstr "(лише PowerPC64) Фіктивні виклики PLT без бар’єра"
+
+#: options.h:998
+msgid "Load a plugin library"
+msgstr "завантажити бібліотеку додатків"
+
+#: options.h:998
+msgid "PLUGIN"
+msgstr "ДОДÐТОК"
+
+#: options.h:1000
+msgid "Pass an option to the plugin"
+msgstr "передати додатку параметр"
+
+#: options.h:1000
+msgid "OPTION"
+msgstr "ПÐРÐМЕТР"
+
+#: options.h:1004
+msgid "Use posix_fallocate to reserve space in the output file (default)."
+msgstr "ВикориÑтовувати posix_fallocate Ð´Ð»Ñ Ñ€ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ñ–ÑÑ†Ñ Ñƒ вихідному файлі (типово)."
+
+#: options.h:1006
+msgid "Use fallocate or ftruncate to reserve space."
+msgstr "ВикориÑтовувати Ð´Ð»Ñ Ñ€ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ñ–ÑÑ†Ñ fallocate або ftruncate."
+
+#: options.h:1009
+msgid "Preread archive symbols when multi-threaded"
+msgstr "попередньо прочитати Ñимволи архіву у режимі з багатьма потоками"
+
+#: options.h:1012
+msgid "Print default output format"
+msgstr "вивеÑти дані щодо типового формату виведеннÑ"
+
+#: options.h:1015
+msgid "Print symbols defined and used for each input"
+msgstr "вивеÑти Ñимволи, визначені Ñ– викориÑтані Ð´Ð»Ñ Ð²ÑÑ–Ñ… вхідних даних"
+
+#: options.h:1019
+msgid "Ignored for SVR4 compatibility"
+msgstr "проігноровано Ð´Ð»Ñ ÑуміÑноÑÑ‚Ñ– з SVR4"
+
+#: options.h:1022
+msgid "Generate relocations in output"
+msgstr "Ñтворювати переÑÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ виведених даних"
+
+#: options.h:1025
+msgid "Generate relocatable output"
+msgstr "вивеÑти дані з можливіÑÑ‚ÑŽ переÑуваннÑ"
+
+#: options.h:1027
+msgid "Synonym for -r"
+msgstr "Синонім -r"
+
+#: options.h:1030
+msgid "Relax branches on certain targets"
+msgstr "оптимізувати Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð¿ÐµÐ²Ð½Ð¸Ñ… призначень"
+
+#: options.h:1033
+msgid "keep only symbols listed in this file"
+msgstr "зберегти лише Ñимволи зі ÑпиÑку у цьому файлі"
+
+#: options.h:1039 options.h:1042
+msgid "Add DIR to runtime search path"
+msgstr "додати КÐТÐЛОГ до шлÑху пошуку даних під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ"
+
+#: options.h:1045
+msgid "Add DIR to link time shared library search path"
+msgstr "додати КÐТÐЛОГ до шлÑÑ… пошуку бібліотеки Ñпільного викориÑÑ‚Ð°Ð½Ð½Ñ Ð½Ð° Ñ‡Ð°Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ"
+
+#: options.h:1049
+msgid "Layout sections in the order specified."
+msgstr "Компонувати розділи у вказаному порÑдку."
+
+#: options.h:1053
+msgid "Set address of section"
+msgstr "Ð’Ñтановити адреÑу розділу"
+
+#: options.h:1053
+msgid "SECTION=ADDRESS"
+msgstr "РОЗДІЛ=ÐДРЕСÐ"
+
+#: options.h:1056
+msgid "Sort common symbols by alignment"
+msgstr "УпорÑдкувати загальні Ñимволи за вирівнюваннÑм"
+
+#: options.h:1057
+msgid "[={ascending,descending}]"
+msgstr "[={ascending,descending}]"
+
+#: options.h:1060
+msgid "Sort sections by name. '--no-text-reorder' will override '--sort-section=name' for .text"
+msgstr "УпорÑдкувати розділи за назвою. «--no-text-reorder» має вищий пріоритет за «--sort-section=name» Ð´Ð»Ñ .text"
+
+#: options.h:1062
+msgid "[none,name]"
+msgstr "[none,name]"
+
+#: options.h:1066
+msgid "Dynamic tag slots to reserve (default 5)"
+msgstr "КількіÑÑ‚ÑŒ динамічних Ñлотів теґів, Ñкі Ñлід зарезервувати (типово 5)"
+
+#: options.h:1067 options.h:1115 options.h:1148 options.h:1150 options.h:1152
+#: options.h:1154
+msgid "COUNT"
+msgstr "КІЛЬКІСТЬ"
+
+#: options.h:1070
+msgid "Strip all symbols"
+msgstr "вилучити вÑÑ– Ñимволи"
+
+#: options.h:1072
+msgid "Strip debugging information"
+msgstr "вилучити діагноÑтичні дані"
+
+#: options.h:1074
+msgid "Emit only debug line number information"
+msgstr "вивеÑти лише дані щодо номера Ñ€Ñдка діагноÑтики"
+
+#: options.h:1076
+msgid "Strip debug symbols that are unused by gdb (at least versions <= 7.4)"
+msgstr "вилучити діагноÑтичні Ñимволи, Ñкими не зможе ÑкориÑтатиÑÑ gdb (принаймні верÑÑ–Ñ— <= 7.4)"
+
+#: options.h:1079
+msgid "Strip LTO intermediate code sections"
+msgstr "вилучити проміжні розділи коду LTO"
+
+#: options.h:1082
+msgid "(ARM, PowerPC only) The maximum distance from instructions in a group of sections to their stubs. Negative values mean stubs are always after (PowerPC before) the group. 1 means use default size.\n"
+msgstr "(Лише ARM та PowerPC) МакÑимальна відÑтань від команд у групі розділів до їхніх шаблонів. Від’ємні Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°ÑŽÑ‚ÑŒ розташуванню шаблонів піÑÐ»Ñ (Ð´Ð»Ñ PowerPC до) групи. 1 — типовий розмір відÑтані.\n"
+
+#: options.h:1089
+msgid "Use less memory and more disk I/O (included only for compatibility with GNU ld)"
+msgstr "викориÑтовувати менше пам’ÑÑ‚Ñ– Ñ– ширший обмін даними з диÑком (включено Ð´Ð»Ñ ÑуміÑноÑÑ‚Ñ– з GNU ld)"
+
+#: options.h:1093 options.h:1096
+msgid "Generate shared library"
+msgstr "Створити бібліотеку Ñпільного викориÑтаннÑ"
+
+#: options.h:1099
+msgid "Stack size when -fsplit-stack function calls non-split"
+msgstr "розмір Ñтека, Ñкщо Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ -fsplit-stack викликає нерозділений Ñтек"
+
+#: options.h:1105
+msgid "Do not link against shared libraries"
+msgstr "не компонувати з бібліотеками Ñпільного викориÑтаннÑ"
+
+#: options.h:1108
+msgid "Identical Code Folding. '--icf=safe' Folds ctors, dtors and functions whose pointers are definitely not taken."
+msgstr "Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð¾Ñ‚Ð¾Ð¶Ð½Ð¾Ð³Ð¾ коду (ICF). «--icf=safe» згортає ctor, dtor та функції, вказівники Ñких не забрано Ñвним чином."
+
+#: options.h:1115
+msgid "Number of iterations of ICF (default 2)"
+msgstr "КількіÑÑ‚ÑŒ ітерацій ICF (типовою кількіÑÑ‚ÑŽ Ñ” 2)"
+
+#: options.h:1118
+msgid "List folded identical sections on stderr"
+msgstr "вивеÑти ÑпиÑок згорнутих ідентичних розділів до stderr"
+
+#: options.h:1119
+msgid "Do not list folded identical sections"
+msgstr "не виводити ÑпиÑок згорнутих ідентичних розділів"
+
+#: options.h:1122
+msgid "Do not fold this symbol during ICF"
+msgstr "не згортати цей Ñимвол під Ñ‡Ð°Ñ ICF"
+
+#: options.h:1125
+msgid "Remove unused sections"
+msgstr "вилучити невикориÑтані розділи"
+
+#: options.h:1126
+msgid "Don't remove unused sections (default)"
+msgstr "не вилучати невикориÑтаних розділів (типова поведінка)"
+
+#: options.h:1129
+msgid "List removed unused sections on stderr"
+msgstr "вивеÑти ÑпиÑок вилучених невикориÑтаних розділів до stderr"
+
+#: options.h:1130
+msgid "Do not list removed unused sections"
+msgstr "не виводити ÑпиÑок вилучених невикориÑтаних розділів"
+
+#: options.h:1133
+msgid "Print resource usage statistics"
+msgstr "вивеÑти ÑтатиÑтичні дані щодо викориÑÑ‚Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑів"
+
+#: options.h:1136
+msgid "Set target system root directory"
+msgstr "вÑтановити кореневий каталог ÑиÑтеми призначеннÑ"
+
+#: options.h:1139
+msgid "Print the name of each input file"
+msgstr "виводити назву вÑÑ–Ñ… файлів вхідних даних"
+
+#: options.h:1142
+msgid "Read linker script"
+msgstr "прочитати Ñкрипт компонувальника"
+
+#: options.h:1145
+msgid "Run the linker multi-threaded"
+msgstr "викориÑтовувати ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ декілька потоків"
+
+#: options.h:1146
+msgid "Do not run the linker multi-threaded"
+msgstr "не викориÑтовувати ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ декілька потоків"
+
+#: options.h:1148
+msgid "Number of threads to use"
+msgstr "кількіÑÑ‚ÑŒ потоків, Ñкі Ñлід викориÑтати"
+
+#: options.h:1150
+msgid "Number of threads to use in initial pass"
+msgstr "кількіÑÑ‚ÑŒ потоків, Ñкі Ñлід викориÑтати під Ñ‡Ð°Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ð³Ð¾ проходу"
+
+#: options.h:1152
+msgid "Number of threads to use in middle pass"
+msgstr "кількіÑÑ‚ÑŒ потоків, Ñкі Ñлід викориÑтати під Ñ‡Ð°Ñ Ð¿Ñ€Ð¾Ð¼Ñ–Ð¶Ð½Ð¾Ð³Ð¾ проходу"
+
+#: options.h:1154
+msgid "Number of threads to use in final pass"
+msgstr "кількіÑÑ‚ÑŒ потоків, Ñкі Ñлід викориÑтати під Ñ‡Ð°Ñ Ð¾Ñтаннього проходу"
+
+#: options.h:1157
+msgid "Set the address of the bss segment"
+msgstr "вÑтановити адреÑу Ñегмента bss"
+
+#: options.h:1159
+msgid "Set the address of the data segment"
+msgstr "вÑтановити адреÑу Ñегмента даних (data)"
+
+#: options.h:1161 options.h:1163
+msgid "Set the address of the text segment"
+msgstr "вÑтановити адреÑу текÑтового Ñегмента (text)"
+
+#: options.h:1166
+msgid "Set the address of the rodata segment"
+msgstr "Ð’Ñтановити адреÑу Ñегмента rodata"
+
+#: options.h:1169
+msgid "(PowerPC64 only) Optimize TOC code sequences"
+msgstr "(Лише PowerPC64) Оптимізувати кодові поÑлідовноÑÑ‚Ñ– TOC"
+
+#: options.h:1170
+msgid "(PowerPC64 only) Don't optimize TOC code sequences"
+msgstr "(Лише PowerPC64) Ðе оптимізувати кодові поÑлідовноÑÑ‚Ñ– TOC"
+
+#: options.h:1173
+msgid "(PowerPC64 only) Sort TOC and GOT sections"
+msgstr "(Лише PowerPC64) УпорÑдкувати розділи TOC та GOT"
+
+#: options.h:1174
+msgid "(PowerPC64 only) Don't sort TOC and GOT sections"
+msgstr "(Лише PowerPC64) Ðе упорÑдковувати розділи TOC та GOT"
+
+#: options.h:1177
+msgid "Create undefined reference to SYMBOL"
+msgstr "Ñтворити невизначене поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° СИМВОЛ"
+
+#: options.h:1180
+msgid "How to handle unresolved symbols"
+msgstr "СпоÑіб обробки нерозв’Ñзних Ñимволів"
+
+#: options.h:1187
+msgid "Synonym for --debug=files"
+msgstr "Ñинонім до --debug=files"
+
+#: options.h:1190
+msgid "Read version script"
+msgstr "читати Ñкрипт верÑій"
+
+#: options.h:1193
+msgid "Warn about duplicate common symbols"
+msgstr "попереджати про Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ñ… Ñимволів"
+
+#: options.h:1194
+msgid "Do not warn about duplicate common symbols (default)"
+msgstr "не попереджати про Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ñ… Ñимволів (типова поведінка)"
+
+#: options.h:1200
+msgid "Warn if the stack is executable"
+msgstr "Попереджати, Ñкщо Ñтек Ñ” виконуваним"
+
+#: options.h:1201
+msgid "Do not warn if the stack is executable (default)"
+msgstr "Ðе попереджати, Ñкщо Ñтек Ñ” виконуваним (типово)"
+
+#: options.h:1204
+msgid "Don't warn about mismatched input files"
+msgstr "не попереджати про невідповідніÑÑ‚ÑŒ файлів вхідних даних"
+
+#: options.h:1210
+msgid "Warn when skipping an incompatible library"
+msgstr "попереджати у разі пропуÑÐºÐ°Ð½Ð½Ñ Ð½ÐµÑуміÑної бібліотеки"
+
+#: options.h:1211
+msgid "Don't warn when skipping an incompatible library"
+msgstr "не попереджати у разі пропуÑÐºÐ°Ð½Ð½Ñ Ð½ÐµÑуміÑної бібліотеки"
+
+#: options.h:1214
+msgid "Warn if text segment is not shareable"
+msgstr "Попереджати, Ñкщо текÑтовий Ñегмент непридатний до Ñпільного викориÑтаннÑ"
+
+#: options.h:1215
+msgid "Do not warn if text segment is not shareable (default)"
+msgstr "Ðе попереджати, Ñкщо текÑтовий Ñегмент непридатний до Ñпільного викориÑÑ‚Ð°Ð½Ð½Ñ (типово)"
+
+#: options.h:1218
+msgid "Report unresolved symbols as warnings"
+msgstr "повідомлÑти про нерозв’Ñзні Ñимволи Ñк про попередженнÑ"
+
+#: options.h:1222
+msgid "Report unresolved symbols as errors"
+msgstr "повідомлÑти про нерозв’Ñзні Ñимволи Ñк про помилки"
+
+#: options.h:1226
+msgid "(ARM only) Do not warn about objects with incompatible wchar_t sizes"
+msgstr "(лише ARM) Ðе попереджати про об’єкти з неÑуміÑними з wchar_t розмірами"
+
+#: options.h:1230
+msgid "Include all archive contents"
+msgstr "включити веÑÑŒ вміÑÑ‚ архіву"
+
+#: options.h:1231
+msgid "Include only needed archive contents"
+msgstr "включати лише потрібний вміÑÑ‚ архіву"
+
+#: options.h:1234
+msgid "Use wrapper functions for SYMBOL"
+msgstr "викориÑтовувати функції-обгортки Ð´Ð»Ñ Ñимволу СИМВОЛ"
+
+#: options.h:1237
+msgid "Trace references to symbol"
+msgstr "траÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñилань на Ñимвол"
+
+#: options.h:1240
+msgid "Allow unused version in script (default)"
+msgstr "Дозволити невикориÑтану верÑÑ–ÑŽ у Ñкрипті (типово)"
+
+#: options.h:1241
+msgid "Do not allow unused version in script"
+msgstr "Заборонити невикориÑтану верÑÑ–ÑŽ у Ñкрипті"
+
+#: options.h:1244
+msgid "Default search path for Solaris compatibility"
+msgstr "типовий шлÑÑ… пошуку Ð´Ð»Ñ ÑуміÑноÑÑ‚Ñ– з Solaris"
+
+#: options.h:1245
+msgid "PATH"
+msgstr "ШЛЯХ"
+
+#: options.h:1248
+msgid "Start a library search group"
+msgstr "початок групи пошуку бібліотек"
+
+#: options.h:1250
+msgid "End a library search group"
+msgstr "Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¸ пошуку бібліотек"
+
+#: options.h:1254
+msgid "Start a library"
+msgstr "Почати бібліотеку"
+
+#: options.h:1256
+msgid "End a library "
+msgstr "Завершити бібліотеку "
+
+#: options.h:1259
+msgid "Ignored for GCC linker option compatibility"
+msgstr "Проігноровано Ð´Ð»Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ ÑуміÑноÑÑ‚Ñ– за параметрами з компонувальником GCC"
+
+#: options.h:1265
+msgid "Sort dynamic relocs"
+msgstr "ВпорÑдковувати динамічні переÑуваннÑ"
+
+#: options.h:1266
+msgid "Do not sort dynamic relocs"
+msgstr "не впорÑдковувати динамічні переÑуваннÑ"
+
+#: options.h:1268
+msgid "Set common page size to SIZE"
+msgstr "вÑтановити Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ñ— Ñторінки розмір РОЗМІР"
+
+#: options.h:1273
+msgid "Mark output as requiring executable stack"
+msgstr "позначити виведені дані Ñк такі, що потребують Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð·Ñ– Ñтеком"
+
+#: options.h:1275
+msgid "Mark DSO to be initialized first at runtime"
+msgstr "позначити DSO Ð´Ð»Ñ Ð¿ÐµÑ€ÑˆÐ¾Ñ‡ÐµÑ€Ð³Ð¾Ð²Ð¾Ñ— ініціалізації під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ"
+
+#: options.h:1278
+msgid "Mark object to interpose all DSOs but executable"
+msgstr "позначити об’єкт Ñк такий, що перериває вÑÑ– DSO, окрім виконуваних"
+
+#: options.h:1281
+msgid "Mark object for lazy runtime binding (default)"
+msgstr "позначити об’єкт Ð´Ð»Ñ Ð²Ñ–Ð´ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ñ— прив’ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ (типова поведінка)"
+
+#: options.h:1284
+msgid "Mark object requiring immediate process"
+msgstr "позначити об’єкт Ñк такий, що потребує негайної обробки"
+
+#: options.h:1287
+msgid "Set maximum page size to SIZE"
+msgstr "вÑтановити макÑимальний розмір Ñторінки у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð ÐžÐ—ÐœÐ†Ð "
+
+#: options.h:1295
+msgid "Do not create copy relocs"
+msgstr "не Ñтворювати переÑувань з копіюваннÑм"
+
+#: options.h:1297
+msgid "Mark object not to use default search paths"
+msgstr "позначити об’єкт Ñк такий, що не викориÑтовує типових шлÑхів пошуку"
+
+#: options.h:1300
+msgid "Mark DSO non-deletable at runtime"
+msgstr "позначити DSO Ñк такий, що не можна вилучати під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ"
+
+#: options.h:1303
+msgid "Mark DSO not available to dlopen"
+msgstr "позначити DSO Ñк такий, що недоÑтупний Ð´Ð»Ñ dlopen"
+
+#: options.h:1306
+msgid "Mark DSO not available to dldump"
+msgstr "позначити DSO Ñк такий, що недоÑтупний Ð´Ð»Ñ dldump"
+
+#: options.h:1309
+msgid "Mark output as not requiring executable stack"
+msgstr "позначити виведені дані Ñк такі, що не потребують Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð·Ñ– Ñтеком"
+
+#: options.h:1311
+msgid "Mark object for immediate function binding"
+msgstr "позначити об’єкт Ð´Ð»Ñ Ð½ÐµÐ³Ð°Ð¹Ð½Ð¾Ð³Ð¾ прив’ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹"
+
+#: options.h:1314
+msgid "Mark DSO to indicate that needs immediate $ORIGIN processing at runtime"
+msgstr "позначити DSO Ñк такий, що потребує негайної обробки $ORIGIN під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ"
+
+#: options.h:1317
+msgid "Where possible mark variables read-only after relocation"
+msgstr "Ñкщо можна, піÑÐ»Ñ Ð¿ÐµÑ€ÐµÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡Ð°Ñ‚Ð¸ змінні Ñк придатні лише до читаннÑ"
+
+#: options.h:1318
+msgid "Don't mark variables read-only after relocation"
+msgstr "не позначати піÑÐ»Ñ Ð¿ÐµÑ€ÐµÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ñ– Ñк придатні лише до читаннÑ"
+
+#: options.h:1320
+msgid "Do not permit relocations in read-only segments"
+msgstr "Заборонити переÑÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ придатних лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñегментах"
+
+#: options.h:1321 options.h:1323
+msgid "Permit relocations in read-only segments (default)"
+msgstr "Дозволити переÑÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ придатних лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñегментах (типово)"
+
+#: output.cc:1344
+msgid "section group retained but group element discarded"
+msgstr "Ð³Ñ€ÑƒÐ¿ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² збережено, але елемент групи відкинуто"
+
+#: output.cc:1711 output.cc:1743
+msgid "out of patch space (GOT); relink with --incremental-full"
+msgstr "вихід за межі латки (GOT); виконайте повторне ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° допомогою --incremental-full"
+
+#: output.cc:2372
+#, c-format
+msgid "invalid alignment %lu for section \"%s\""
+msgstr "некоректне Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ %lu Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ «%s»"
+
+#: output.cc:4598
+#, c-format
+msgid "dot moves backward in linker script from 0x%llx to 0x%llx"
+msgstr "крапка переÑуває назад у Ñкрипті компонувальника з 0x%llx до 0x%llx"
+
+#: output.cc:4601
+#, c-format
+msgid "address of section '%s' moves backward from 0x%llx to 0x%llx"
+msgstr "адреÑа розділу «%s» переÑуває назад з 0x%llx до 0x%llx"
+
+#: output.cc:4965
+#, c-format
+msgid "%s: incremental base and output file name are the same"
+msgstr "%s: назви файлів бази Ð½Ð°Ñ€Ð¾Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð·Ð±Ñ–Ð³Ð°ÑŽÑ‚ÑŒÑÑ"
+
+#: output.cc:4972
+#, c-format
+msgid "%s: stat: %s"
+msgstr "%s: ÑтатиÑтика: %s"
+
+#: output.cc:4977
+#, c-format
+msgid "%s: incremental base file is empty"
+msgstr "%s: файл бази Ð½Ð°Ñ€Ð¾Ñ‰ÐµÐ½Ð½Ñ Ñ” порожнім"
+
+#: output.cc:4989 output.cc:5087
+#, c-format
+msgid "%s: open: %s"
+msgstr "%s: відкриттÑ: %s"
+
+#: output.cc:5006
+#, c-format
+msgid "%s: read failed: %s"
+msgstr "%s: помилка під Ñ‡Ð°Ñ Ñпроби читаннÑ: %s"
+
+#: output.cc:5011
+#, c-format
+msgid "%s: file too short: read only %lld of %lld bytes"
+msgstr "%s: файл є надто коротким: прочитано лише %lld з %lld байтів"
+
+#: output.cc:5111
+#, c-format
+msgid "%s: mremap: %s"
+msgstr "%s: mremap: %s"
+
+#: output.cc:5130
+#, c-format
+msgid "%s: mmap: %s"
+msgstr "%s: mmap: %s"
+
+#: output.cc:5222
+#, c-format
+msgid "%s: mmap: failed to allocate %lu bytes for output file: %s"
+msgstr "%s: mmap: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ %lu байтів пам’ÑÑ‚Ñ– Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° виведених даних: %s"
+
+#: output.cc:5240
+#, c-format
+msgid "%s: munmap: %s"
+msgstr "%s: munmap: %s"
+
+#: output.cc:5260
+#, c-format
+msgid "%s: write: unexpected 0 return-value"
+msgstr "%s: запиÑ: повернуто неочікуване Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 0"
+
+#: output.cc:5262
+#, c-format
+msgid "%s: write: %s"
+msgstr "%s: запиÑ: %s"
+
+#: output.cc:5277
+#, c-format
+msgid "%s: close: %s"
+msgstr "%s: закриттÑ: %s"
+
+#: output.h:501
+msgid "** section headers"
+msgstr "** заголовки розділів"
+
+#: output.h:551
+msgid "** segment headers"
+msgstr "** заголовки Ñегментів"
+
+#: output.h:598
+msgid "** file header"
+msgstr "** заголовок файла"
+
+#: output.h:824
+msgid "** fill"
+msgstr "** заповненнÑ"
+
+#: output.h:990
+msgid "** string table"
+msgstr "** Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ñ€Ñдків"
+
+#: output.h:1513
+msgid "** dynamic relocs"
+msgstr "** динамічні переÑуваннÑ"
+
+#: output.h:1514 output.h:2214
+msgid "** relocs"
+msgstr "** переÑуваннÑ"
+
+#: output.h:2239
+msgid "** group"
+msgstr "** група"
+
+#: output.h:2415
+msgid "** GOT"
+msgstr "** GOT"
+
+#: output.h:2597
+msgid "** dynamic"
+msgstr "** динамічний"
+
+#: output.h:2734
+msgid "** symtab xindex"
+msgstr "** x-покажчик таблиці Ñимволів"
+
+#: parameters.cc:221
+msgid "input file does not match -EB/EL option"
+msgstr "вхідний файл не відповідає параметру -EB/EL"
+
+#: parameters.cc:231
+msgid "-Trodata-segment is meaningless without --rosegment"
+msgstr "-Trodata-segment не має ÑенÑу без --rosegment"
+
+#: parameters.cc:339 target-select.cc:199
+#, c-format
+msgid "unrecognized output format %s"
+msgstr "нерозпізнаний формат Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… %s"
+
+#: parameters.cc:352
+#, c-format
+msgid "unrecognized emulation %s"
+msgstr "невідома назва емулÑції, %s"
+
+#: parameters.cc:375
+msgid "no supported target for -EB/-EL option"
+msgstr "непідтримуване Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° -EB/-EL"
+
+#: plugin.cc:178
+#, c-format
+msgid "%s: could not load plugin library: %s"
+msgstr "%s: не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ бібліотеку додатків: %s"
+
+#: plugin.cc:187
+#, c-format
+msgid "%s: could not find onload entry point"
+msgstr "%s: не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ точку входу, що викориÑтовуєтьÑÑ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ"
+
+#: plugin.cc:852
+msgid "input files added by plug-ins in --incremental mode not supported yet"
+msgstr "підтримки файлів вхідних даних, доданих за допомогою додатків у режимі --incremental, ще не передбачено."
+
+#: powerpc.cc:856
+msgid "missing expected __tls_get_addr call"
+msgstr "пропущено очікуваний виклик __tls_get_addr"
+
+#: powerpc.cc:1663 powerpc.cc:1865
+#, c-format
+msgid "%s: ABI version %d is not compatible with ABI version %d output"
+msgstr "%s: верÑÑ–Ñ ABI %d Ñ” неÑуміÑною з верÑією ABI %d результату"
+
+#: powerpc.cc:1697 powerpc.cc:1907
+#, c-format
+msgid "%s: .opd invalid in abiv%d"
+msgstr "%s: .opd є некоректним у abiv%d"
+
+#: powerpc.cc:1765
+#, c-format
+msgid "%s: unexpected reloc type %u in .opd section"
+msgstr "%s: неочікуваний тип переÑуваннÑ, %u, у розділі .opd"
+
+#: powerpc.cc:1776
+#, c-format
+msgid "%s: .opd is not a regular array of opd entries"
+msgstr "%s: opd не Ñ” звичайним маÑивом запиÑів opd"
+
+#: powerpc.cc:1843
+#, c-format
+msgid "%s: local symbol %d has invalid st_other for ABI version 1"
+msgstr "%s: локальний Ñимвол %d має некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ st_other Ð´Ð»Ñ Ð²ÐµÑ€ÑÑ–Ñ— ABI 1"
+
+#: powerpc.cc:2420
+#, c-format
+msgid "%s:%s exceeds group size"
+msgstr "%s:%s перевищує розмір групи"
+
+#: powerpc.cc:2643
+#, c-format
+msgid "%s:%s: branch in non-executable section, no long branch stub for you"
+msgstr "%s:%s: Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ Ñƒ невиконуваному розділі, Ð´Ð»Ñ Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” шаблона довгої гілки"
+
+#: powerpc.cc:3966
+msgid "** glink"
+msgstr "** glink"
+
+#: powerpc.cc:4136 powerpc.cc:4500
+#, c-format
+msgid "%s: linkage table error against `%s'"
+msgstr "%s: помилка у таблиці ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ «%s»"
+
+#: powerpc.cc:4607
+msgid "** save/restore"
+msgstr "** зберегти/відновити"
+
+#: powerpc.cc:5216 sparc.cc:2212
+msgid "requires unsupported dynamic reloc; recompile with -fPIC"
+msgstr "потребує непідтримуваного динамічного переÑуваннÑ; зберіть повторно з -fPIC"
+
+#: powerpc.cc:5289
+#, c-format
+msgid "%s: unsupported reloc %u for IFUNC symbol"
+msgstr "%s: непідтримуване переÑÑƒÐ²Ð°Ð½Ð½Ñ %u Ð´Ð»Ñ Ñимволу IFUNC"
+
+#: powerpc.cc:6329 sparc.cc:3076 tilegx.cc:4193 x86_64.cc:3114
+#, c-format
+msgid "%s: unsupported REL reloc section"
+msgstr "%s: непідтримуваний розділ переÑÑƒÐ²Ð°Ð½Ð½Ñ REL"
+
+#: powerpc.cc:6626
+msgid "__tls_get_addr call lacks marker reloc"
+msgstr "у виклику __tls_get_addr пропущено позначку переÑуваннÑ"
+
+#: powerpc.cc:6772
+msgid "call lacks nop, can't restore toc; recompile with -fPIC"
+msgstr "у виклику не виÑтачає nop, Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ toc неможливе; зберіть повторно з -fPIC"
+
+#: powerpc.cc:7206 powerpc.cc:7230
+#, c-format
+msgid "toc optimization is not supported for %#08x instruction"
+msgstr "Ð´Ð»Ñ Ñ–Ð½Ñтрукції %#08x не передбачено підтримки оптимізації toc"
+
+#: powerpc.cc:7568
+msgid "relocation overflow"
+msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ Ð¿ÐµÑ€ÐµÑуваннÑ"
+
+#: readsyms.cc:285
+#, c-format
+msgid "%s: file is empty"
+msgstr "%s: файл порожній"
+
+#. Here we have to handle any other input file types we need.
+#: readsyms.cc:920
+#, c-format
+msgid "%s: not an object or archive"
+msgstr "%s: не є об’єктом або архівом"
+
+#: reduced_debug_output.cc:187
+msgid "Debug abbreviations extend beyond .debug_abbrev section; failed to reduce debug abbreviations"
+msgstr "ДіагноÑтичні ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¸Ñ…Ð¾Ð´ÑÑ‚ÑŒ за межі розділу .debug_abbrev; не вдалоÑÑ ÑтиÑнути діагноÑтичні ÑкороченнÑ"
+
+#: reduced_debug_output.cc:273
+msgid "Extremely large compile unit in debug info; failed to reduce debug info"
+msgstr "Ðадзвичайно великий модуль даних у діагноÑтичних даних; не вдалоÑÑ ÑтиÑнути діагноÑтичні дані"
+
+#: reduced_debug_output.cc:281
+msgid "Debug info extends beyond .debug_info section;failed to reduce debug info"
+msgstr "ДіагноÑтичні дані виходÑÑ‚ÑŒ за межі розділу .debug_info; ÑтиÑÐºÐ°Ð½Ð½Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтичних даних неможливе"
+
+#: reduced_debug_output.cc:301 reduced_debug_output.cc:343
+msgid "Invalid DIE in debug info; failed to reduce debug info"
+msgstr "Ðекоректне DIE у діагноÑтичних даних; не вдалоÑÑ ÑтиÑнути діагноÑтичні дані"
+
+#: reduced_debug_output.cc:324
+msgid "Debug info extends beyond .debug_info section; failed to reduce debug info"
+msgstr "ДіагноÑтичні дані виходÑÑ‚ÑŒ за межі розділу .debug_info; ÑтиÑÐºÐ°Ð½Ð½Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтичних даних неможливе"
+
+#: reloc.cc:317 reloc.cc:959
+#, c-format
+msgid "relocation section %u uses unexpected symbol table %u"
+msgstr "у розділі переÑÑƒÐ²Ð°Ð½Ð½Ñ %u викориÑтано неочікувану таблицю Ñимволів %u"
+
+#: reloc.cc:335 reloc.cc:976
+#, c-format
+msgid "unexpected entsize for reloc section %u: %lu != %u"
+msgstr "неочікуване Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ запиÑу (entsize) Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ переÑувань %u: %lu != %u"
+
+#: reloc.cc:344 reloc.cc:985
+#, c-format
+msgid "reloc section %u size %lu uneven"
+msgstr "розмір розділу переÑувань %u, %lu, Ñ” помилковим"
+
+#: reloc.cc:1367
+#, c-format
+msgid "could not convert call to '%s' to '%s'"
+msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ виклик «%s» до «%s»"
+
+#: reloc.cc:1527
+#, c-format
+msgid "reloc section size %zu is not a multiple of reloc size %d\n"
+msgstr "розмір розділу переÑувань, %zu, не Ñ” кратним до розміру запиÑу переÑуваннÑ, %d\n"
+
+#. We should only see externally visible symbols in the symbol
+#. table.
+#: resolve.cc:194
+msgid "invalid STB_LOCAL symbol in external symbols"
+msgstr "некоректний Ñимвол STB_LOCAL у зовнішніх Ñимволах"
+
+#. Any target which wants to handle STB_LOOS, etc., needs to
+#. define a resolve method.
+#: resolve.cc:200
+#, c-format
+msgid "unsupported symbol binding %d"
+msgstr "непідтримуване прив’ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ñимволів %d"
+
+#. A dynamic object cannot reference a hidden or internal symbol
+#. defined in another object.
+#: resolve.cc:284
+#, c-format
+msgid "%s symbol '%s' in %s is referenced by DSO %s"
+msgstr "на Ñимвол %s «%s» у %s поÑилаєтьÑÑ DSO %s"
+
+#: resolve.cc:406
+#, c-format
+msgid "common of '%s' overriding smaller common"
+msgstr "загальне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s» замінює загальне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð¸Ð¶Ñ‡Ð¾Ð³Ð¾ рівнÑ"
+
+#: resolve.cc:411
+#, c-format
+msgid "common of '%s' overidden by larger common"
+msgstr "загальне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s» замінено загальним визначеннÑм вищого рівнÑ"
+
+#: resolve.cc:416
+#, c-format
+msgid "multiple common of '%s'"
+msgstr "декілька загальних визначень «%s»"
+
+#: resolve.cc:458
+#, c-format
+msgid "symbol '%s' used as both __thread and non-__thread"
+msgstr "Ñимвол «%s» викориÑтано одразу Ñк __thread Ñ– Ñк не-__thread"
+
+#: resolve.cc:501
+#, c-format
+msgid "multiple definition of '%s'"
+msgstr "повторне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s»"
+
+#: resolve.cc:540
+#, c-format
+msgid "definition of '%s' overriding common"
+msgstr "Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s» замінює загальне визначеннÑ"
+
+#: resolve.cc:575
+#, c-format
+msgid "definition of '%s' overriding dynamic common definition"
+msgstr "Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s» замінює динамічне загальне визначеннÑ"
+
+#: resolve.cc:725
+#, c-format
+msgid "common '%s' overridden by previous definition"
+msgstr "загальне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s» замінено попереднім визначеннÑм"
+
+#: resolve.cc:860
+msgid "COPY reloc"
+msgstr "переÑÑƒÐ²Ð°Ð½Ð½Ñ COPY"
+
+#: resolve.cc:864 resolve.cc:887
+msgid "command line"
+msgstr "командний Ñ€Ñдок"
+
+#: resolve.cc:867
+msgid "linker script"
+msgstr "Ñкрипт компонувальника"
+
+#: resolve.cc:871
+msgid "linker defined"
+msgstr "визначений компонувальник"
+
+#: script-sections.cc:105
+#, c-format
+msgid "section %s overflows end of region %s"
+msgstr "розділ %s виходить за межі облаÑÑ‚Ñ– %s"
+
+#: script-sections.cc:646
+msgid "Attempt to set a memory region for a non-output section"
+msgstr "Спроба вÑтановити облаÑÑ‚ÑŒ пам’ÑÑ‚ÑŒ Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, Ñкий не Ñ” розділом виведеннÑ"
+
+#: script-sections.cc:952 script-sections.cc:3583
+msgid "dot may not move backward"
+msgstr "з крапкою не можна виконувати переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°Ð·Ð°Ð´"
+
+#: script-sections.cc:1019
+msgid "** expression"
+msgstr "** вираз"
+
+#: script-sections.cc:1204
+msgid "fill value is not absolute"
+msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð½Ðµ Ñ” абÑолютним"
+
+#: script-sections.cc:2348
+#, c-format
+msgid "alignment of section %s is not absolute"
+msgstr "Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s не Ñ” абÑолютним"
+
+#: script-sections.cc:2449
+#, c-format
+msgid "subalign of section %s is not absolute"
+msgstr "Ð¿Ñ–Ð´Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s не Ñ” абÑолютним"
+
+#: script-sections.cc:2464
+#, c-format
+msgid "fill of section %s is not absolute"
+msgstr "Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s не Ñ” абÑолютним"
+
+#: script-sections.cc:2577
+msgid "SPECIAL constraints are not implemented"
+msgstr "Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ SPECIAL не реалізовано"
+
+#: script-sections.cc:2619
+msgid "mismatched definition for constrained sections"
+msgstr "невідповідне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð¸Ñ… розділів"
+
+#: script-sections.cc:3095
+#, c-format
+msgid "region '%.*s' already defined"
+msgstr "облаÑÑ‚ÑŒ «%.*s» вже визначено"
+
+#: script-sections.cc:3321
+msgid "DATA_SEGMENT_ALIGN may only appear once in a linker script"
+msgstr "DATA_SEGMENT_ALIGN можна викориÑтовувати у Ñкрипті ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ð¸ÑˆÐµ раз"
+
+#: script-sections.cc:3336
+msgid "DATA_SEGMENT_RELRO_END may only appear once in a linker script"
+msgstr "DATA_SEGMENT_RELRO_END можна викориÑтовувати у Ñкрипті ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ð¸ÑˆÐµ раз"
+
+#: script-sections.cc:3341
+msgid "DATA_SEGMENT_RELRO_END must follow DATA_SEGMENT_ALIGN"
+msgstr "DATA_SEGMENT_RELRO_END має має бути розташовано за DATA_SEGMENT_ALIGN"
+
+#: script-sections.cc:3519
+msgid "no matching section constraint"
+msgstr "немає відповідного Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
+
+#: script-sections.cc:3914
+msgid "creating a segment to contain the file and program headers outside of any MEMORY region"
+msgstr "Ñтворюємо Ñегмент, що міÑтитиме заголовки файла Ñ– програми поза будь-Ñкою облаÑÑ‚ÑŽ MEMORY"
+
+#: script-sections.cc:3963
+msgid "TLS sections are not adjacent"
+msgstr "Розділи TLS не Ñ” ÑуÑідніми"
+
+#: script-sections.cc:4110
+#, c-format
+msgid "allocated section %s not in any segment"
+msgstr "розподілений розділ, %s, не перебуває у жодному Ñегменті"
+
+#: script-sections.cc:4156
+#, c-format
+msgid "no segment %s"
+msgstr "немає Ñегмента %s"
+
+#: script-sections.cc:4169
+msgid "section in two PT_LOAD segments"
+msgstr "розділ у двох Ñегментах PT_LOAD"
+
+#: script-sections.cc:4176
+msgid "allocated section not in any PT_LOAD segment"
+msgstr "розподілений розділ не перебуває у жодному Ñегменті PT_LOAD"
+
+#: script-sections.cc:4205
+msgid "may only specify load address for PT_LOAD segment"
+msgstr "адреÑу Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ðµ бути вказано лише Ð´Ð»Ñ Ñегмента PT_LOAD"
+
+#: script-sections.cc:4231
+#, c-format
+msgid "PHDRS load address overrides section %s load address"
+msgstr "адреÑа Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ PHDRS замінює адреÑу Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s"
+
+#. We could support this if we wanted to.
+#: script-sections.cc:4242
+msgid "using only one of FILEHDR and PHDRS is not currently supported"
+msgstr "підтримки викориÑÑ‚Ð°Ð½Ð½Ñ Ð»Ð¸ÑˆÐµ одного з запиÑів FILEHDR або PHDRS у поточній верÑÑ–Ñ— не передбачено"
+
+#: script-sections.cc:4257
+msgid "sections loaded on first page without room for file and program headers are not supported"
+msgstr "підтримки розділів, що завантажуютьÑÑ Ð½Ð° першій Ñторінці без міÑÑ†Ñ Ð´Ð»Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ–Ð² файла Ñ– програми, не передбачено"
+
+#: script-sections.cc:4263
+msgid "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"
+msgstr "викориÑÑ‚Ð°Ð½Ð½Ñ FILEHDR Ñ– PHDRS Ð´Ð»Ñ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ¾Ñ… Ñегментів PT_LOAD у поточній верÑÑ–Ñ— не передбачено"
+
+#: script.cc:1132
+msgid "invalid use of PROVIDE for dot symbol"
+msgstr "некоректне викориÑÑ‚Ð°Ð½Ð½Ñ PROVIDE Ð´Ð»Ñ Ñимволу з крапкою"
+
+#: script.cc:1508
+#, c-format
+msgid "%s: SECTIONS seen after other input files; try -T/--script"
+msgstr "%s: SECTIONS піÑÐ»Ñ Ñ–Ð½ÑˆÐ¸Ñ… вхідних файлів; Ñпробуйте параметр -T/--script"
+
+#. We have a match for both the global and local entries for a
+#. version tag. That's got to be wrong.
+#: script.cc:2212
+#, c-format
+msgid "'%s' appears as both a global and a local symbol for version '%s' in script"
+msgstr "«%s» з’ÑвлÑєтьÑÑ Ð´Ð»Ñ Ð²ÐµÑ€ÑÑ–Ñ— «%s» у Ñкрипті одночаÑно Ñк загальний (global) Ñ– локальний (local) Ñимвол"
+
+#: script.cc:2239
+#, c-format
+msgid "wildcard match appears in both version '%s' and '%s' in script"
+msgstr "відповідники шаблону Ñ” у обох верÑÑ–ÑÑ… Ñкрипту, «%s» Ñ– «%s»"
+
+#: script.cc:2244
+#, c-format
+msgid "wildcard match appears as both global and local in version '%s' in script"
+msgstr "відповідник шаблону з’ÑвлÑєтьÑÑ Ð´Ð»Ñ Ð²ÐµÑ€ÑÑ–Ñ— «%s» у Ñкрипті одночаÑно Ñк загальний (global) Ñ– локальний (local)"
+
+#: script.cc:2329
+#, c-format
+msgid "using '%s' as version for '%s' which is also named in version '%s' in script"
+msgstr "викориÑтано «%s» Ñк верÑÑ–ÑŽ Ð´Ð»Ñ Â«%s», Ñкий також названо у верÑÑ–Ñ— «%s» у Ñкрипті"
+
+#: script.cc:2427
+#, c-format
+msgid "version script assignment of %s to symbol %s failed: symbol not defined"
+msgstr "помилка під Ñ‡Ð°Ñ Ñпроби Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ— Ñкрипту %s до Ñимволу %s: Ñимвол не визначено"
+
+#: script.cc:2623
+#, c-format
+msgid "%s:%d:%d: %s"
+msgstr "%s:%d:%d: %s"
+
+#: script.cc:2689
+msgid "library name must be prefixed with -l"
+msgstr "перед назвою бібліотеки Ñлід вказати Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ -l"
+
+#. There are some options that we could handle here--e.g.,
+#. -lLIBRARY. Should we bother?
+#: script.cc:2816
+#, c-format
+msgid "%s:%d:%d: ignoring command OPTION; OPTION is only valid for scripts specified via -T/--script"
+msgstr "%s:%d:%d: ігноруємо ПÐРÐМЕТР команди; ПÐРÐМЕТР можна викориÑтовувати лише Ð´Ð»Ñ Ñкриптів, визначених за допомогою -T/--script"
+
+#: script.cc:2881
+#, c-format
+msgid "%s:%d:%d: ignoring SEARCH_DIR; SEARCH_DIR is only valid for scripts specified via -T/--script"
+msgstr "%s:%d:%d: ігноруємо SEARCH_DIR; SEARCH_DIR можна викориÑтовувати лише Ð´Ð»Ñ Ñкриптів, визначених за допомогою -T/--script"
+
+#: script.cc:2909
+#, c-format
+msgid "%s:%d:%d: invalid use of VERSION in input file"
+msgstr "%s:%d:%d: некоректне викориÑÑ‚Ð°Ð½Ð½Ñ VERSION у файлі вхідних даних"
+
+#: script.cc:3025
+#, c-format
+msgid "unrecognized version script language '%s'"
+msgstr "нерозпізнана мова верÑÑ–Ñ— Ñкрипту: «%s»"
+
+#: script.cc:3144 script.cc:3158
+#, c-format
+msgid "%s:%d:%d: DATA_SEGMENT_ALIGN not in SECTIONS clause"
+msgstr "%s:%d:%d: DATA_SEGMENT_ALIGN не перебуває у запиÑÑ– SECTIONS"
+
+#: script.cc:3277
+msgid "unknown PHDR type (try integer)"
+msgstr "невідомий тип PHDR (Ñпробуємо викориÑтати цілий)"
+
+#: script.cc:3296
+#, c-format
+msgid "%s:%d:%d: MEMORY region '%.*s' referred to outside of SECTIONS clause"
+msgstr "%s:%d:%d: облаÑÑ‚ÑŒ MEMORY «%.*s» поÑилаєтьÑÑ Ð·Ð° межі Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ SECTIONS"
+
+#: script.cc:3307
+#, c-format
+msgid "%s:%d:%d: MEMORY region '%.*s' not declared"
+msgstr "%s:%d:%d: облаÑÑ‚ÑŒ MEMORY «%.*s» не оголошено"
+
+#: script.cc:3352
+msgid "unknown MEMORY attribute"
+msgstr "невідомий атрибут MEMORY"
+
+#: script.cc:3382
+#, c-format
+msgid "undefined memory region '%s' referenced in ORIGIN expression"
+msgstr "не визначено облаÑÑ‚ÑŒ пам’ÑÑ‚Ñ– «%s», на Ñку поÑилаєтьÑÑ Ð²Ð¸Ñ€Ð°Ð· ORIGIN"
+
+#: script.cc:3401
+#, c-format
+msgid "undefined memory region '%s' referenced in LENGTH expression"
+msgstr "невизначено облаÑÑ‚ÑŒ пам’ÑÑ‚Ñ– «%s», на Ñку поÑилаєтьÑÑ Ð²Ð¸Ñ€Ð°Ð· LENGTH"
+
+#: sparc.cc:4326
+#, c-format
+msgid "%s: little endian elf flag set on BE object"
+msgstr "%s: вÑтановлено прапорець прÑмого порÑдку байтів elf Ð´Ð»Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° BE"
+
+#: sparc.cc:4329
+#, c-format
+msgid "%s: little endian elf flag clear on LE object"
+msgstr "%s: знÑто прапорець прÑмого порÑдку байтів elf Ð´Ð»Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° LE"
+
+#: stringpool.cc:510
+#, c-format
+msgid "%s: %s entries: %zu; buckets: %zu\n"
+msgstr "%s: запиÑів %s: %zu; блоків: %zu\n"
+
+#: stringpool.cc:514
+#, c-format
+msgid "%s: %s entries: %zu\n"
+msgstr "%s: запиÑів %s: %zu\n"
+
+#: stringpool.cc:517
+#, c-format
+msgid "%s: %s Stringdata structures: %zu\n"
+msgstr "%s: %s Ñтруктури даних Ñ€Ñдків: %zu\n"
+
+#: symtab.cc:374
+#, c-format
+msgid "Cannot export local symbol '%s'"
+msgstr "Ðе вдалоÑÑ ÐµÐºÑпортувати локальний Ñимвол «%s»"
+
+#: symtab.cc:904
+#, c-format
+msgid "%s: reference to %s"
+msgstr "%s: поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° %s"
+
+#: symtab.cc:906
+#, c-format
+msgid "%s: definition of %s"
+msgstr "%s: Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s"
+
+#: symtab.cc:1104
+#, c-format
+msgid "bad global symbol name offset %u at %zu"
+msgstr "помилковий відÑтуп назви загального Ñимволу %u у %zu"
+
+#: symtab.cc:1358
+msgid "--just-symbols does not make sense with a shared object"
+msgstr "--just-symbols не має ÑенÑу Ð´Ð»Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñпільного викориÑтаннÑ"
+
+#: symtab.cc:1369
+msgid "too few symbol versions"
+msgstr "занадто мало верÑій Ñимволів"
+
+#: symtab.cc:1418
+#, c-format
+msgid "bad symbol name offset %u at %zu"
+msgstr "помилковий відÑтуп назви Ñимволу %u у %zu"
+
+#: symtab.cc:1481
+#, c-format
+msgid "versym for symbol %zu out of range: %u"
+msgstr "versym Ð´Ð»Ñ Ñимволу %zu поза межами діапазону: %u"
+
+#: symtab.cc:1489
+#, c-format
+msgid "versym for symbol %zu has no name: %u"
+msgstr "versym Ð´Ð»Ñ Ñимволу %zu не має назви: %u"
+
+#: symtab.cc:2742 symtab.cc:2881
+#, c-format
+msgid "%s: unsupported symbol section 0x%x"
+msgstr "%s: непідтримуваний розділ Ñимволів 0x%x"
+
+#: symtab.cc:3155
+#, c-format
+msgid "%s: symbol table entries: %zu; buckets: %zu\n"
+msgstr "%s: запиÑів таблиці Ñимволів: %zu; блоків: %zu\n"
+
+#: symtab.cc:3158
+#, c-format
+msgid "%s: symbol table entries: %zu\n"
+msgstr "%s: запиÑів таблиці Ñимволів: %zu\n"
+
+#: symtab.cc:3310
+#, c-format
+msgid "while linking %s: symbol '%s' defined in multiple places (possible ODR violation):"
+msgstr "під Ñ‡Ð°Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ %s: Ñимвол «%s» визначено у декількох міÑцÑÑ… (можливе Ð¿Ð¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ ODR):"
+
+#: symtab.cc:3319 symtab.cc:3322
+#, c-format
+msgid " %s from %s\n"
+msgstr " %s з %s\n"
+
+#: target-reloc.h:163
+msgid "internal"
+msgstr "внутрішнє"
+
+#: target-reloc.h:166
+msgid "hidden"
+msgstr "приховане"
+
+#: target-reloc.h:169
+msgid "protected"
+msgstr "захищене"
+
+#: target-reloc.h:174
+#, c-format
+msgid "%s symbol '%s' is not defined locally"
+msgstr "Символ %s «%s» не визначено локально"
+
+#: target-reloc.h:414
+#, c-format
+msgid "reloc has bad offset %zu"
+msgstr "переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð°Ñ” помилковий відÑтуп %zu"
+
+#: target.cc:170
+#, c-format
+msgid "linker does not include stack split support required by %s"
+msgstr "у компонувальник не включено підтримку поділу Ñтека, потрібну Ð´Ð»Ñ %s"
+
+#: tilegx.cc:2074 x86_64.cc:1244
+msgid "out of patch space (PLT); relink with --incremental-full"
+msgstr "вихід за межі латки (PLT); виконайте повторне ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° допомогою --incremental-full"
+
+#: tilegx.cc:2724 x86_64.cc:1871
+msgid "TLS_DESC not yet supported for incremental linking"
+msgstr "у нарощувальному компонуванні ще не передбачено підтримки TLS_DESC"
+
+#: tilegx.cc:2779
+msgid "TLS_DESC not yet supported for TILEGX"
+msgstr "у TILEGX ще не передбачено підтримки TLS_DESC"
+
+#: tilegx.cc:3188 x86_64.cc:2257
+#, c-format
+msgid "requires unsupported dynamic reloc %u; recompile with -fPIC"
+msgstr "потребує непідтримуваного динамічного переÑÑƒÐ²Ð°Ð½Ð½Ñ %u; зберіть повторно з -fPIC"
+
+#: tls.h:59
+msgid "TLS relocation out of range"
+msgstr "ПереÑÑƒÐ²Ð°Ð½Ð½Ñ TLS за межі діапазону"
+
+#: tls.h:73
+msgid "TLS relocation against invalid instruction"
+msgstr "ПереÑÑƒÐ²Ð°Ð½Ð½Ñ TLS щодо некоректної інÑтрукції"
+
+#. This output is intended to follow the GNU standards.
+#: version.cc:66
+#, c-format
+msgid "Copyright 2014 Free Software Foundation, Inc.\n"
+msgstr "© Free Software Foundation, Inc., 2014\n"
+
+#: version.cc:67
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) a later version.\n"
+"This program has absolutely no warranty.\n"
+msgstr ""
+"Ð¦Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° вільною; ви можете розповÑюджувати Ñ—Ñ— за умов Ð´Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÑƒÐ¼Ð¾Ð²\n"
+"GNU General Public License верÑÑ–Ñ— 3 або (Ñкщо хочете) будь-Ñкої пізнішої\n"
+"верÑÑ–Ñ—.\n"
+"Ðвторами цієї програми не надаєтьÑÑ Ð¶Ð¾Ð´Ð½Ð¸Ñ… гарантій.\n"
+
+#: workqueue-threads.cc:106
+#, c-format
+msgid "%s failed: %s"
+msgstr "Помилка %s: %s"
+
+#: x86_64.cc:2222
+msgid "requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC"
+msgstr "потребує динамічного переÑÑƒÐ²Ð°Ð½Ð½Ñ R_X86_64_32, Ñке може призвеÑти до Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸; зберіть повторно з параметром -fPIC"
+
+#: x86_64.cc:2242
+#, c-format
+msgid "requires dynamic %s reloc against '%s' which may overflow at runtime; recompile with -fPIC"
+msgstr "потребує динамічного переÑÑƒÐ²Ð°Ð½Ð½Ñ %s щодо «%s», що може призвеÑти до Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸; зберіть повторно з параметром -fPIC"
+
+#: x86_64.cc:3776
+#, c-format
+msgid "unsupported reloc type %u"
+msgstr "непідтримуваний тип переÑÑƒÐ²Ð°Ð½Ð½Ñ %u"
+
+#: x86_64.cc:4211
+#, c-format
+msgid "unsupported reloc %u against local symbol"
+msgstr "непідтримуване переÑÑƒÐ²Ð°Ð½Ð½Ñ %u щодо локального Ñимволу"
+
+#~ msgid "relocation R_ARM_MOVW_ABS_NC cannot be used when makinga shared object; recompile with -fPIC"
+#~ msgstr "переÑÑƒÐ²Ð°Ð½Ð½Ñ R_ARM_MOVW_ABS_NC не можна викориÑтовувати під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñпільного викориÑтаннÑ; виконайте повторне Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð· -fPIC"
+
+#~ msgid "relocation R_ARM_MOVT_ABS cannot be used when makinga shared object; recompile with -fPIC"
+#~ msgstr "переÑÑƒÐ²Ð°Ð½Ð½Ñ R_ARM_MOVT_ABS не можна викориÑтовувати під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñпільного викориÑтаннÑ; виконайте повторне Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð· -fPIC"
+
+#~ msgid "relocation R_ARM_THM_MOVW_ABS_NC cannot be used whenmaking a shared object; recompile with -fPIC"
+#~ msgstr "переÑÑƒÐ²Ð°Ð½Ð½Ñ R_ARM_THM_MOVW_ABS_NC не можна викориÑтовувати під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñпільного викориÑтаннÑ; виконайте повторне Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð· -fPIC"
+
+#~ msgid "relocation R_ARM_THM_MOVT_ABS cannot be used whenmaking a shared object; recompile with -fPIC"
+#~ msgstr "переÑÑƒÐ²Ð°Ð½Ð½Ñ R_ARM_THM_MOVT_ABS не можна викориÑтовувати під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñпільного викориÑтаннÑ; виконайте повторне Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð· -fPIC"
+
+#~ msgid "cannot find origin of R_ARM_BASE_PREL"
+#~ msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ð¾Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ R_ARM_BASE_PREL"
+
+#~ msgid "cannot find origin of R_ARM_BASE_ABS"
+#~ msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ð¾Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ R_ARM_BASE_ABS"
+
+#~ msgid "%s: %s: error: "
+#~ msgstr "%s: %s: помилка: "
+
+#~ msgid "%s: %s: warning: "
+#~ msgstr "%s: %s: попередженнÑ: "
+
+#~ msgid "SEGMENT_START not implemented"
+#~ msgstr "SEGMENT_START не реалізовано"
+
+#~ msgid "ORIGIN not implemented"
+#~ msgstr "ORIGIN не реалізовано"
+
+#~ msgid "LENGTH not implemented"
+#~ msgstr "LENGTH не реалізовано"
+
+#~ msgid "%s: mmap offset %lld size %lld failed: %s"
+#~ msgstr "%s: помилка під Ñ‡Ð°Ñ Ñпроби виконати mmap зі зÑувом %lld, розмір %lld: %s"
+
+#~ msgid "invalid incremental build data"
+#~ msgstr "некоректні дані оновлюваного попереднього збираннÑ"
+
+#~ msgid "Work in progress; do not use"
+#~ msgstr "ще не працює, не кориÑтуйтеÑÑ"
+
+#~ msgid "[file]"
+#~ msgstr "[файл]"
+
+#~ msgid "nobits section %s may not precede progbits section %s in same segment"
+#~ msgstr "розділ nobits %s не може передувати розділу progbits %s у межах одного Ñегмента"
diff --git a/gold/po/vi.po b/gold/po/vi.po
index fadc16f..3fd7f69 100644
--- a/gold/po/vi.po
+++ b/gold/po/vi.po
@@ -1,26 +1,25 @@
# Vietnamese translation for Gold.
-# Copyright © 2010 Free Software Foundation, Inc.
+# Copyright © 2013 Free Software Foundation, Inc.
# This file is distributed under the same license as the binutils package.
# Clytie Siddall <clytie@riverland.net.au>, 2010.
-# Trần Ngá»c Quân <vnwildman@gmail.com>, 2012.
+# Trần Ngá»c Quân <vnwildman@gmail.com>, 2012-2013.
#
msgid ""
msgstr ""
-"Project-Id-Version: gold-2.22.90\n"
+"Project-Id-Version: gold-2.23.2\n"
"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
"POT-Creation-Date: 2010-03-03 15:08+0100\n"
-"PO-Revision-Date: 2012-07-28 13:41+0700\n"
+"PO-Revision-Date: 2013-06-03 14:37+0700\n"
"Last-Translator: Trần Ngá»c Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
"Language: vi\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: LocFactoryEditor 1.8\n"
-"X-Poedit-Language: Vietnamese\n"
-"X-Poedit-Country: VIET NAM\n"
-"X-Poedit-SourceCharset: utf-8\n"
+"X-Generator: Poedit 1.5.5\n"
+"X-Poedit-SourceCharset: UTF-8\n"
#: archive.cc:119
#, c-format
@@ -65,22 +64,22 @@ msgstr "%s: phần đầu kho lưu ngắn tại %zu"
#: archive.cc:560
#, c-format
msgid "%s: member at %zu is not an ELF object"
-msgstr "%s: bộ phạn tại %zu không phải là đối tượng ELF"
+msgstr "%s: bộ phận tại %zu không phải là đối tượng ELF"
#: archive.cc:879
#, c-format
msgid "%s: archive libraries: %u\n"
-msgstr "%s: thư viện kho lưu : %u\n"
+msgstr "%s: thư viện kho lưu: %u\n"
#: archive.cc:881
#, c-format
msgid "%s: total archive members: %u\n"
-msgstr "%s: tổng bộ phạn kho lưu : %u\n"
+msgstr "%s: tổng thành viên kho lưu: %u\n"
#: archive.cc:883
#, c-format
msgid "%s: loaded archive members: %u\n"
-msgstr "%s: đã nạp bộ phạn kho lưu : %u\n"
+msgstr "%s: đã nạp thành viên kho lưu: %u\n"
#: arm.cc:1149 i386.cc:536 sparc.cc:1087 x86_64.cc:565
msgid "** PLT"
@@ -94,7 +93,7 @@ msgstr "%s: sự định vị lại không được hỗ trợ %u so với ký h
#: arm.cc:1404 powerpc.cc:1105 sparc.cc:1592 x86_64.cc:992
msgid "requires unsupported dynamic reloc; recompile with -fPIC"
-msgstr "yêu cầu sá»± định vị lại Ä‘á»™ng không được há»— trợ — hãy biên dịch lại vá»›i các tuỳ chá»n \"-fPIC\""
+msgstr "yêu cầu sá»± định vị lại Ä‘á»™ng không được há»— trợ — hãy biên dịch lại vá»›i các tuỳ chá»n “-fPICâ€"
#. These are relocations which should only be seen by the
#. dynamic linker, and should never be seen here.
@@ -118,27 +117,27 @@ msgstr "%s: phần định vị lại RELA không được hỗ trợ"
#: arm.cc:2047
msgid "relocation R_ARM_MOVW_ABS_NC cannot be used when makinga shared object; recompile with -fPIC"
-msgstr "sự định vị lại \"R_ARM_MOVW_ABS_NC\" không thể sử dụng được khi tạo một đối tượng dùng chung: hãy biên dịch lại với \"-fPIC\""
+msgstr "sá»± định vị lại “R_ARM_MOVW_ABS_NC†không thể sá»­ dụng được khi tạo má»™t đối tượng dùng chung: hãy biên dịch lại vá»›i “-fPICâ€"
#: arm.cc:2056
msgid "relocation R_ARM_MOVT_ABS cannot be used when makinga shared object; recompile with -fPIC"
-msgstr "sự định vị lại \"R_ARM_MOVT_ABS\" không thể sử dụng được khi tạo một đối tượng dùng chung: hãy biên dịch lại với \"-fPIC\""
+msgstr "sá»± định vị lại “R_ARM_MOVT_ABS†không thể sá»­ dụng được khi tạo má»™t đối tượng dùng chung: hãy biên dịch lại vá»›i “-fPICâ€"
#: arm.cc:2067
msgid "relocation R_ARM_THM_MOVW_ABS_NC cannot be used whenmaking a shared object; recompile with -fPIC"
-msgstr "sự định vị lại \"R_ARM_THM_MOVW_ABS_NC\" không thể sử dụng được khi tạo một đối tượng dùng chung: hãy biên dịch lại với \"-fPIC\""
+msgstr "sá»± định vị lại “R_ARM_THM_MOVW_ABS_NC†không thể sá»­ dụng được khi tạo má»™t đối tượng dùng chung: hãy biên dịch lại vá»›i “-fPICâ€"
#: arm.cc:2077
msgid "relocation R_ARM_THM_MOVT_ABS cannot be used whenmaking a shared object; recompile with -fPIC"
-msgstr "sự định vị lại \"R_ARM_THM_MOVT_ABS\" không thể sử dụng được khi tạo một đối tượng dùng chung: hãy biên dịch lại với \"-fPIC\""
+msgstr "sá»± định vị lại “R_ARM_THM_MOVT_ABS†không thể sá»­ dụng được khi tạo má»™t đối tượng dùng chung: hãy biên dịch lại vá»›i “-fPICâ€"
#: arm.cc:2141
msgid "cannot find origin of R_ARM_BASE_PREL"
-msgstr "không tìm thấy gốc của \"R_ARM_BASE_PREL\""
+msgstr "không tìm thấy gốc của “R_ARM_BASE_PRELâ€"
#: arm.cc:2169
msgid "cannot find origin of R_ARM_BASE_ABS"
-msgstr "không tìm thấy gốc của \"R_ARM_BASE_ABS\""
+msgstr "không tìm thấy gốc của “R_ARM_BASE_ABSâ€"
#: arm.cc:2230 i386.cc:1820 i386.cc:2521 powerpc.cc:1798 sparc.cc:2711
#: x86_64.cc:1935 x86_64.cc:2518
@@ -185,7 +184,7 @@ msgstr "không thể mở tập tin đếm ký hiệu %s: %s"
#: descriptors.cc:116
#, c-format
msgid "file %s was removed during the link"
-msgstr "tập tin \"%s\" bị gỡ bỠtrong khi liên kết"
+msgstr "tập tin “%s†bị gỡ bỠtrong khi liên kết"
#: descriptors.cc:169
msgid "out of file descriptors and couldn't close any"
@@ -228,16 +227,16 @@ msgstr "liên kết phần ÄỘNG %u %u không phải strtab"
#: dynobj.cc:273
#, c-format
msgid "DT_SONAME value out of range: %lld >= %lld"
-msgstr "giá trị \"DT_SONAME\" ở ngoại phạm vi: %lld ≥ %lld"
+msgstr "giá trị “DT_SONAME†ở ngoại phạm vi: %lld ≥ %lld"
#: dynobj.cc:285
#, c-format
msgid "DT_NEEDED value out of range: %lld >= %lld"
-msgstr "giá trị \"DT_NEEDED\" ở ngoại phạm vi: %lld ≥ %lld"
+msgstr "giá trị “DT_NEEDED†ở ngoại phạm vi: %lld ≥ %lld"
#: dynobj.cc:298
msgid "missing DT_NULL in dynamic segment"
-msgstr "thiếu \"DT_NULL\" trong phân đoạn động"
+msgstr "thiếu “DT_NULL†trong phân đoạn động"
#: dynobj.cc:344
#, c-format
@@ -257,7 +256,7 @@ msgstr "sai đặt khoảng bù tên phần cho phần %u: %lu"
#: dynobj.cc:468
#, c-format
msgid "duplicate definition for version %u"
-msgstr "gặp lá»i xác định trùng cho phiên bản %u"
+msgstr "định nghĩa bị trùng cho phiên bản %u"
#: dynobj.cc:497
#, c-format
@@ -267,22 +266,22 @@ msgstr "gặp phiên bản verdef không mong đợi %u"
#: dynobj.cc:513
#, c-format
msgid "verdef vd_cnt field too small: %u"
-msgstr "trÆ°á»ng \"vd_cnt\" verdef quá nhá» : %u"
+msgstr "trÆ°á»ng “vd_cnt†verdef quá nhá»: %u"
#: dynobj.cc:521
#, c-format
msgid "verdef vd_aux field out of range: %u"
-msgstr "trÆ°á»ng \"vd_aux\" verdef ở ngoại phạm vi: %u"
+msgstr "trÆ°á»ng “vd_aux†verdef ở ngoại phạm vi: %u"
#: dynobj.cc:532
#, c-format
msgid "verdaux vda_name field out of range: %u"
-msgstr "trÆ°á»ng \"vda_name\" verdef ở ngoại phạm vi: %u"
+msgstr "trÆ°á»ng “vda_name†verdef ở ngoại phạm vi: %u"
#: dynobj.cc:542
#, c-format
msgid "verdef vd_next field out of range: %u"
-msgstr "trÆ°á»ng \"vd_next\" verdef ở ngoại phạm vi: %u"
+msgstr "trÆ°á»ng “vd_next†verdef ở ngoại phạm vi: %u"
#: dynobj.cc:576
#, c-format
@@ -292,22 +291,22 @@ msgstr "gặp phiên bản verneed không mong đợi %u"
#: dynobj.cc:585
#, c-format
msgid "verneed vn_aux field out of range: %u"
-msgstr "trÆ°á»ng \"vn_aux\" verneed ở ngoại phạm vi: %u"
+msgstr "trÆ°á»ng “vn_aux†verneed ở ngoại phạm vi: %u"
#: dynobj.cc:599
#, c-format
msgid "vernaux vna_name field out of range: %u"
-msgstr "trÆ°á»ng \"vna_name\" vernaux ở ngoại phạm vi: %u"
+msgstr "trÆ°á»ng “vna_name†vernaux ở ngoại phạm vi: %u"
#: dynobj.cc:610
#, c-format
msgid "verneed vna_next field out of range: %u"
-msgstr "trÆ°á»ng \"vna_next\" verneed ở ngoại phạm vi: %u"
+msgstr "trÆ°á»ng “vna_next†verneed ở ngoại phạm vi: %u"
#: dynobj.cc:621
#, c-format
msgid "verneed vn_next field out of range: %u"
-msgstr "trÆ°á»ng \"vn_next\" verneed ở ngoại phạm vi: %u"
+msgstr "trÆ°á»ng “vn_next†verneed ở ngoại phạm vi: %u"
#: dynobj.cc:670
msgid "size of dynamic symbols is not multiple of symbol size"
@@ -316,7 +315,7 @@ msgstr "kích cỡ của ký hiệu động không phải là bội số cho kí
#: dynobj.cc:1435
#, c-format
msgid "symbol %s has undefined version %s"
-msgstr "ký hiệu %s có phiên bản chưa được xác định %s"
+msgstr "ký hiệu %s có phiên bản chưa được định nghĩa %s"
#: ehframe.h:82
msgid "** eh_frame_hdr"
@@ -339,7 +338,7 @@ msgstr "%s: lá»—i: "
#: errors.cc:104
#, c-format
msgid "%s: warning: "
-msgstr "%s: cảnh báo : "
+msgstr "%s: cảnh báo: "
#: errors.cc:128
#, c-format
@@ -349,17 +348,17 @@ msgstr "%s: %s: lá»—i: "
#: errors.cc:144
#, c-format
msgid "%s: %s: warning: "
-msgstr "%s: %s: cảnh báo : "
+msgstr "%s: %s: cảnh báo: "
#: errors.cc:167
#, c-format
msgid "%s: %s: error: undefined reference to '%s'\n"
-msgstr "%s: %s: lỗi: tham chiếu chưa xác định đến \"%s\"\n"
+msgstr "%s: %s: lá»—i: tham chiếu chÆ°a định nghÄ©a đến “%sâ€\n"
#: errors.cc:172
#, c-format
msgid "%s: %s: error: undefined reference to '%s', version '%s'\n"
-msgstr "%s: %s: lỗi: tham chiếu chưa xác định đến \"%s\", phiên bản \"%s\"\n"
+msgstr "%s: %s: lá»—i: tham chiếu chÆ°a định nghÄ©a đến “%sâ€, phiên bản “%sâ€\n"
#: errors.cc:182
#, c-format
@@ -369,7 +368,7 @@ msgstr "%s: "
#: expression.cc:172
#, c-format
msgid "undefined symbol '%s' referenced in expression"
-msgstr "ký hiệu chưa xác định \"%s\" được tham chiếu trong biểu thức"
+msgstr "ký hiệu chưa được định nghĩa “%s†được tham chiếu trong biểu thức"
#: expression.cc:209
msgid "invalid reference to dot symbol outside of SECTIONS clause"
@@ -416,15 +415,15 @@ msgstr "không rõ hằng số %s"
#: expression.cc:1126
msgid "SEGMENT_START not implemented"
-msgstr "\"SEGMENT_START\" (đầu đoạn) chưa được thực hiện"
+msgstr "“SEGMENT_START†(đầu đoạn) chưa được thực hiện"
#: expression.cc:1135
msgid "ORIGIN not implemented"
-msgstr "\"ORIGIN\" (gốc) chưa được thực hiện"
+msgstr "“ORIGIN†(gốc) chưa được thực hiện"
#: expression.cc:1141
msgid "LENGTH not implemented"
-msgstr "\"LENGTH\" (chiá»u dài) chÆ°a được thá»±c hiện"
+msgstr "“LENGTH†(chiá»u dài) chÆ°a được thá»±c hiện"
#: fileread.cc:65
#, c-format
@@ -459,7 +458,7 @@ msgstr "%s: việc thử ánh xạ %lld byte đẳng sau khoảng bù %lld cũng
#: fileread.cc:402
#, c-format
msgid "%s: mmap offset %lld size %lld failed: %s"
-msgstr "%s: khoảng bù sơ đồ vùng nhớ (mmap) %lld kích cỡ %lld bị lỗi: %s"
+msgstr "%s: khoảng bù ánh xạ vùng nhớ (mmap) %lld kích cỡ %lld bị lỗi: %s"
#: fileread.cc:548
#, c-format
@@ -509,22 +508,22 @@ msgstr "không thể mở %s: %s"
#: gold-threads.cc:103
#, c-format
msgid "pthead_mutextattr_init failed: %s"
-msgstr "pthead_mutextattr_init bị lỗi: %s"
+msgstr "pthead_mutextattr_init gặp lỗi: %s"
#: gold-threads.cc:107
#, c-format
msgid "pthread_mutextattr_settype failed: %s"
-msgstr "pthread_mutextattr_settype bị lỗi: %s"
+msgstr "pthread_mutextattr_settype gặp lỗi: %s"
#: gold-threads.cc:112
#, c-format
msgid "pthread_mutex_init failed: %s"
-msgstr "pthread_mutex_init bị lỗi: %s"
+msgstr "pthread_mutex_init gặp lỗi: %s"
#: gold-threads.cc:116
#, c-format
msgid "pthread_mutexattr_destroy failed: %s"
-msgstr "pthread_mutexattr_destroy bị lỗi: %s"
+msgstr "pthread_mutexattr_destroy gặp lỗi: %s"
#: gold-threads.cc:123
#, c-format
@@ -582,17 +581,17 @@ msgstr "không có tập tin nhập vào"
#: gold.cc:226
msgid "cannot mix -r with --gc-sections or --icf"
-msgstr "không thể kết hợp tuỳ chá»n \"-r\" vá»›i \"--gc-sections\", cÅ©ng không thể kết hợp nó vá»›i \"--icf\""
+msgstr "không thể kết hợp tuỳ chá»n “-r†vá»›i “--gc-sectionsâ€, cÅ©ng không thể kết hợp nó vá»›i “--icfâ€"
#: gold.cc:407
#, c-format
msgid "cannot mix -static with dynamic object %s"
-msgstr "không thể kết hợp tuỳ chá»n \"-static\" (tÄ©nh) vá»›i đối tượng Ä‘á»™ng %s"
+msgstr "không thể kết hợp tuỳ chá»n “-static†(tÄ©nh) vá»›i đối tượng Ä‘á»™ng %s"
#: gold.cc:411
#, c-format
msgid "cannot mix -r with dynamic object %s"
-msgstr "không thể kết hợp tuỳ chá»n \"-r\" vá»›i đối tượng Ä‘á»™ng %s"
+msgstr "không thể kết hợp tuỳ chá»n “-r†vá»›i đối tượng Ä‘á»™ng %s"
#: gold.cc:415
#, c-format
@@ -602,7 +601,7 @@ msgstr "không thể sá»­ dụng định dạng kết xuất khác ELF vá»›i Ä‘á
#: gold.cc:427
#, c-format
msgid "cannot mix split-stack '%s' and non-split-stack '%s' when using -r"
-msgstr "không thể kết hợp đống chia ra \"%s\" và đống không chia ra \"%s\" khi sá»­ dụng tuỳ chá»n \"-r\""
+msgstr "không thể kết hợp đống chia ra “%s†và đống không chia ra “%s†khi sá»­ dụng tuỳ chá»n “-râ€"
#. FIXME: This needs to specify the location somehow.
#: i386.cc:232 i386.cc:1669 sparc.cc:234 sparc.cc:2395 x86_64.cc:237
@@ -676,19 +675,19 @@ msgstr "kết xuất không phải là một tập tin ELF."
#: incremental.cc:410
msgid "unsupported file: 32-bit, big-endian"
-msgstr "tập tin không được hỗ trợ : 32-bit vỠcuối lớn"
+msgstr "tập tin không được hỗ trợ: 32-bit vỠcuối lớn"
#: incremental.cc:419
msgid "unsupported file: 32-bit, little-endian"
-msgstr "tập tin không được há»— trợ : 32-bit vá» cuối nhá»"
+msgstr "tập tin không được há»— trợ: 32-bit vá» cuối nhá»"
#: incremental.cc:431
msgid "unsupported file: 64-bit, big-endian"
-msgstr "tập tin không được hỗ trợ : 64-bit vỠcuối lớn"
+msgstr "tập tin không được hỗ trợ: 64-bit vỠcuối lớn"
#: incremental.cc:440
msgid "unsupported file: 64-bit, little-endian"
-msgstr "tập tin không được há»— trợ : 64-bit vá» cuối nhá»"
+msgstr "tập tin không được há»— trợ: 64-bit vá» cuối nhá»"
#: layout.cc:1887
#, c-format
@@ -708,27 +707,27 @@ msgstr "/dev/urandom: mong đợi %zu byte, còn nhận %zd byte"
#: layout.cc:1918
#, c-format
msgid "--build-id argument '%s' not a valid hex number"
-msgstr "đối số mã số xây dựng «--build-id\" \"%s\" không phải một số thập lục đúng"
+msgstr "đối số mã số xây dựng “--build-id†“%s†không phải một số thập lục đúng"
#: layout.cc:1924
#, c-format
msgid "unrecognized --build-id argument '%s'"
-msgstr "không nhận ra đối số mã số xây dựng «--build-id\" \"%s\""
+msgstr "không nhận ra đối số mã số xây dá»±ng “--build-id†“%sâ€"
#: layout.cc:2337
#, c-format
msgid "load segment overlap [0x%llx -> 0x%llx] and [0x%llx -> 0x%llx]"
-msgstr "đoạn nạp chồng lấp [0x%llx -> 0x%llx] và [0x%llx -> 0x%llx]"
+msgstr "đoạn nạp chồng đè lên nhau [0x%llx -> 0x%llx] và [0x%llx -> 0x%llx]"
#: mapfile.cc:70
#, c-format
msgid "cannot open map file %s: %s"
-msgstr "không thể mở tập tin sơ đồ %s: %s"
+msgstr "không thể mở tập tin ánh xạ %s: %s"
#: mapfile.cc:84
#, c-format
msgid "cannot close map file: %s"
-msgstr "không thể đóng tập tin sơ đồ : %s"
+msgstr "không thể đóng tập tin ánh xạ: %s"
#: mapfile.cc:116
#, c-format
@@ -736,7 +735,7 @@ msgid ""
"Archive member included because of file (symbol)\n"
"\n"
msgstr ""
-"Gồm bộ phạn kho lưu do tập tin (ký hiệu)\n"
+"Gồm bộ phận kho lưu do tập tin (ký hiệu)\n"
"\n"
#: mapfile.cc:159
@@ -754,7 +753,7 @@ msgid ""
"Common symbol size file\n"
"\n"
msgstr ""
-"Ký hiệu chung kích cỡ tập tin\n"
+"Ký hiệu chung kích cỡ tập tin\n"
"\n"
#: mapfile.cc:195
@@ -765,7 +764,7 @@ msgid ""
"\n"
msgstr ""
"\n"
-"Sơ đồ vùng nhớ\n"
+"Ãnh xạ bá»™ nhá»›\n"
"\n"
#: mapfile.cc:361
@@ -791,7 +790,7 @@ msgstr "chiá»u dài phần chuá»—i có thể gá»™p lại không phải là bá»™
#: merge.cc:494
#, c-format
msgid "%s: last entry in mergeable string section '%s' not null terminated"
-msgstr "%s: phần chuỗi có thể gộp lại chứa mục nhập cuối cùng \"%s\" không phải chấm dứt vô giá trị"
+msgstr "%s: phần chuỗi có thể gộp lại chứa mục nhập cuối cùng “%s†không phải chấm dứt vô giá trị"
#: merge.cc:613
#, c-format
@@ -808,12 +807,12 @@ msgstr "** chuỗi gộp lại"
#: object.cc:75
msgid "missing SHT_SYMTAB_SHNDX section"
-msgstr "thiếu phần \"SHT_SYMTAB_SHNDX\""
+msgstr "thiếu phần “SHT_SYMTAB_SHNDXâ€"
#: object.cc:119
#, c-format
msgid "symbol %u out of range for SHT_SYMTAB_SHNDX section"
-msgstr "ký hiệu %u ở ngoại phạm vi cho phần \"SHT_SYMTAB_SHNDX\""
+msgstr "ký hiệu %u ở ngoại phạm vi cho phần “SHT_SYMTAB_SHNDXâ€"
#: object.cc:126
#, c-format
@@ -833,7 +832,7 @@ msgstr "phần tên phần có kiểu sai: %u"
#: object.cc:546
#, c-format
msgid "invalid symbol table name index: %u"
-msgstr "sai đặt chỉ mục tên bảng ký hiệu : %u"
+msgstr "sai đặt chỉ mục tên bảng ký hiệu: %u"
#: object.cc:552
#, c-format
@@ -873,12 +872,12 @@ msgstr "phần định vị lại %u có thông tin sai %u"
#: object.cc:1231
#, c-format
msgid "%s: removing unused section from '%s' in file '%s'"
-msgstr "%s: Ä‘ang gỡ bá» phần không dùng khá»i \"%s\" trong tập tin \"%s\""
+msgstr "%s: Ä‘ang gỡ bá» phần không dùng khá»i “%s†trong tập tin “%sâ€"
#: object.cc:1257
#, c-format
msgid "%s: ICF folding section '%s' in file '%s'into '%s' in file '%s'"
-msgstr "%s: ICF đang gấp phần \"%s\" trong tập tin \"%s\" vào \"%s\" trong tập tin \"%s\""
+msgstr "%s: ICF Ä‘ang gấp phần “%s†trong tập tin “%s†vào “%s†trong tập tin “%sâ€"
#: object.cc:1454
msgid "size of symbols is not multiple of symbol size"
@@ -940,15 +939,15 @@ msgid ""
"Usage: %s [options] file...\n"
"Options:\n"
msgstr ""
-"Sá»­ dụng: %s [tùy_chá»n ...] tệp...\n"
-"Tùy chá»n:\n"
+"Cách dùng: %s [các_tùy_chá»n] tệp...\n"
+"Các tùy chá»n:\n"
#. config.guess and libtool.m4 look in ld --help output for the
#. string "supported targets".
#: options.cc:164
#, c-format
msgid "%s: supported targets:"
-msgstr "%s: đích được hỗ trợ :"
+msgstr "%s: đích được hỗ trợ:"
#: options.cc:176
#, c-format
@@ -978,7 +977,7 @@ msgstr "%s: phải nhận một của những đối số theo đây: %s"
#: options.cc:300
#, c-format
msgid " Supported targets:\n"
-msgstr " Äích được há»— trợ :\n"
+msgstr " Äích được há»— trợ:\n"
#: options.cc:409
#, c-format
@@ -998,12 +997,12 @@ msgstr "không thể phân tích cú pháp của tập tin văn lệnh danh sác
#: options.cc:522
#, c-format
msgid "format '%s' not supported; treating as elf (supported formats: elf, binary)"
-msgstr "định dạng \"%s\" không được hỗ trợ nên xử lý như là ELF (định dạng được hỗ trợ : elf, nhị phân)"
+msgstr "định dạng “%s†không được hỗ trợ nên xử lý như là ELF (định dạng được hỗ trợ: elf, nhị phân)"
#: options.cc:538
#, c-format
msgid "%s: use the --help option for usage information\n"
-msgstr "%s: hãy sá»­ dụng tùy chá»n trợ giúp \"--help\" để xem thông tin vá» cách sá»­ dụng\n"
+msgstr "%s: hãy sá»­ dụng tùy chá»n trợ giúp “--help†để xem thông tin vá» cách sá»­ dụng\n"
#: options.cc:547
#, c-format
@@ -1020,17 +1019,17 @@ msgstr "thiếu đối số"
#: options.cc:736
msgid "unknown -z option"
-msgstr "tùy chá»n không rõ \"-z\""
+msgstr "tùy chá»n không rõ “-zâ€"
#: options.cc:935
#, c-format
msgid "ignoring --threads: %s was compiled without thread support"
-msgstr "Ä‘ang bá» qua tuỳ chá»n \"--threads\": %s đã được biên dịch mà không há»— trợ nhánh"
+msgstr "Ä‘ang bá» qua tuỳ chá»n “--threadsâ€: %s đã được biên dịch mà không há»— trợ nhánh"
#: options.cc:942
#, c-format
msgid "ignoring --thread-count: %s was compiled without thread support"
-msgstr "Ä‘ang bá» qua tuỳ chá»n \"--thread-count\": %s đã được biên dịch mà không há»— trợ nhánh"
+msgstr "Ä‘ang bá» qua tuỳ chá»n “--thread-countâ€: %s đã được biên dịch mà không há»— trợ nhánh"
#: options.cc:981
#, c-format
@@ -1039,32 +1038,32 @@ msgstr "không thể mở tập tin giữ lại ký hiệu (-retain-symbols-file
#: options.cc:1003
msgid "-shared and -static are incompatible"
-msgstr "hai tùy chá»n \"-shared\" (dùng chung) và \"-static\" (tÄ©nh) không tÆ°Æ¡ng thích vá»›i nhau"
+msgstr "hai tùy chá»n “-shared†(dùng chung) và “-static†(tÄ©nh) không tÆ°Æ¡ng thích vá»›i nhau"
#: options.cc:1005
msgid "-shared and -pie are incompatible"
-msgstr "hai tùy chá»n \"-shared\" (dùng chung) và \"-pie\" không tÆ°Æ¡ng thích vá»›i nhau"
+msgstr "hai tùy chá»n “-shared†(dùng chung) và “-pie†không tÆ°Æ¡ng thích vá»›i nhau"
#: options.cc:1008
msgid "-shared and -r are incompatible"
-msgstr "hai tùy chá»n \"-shared\" (dùng chung) và \"-r\" không tÆ°Æ¡ng thích vá»›i nhau"
+msgstr "hai tùy chá»n “-shared†(dùng chung) và “-r†không tÆ°Æ¡ng thích vá»›i nhau"
#: options.cc:1010
msgid "-pie and -r are incompatible"
-msgstr "hai tùy chá»n \"-pie\" và \"-r\" không tÆ°Æ¡ng thích vá»›i nhau"
+msgstr "hai tùy chá»n “-pie†và “-r†không tÆ°Æ¡ng thích vá»›i nhau"
#: options.cc:1014
msgid "-retain-symbols-file does not yet work with -r"
-msgstr "tuỳ chá»n \"-retain-symbols-file\" chÆ°a hoạt Ä‘á»™ng cùng vá»›i \"-r\""
+msgstr "tuỳ chá»n “-retain-symbols-file†chÆ°a hoạt Ä‘á»™ng cùng vá»›i “-râ€"
#: options.cc:1020
msgid "binary output format not compatible with -shared or -pie or -r"
-msgstr "định dạng kết xuất nhị phân không tÆ°Æ¡ng thích vá»›i tuỳ chá»n \"-shared\" (dùng chung) hoặc \"-pie\" hoặc \"-r\""
+msgstr "định dạng kết xuất nhị phân không tÆ°Æ¡ng thích vá»›i tuỳ chá»n “-shared†(dùng chung) hoặc “-pie†hoặc “-râ€"
#: options.cc:1026
#, c-format
msgid "--hash-bucket-empty-fraction value %g out of range [0.0, 1.0)"
-msgstr "giá trị \"--hash-bucket-empty-fraction\" %g ở ngoại phạm vi [0.0, 1.0)"
+msgstr "giá trị “--hash-bucket-empty-fraction†%g ở ngoại phạm vi [0.0, 1.0)"
#: options.cc:1031
msgid "Options --incremental-changed, --incremental-unchanged, --incremental-unknown require the use of --incremental"
@@ -1073,7 +1072,7 @@ msgstr ""
" --incremental-changed (dần thay đổi)\n"
" --incremental-unchanged (dần không thay đổi)\n"
" --incremental-unknown (dần không rõ)\n"
-"thì yêu cầu lập tuỳ chá»n \"--incremental\" (dần)."
+"thì yêu cầu đặt tuỳ chá»n “--incremental†(dần)."
#: options.cc:1097
msgid "May not nest groups"
@@ -1111,7 +1110,7 @@ msgstr "Không được hỗ trợ"
#: options.h:585 options.h:636
msgid "Do not copy DT_NEEDED tags from shared libraries"
-msgstr "Äừng sao chép thẻ \"DT_NEEDED\" từ thÆ° viện dùng chung"
+msgstr "Äừng sao chép thẻ “DT_NEEDED†từ thÆ° viện dùng chung"
#: options.h:588
msgid "Allow unresolved references in shared libraries"
@@ -1123,31 +1122,31 @@ msgstr "Äừng cho phép tham chiếu chÆ°a tháo gỡ trong thÆ° viện dùng
#: options.h:592
msgid "Only set DT_NEEDED for shared libraries if used"
-msgstr "Chỉ lập thẻ \"DT_NEEDED\" cho thư viện dùng chung (nếu dùng)"
+msgstr "Chỉ đặt thẻ “DT_NEEDED†cho thư viện dùng chung (nếu dùng)"
#: options.h:593
msgid "Always DT_NEEDED for shared libraries"
-msgstr "Lúc nào cũng lập thẻ \"DT_NEEDED\" cho thư viện dùng chung"
+msgstr "Lúc nào cũng đặt thẻ “DT_NEEDED†cho thư viện dùng chung"
#: options.h:600
msgid "Set input format"
-msgstr "Lập định dạng đầu vào"
+msgstr "Äặt định dạng đầu vào"
#: options.h:603
msgid "-l searches for shared libraries"
-msgstr "tuỳ chá»n \"-l\" tìm kiếm thÆ° viện dùng chung"
+msgstr "tuỳ chá»n “-l†tìm kiếm thÆ° viện dùng chung"
#: options.h:605
msgid "-l does not search for shared libraries"
-msgstr "tuỳ chá»n \"-l\" không tìm kiếm thÆ° viện dùng chung"
+msgstr "tuỳ chá»n “-l†không tìm kiếm thÆ° viện dùng chung"
#: options.h:609
msgid "Bind defined symbols locally"
-msgstr "Tổ hợp cục bộ ký hiệu được xác định"
+msgstr "Buộc ký hiệu được định nghĩa một cách cục bộ"
#: options.h:612
msgid "Bind defined function symbols locally"
-msgstr "Tổ hợp cục bộ ký hiệu hàm được xác định"
+msgstr "Buộc ký hiệu hàm được định nghĩa một cách cụ bộ"
#: options.h:615
msgid "Generate build ID note"
@@ -1167,7 +1166,7 @@ msgstr "Äừng kiểm tra địa chỉ phần có chồng chéo"
#: options.h:624 options.h:629
msgid "Compress .debug_* sections in the output file"
-msgstr "Nén phần \".debug_*\" trong tập tin kết xuất"
+msgstr "Nén phần “.debug_*†trong tập tin kết xuất"
#: options.h:630
msgid "[none]"
@@ -1175,15 +1174,15 @@ msgstr "[không có]"
#: options.h:639
msgid "Define common symbols"
-msgstr "Xác định các ký hiệu chung"
+msgstr "Äịnh nghÄ©a các ký hiệu chung"
#: options.h:640
msgid "Do not define common symbols"
-msgstr "Äừng xác định các ký hiệu chung"
+msgstr "Không định nghĩa các ký hiệu chung"
#: options.h:642 options.h:644
msgid "Alias for -d"
-msgstr "Bí danh cho \"-d\""
+msgstr "Bí danh cho “-dâ€"
#: options.h:647
msgid "Turn on debugging"
@@ -1201,7 +1200,7 @@ msgstr ""
#: options.h:651
msgid "Define a symbol"
-msgstr "Xác định một ký hiệu"
+msgstr "Äịnh nghÄ©a má»™t ký hiệu"
#: options.h:651
msgid "SYMBOL=EXPRESSION"
@@ -1217,7 +1216,7 @@ msgstr "Äừng tháo gỡ ký hiệu C++ trong thông Ä‘iệp ghi lÆ°u"
#: options.h:662
msgid "Try to detect violations of the One Definition Rule"
-msgstr "Thử phát hiện sự vi phạm Quy tắc xác định đơn"
+msgstr "Thá»­ phát hiện sá»± vi phạm Quy tắc Äịnh nghÄ©a Ä‘Æ¡n"
#: options.h:666
msgid "Delete all temporary local symbols"
@@ -1241,7 +1240,7 @@ msgstr "Äá»c má»™t danh sách các ký hiệu Ä‘á»™ng"
#: options.h:678 options.h:732 options.h:766 options.h:893 options.h:921
msgid "FILE"
-msgstr "TỆP"
+msgstr "TẬP-TIN"
#: options.h:681
msgid "Set program start address"
@@ -1286,7 +1285,7 @@ msgstr "KÃ_HIỆU"
#: options.h:702
msgid "Set shared library name"
-msgstr "Lập tên thư viện dùng chung"
+msgstr "Äặt tên thÆ° viện dùng chung"
#: options.h:702 options.h:792
msgid "FILENAME"
@@ -1313,7 +1312,7 @@ msgstr ""
#: options.h:713
msgid "Set dynamic linker path"
-msgstr "Lập Ä‘Æ°á»ng dẫn đến bá»™ liên kết Ä‘á»™ng"
+msgstr "Äặt Ä‘Æ°á»ng dẫn đến bá»™ liên kết Ä‘á»™ng"
#: options.h:713
msgid "PROGRAM"
@@ -1373,15 +1372,15 @@ msgstr "MÔ_PHỎNG"
#: options.h:744
msgid "Write map file on standard output"
-msgstr "In tập tin sơ đồ ra đầu ra tiêu chuẩn"
+msgstr "In tập tin ánh xạ ra đầu ra tiêu chuẩn"
#: options.h:745
msgid "Write map file"
-msgstr "Ghi tập tin sơ đồ"
+msgstr "Ghi tập tin ánh xạ"
#: options.h:746
msgid "MAPFILENAME"
-msgstr "TÊN_TỆP_SÆ _Äá»’"
+msgstr "TÊN_TỆP_ÃNH_XẠ"
#: options.h:749
msgid "Do not page align data"
@@ -1397,11 +1396,11 @@ msgstr "Chỉnh canh dữ liệu theo trang, đặt văn bản là chỉ-Ä‘á»c"
#: options.h:755
msgid "Enable use of DT_RUNPATH and DT_FLAGS"
-msgstr "Bật sử dụng \"DT_RUNPATH\" và \"DT_FLAGS\""
+msgstr "Bật sá»­ dụng “DT_RUNPATH†và “DT_FLAGSâ€"
#: options.h:756
msgid "Disable use of DT_RUNPATH and DT_FLAGS"
-msgstr "Tắt sử dụng \"DT_RUNPATH\" và \"DT_FLAGS\""
+msgstr "Tắt sá»­ dụng “DT_RUNPATH†và “DT_FLAGSâ€"
#: options.h:759
msgid "Create an output file even if errors occur"
@@ -1409,7 +1408,7 @@ msgstr "Tạo tập tin kết xuất thậm chí nếu gặp lỗi"
#: options.h:762 options.h:958
msgid "Report undefined symbols (even with --shared)"
-msgstr "Thông báo ký hiệu chÆ°a xác định (ngay cả khi lập tuỳ chá»n \"--shared\")"
+msgstr "Thông báo ký hiệu chÆ°a định nghÄ©a (ngay cả khi đặt tuỳ chá»n “--sharedâ€)"
#: options.h:766
msgid "Set output file name"
@@ -1449,7 +1448,7 @@ msgstr "Gá»­i má»™t tuỳ chá»n cho phần bổ sung"
#: options.h:784
msgid "OPTION"
-msgstr "TÙY CHỌN"
+msgstr "TÙY_CHỌN"
#: options.h:788
msgid "Preread archive symbols when multi-threaded"
@@ -1457,7 +1456,7 @@ msgstr "Äá»c sẵn các ký hiệu kho lÆ°u khi chạy Ä‘a luồng"
#: options.h:791
msgid "Print symbols defined and used for each input"
-msgstr "In ra những ký hiệu được xác định và sử dụng cho mỗi đầu vào"
+msgstr "In ra những ký hiệu được định nghĩa và sử dụng cho mỗi đầu vào"
#: options.h:795
msgid "Ignored for SVR4 compatibility"
@@ -1481,7 +1480,7 @@ msgstr "giữ chỉ những ký hiệu nằm trong tập tin này"
#: options.h:807
msgid "[file]"
-msgstr "[tệp]"
+msgstr "[tập_tin]"
#: options.h:813 options.h:816
msgid "Add DIR to runtime search path"
@@ -1529,7 +1528,7 @@ msgstr "Tạo thư viện dùng chung"
#: options.h:851
msgid "Stack size when -fsplit-stack function calls non-split"
-msgstr "Kích cỡ đống khi hàm \"-fsplit-stack\" gá»i \"non-split\""
+msgstr "Kích cỡ đống khi hàm “-fsplit-stack†gá»i “non-splitâ€"
#: options.h:857
msgid "Do not link against shared libraries"
@@ -1537,7 +1536,7 @@ msgstr "Äừng liên kết so vá»›i thÆ° viện dùng chung"
#: options.h:860
msgid "Identical Code Folding. '--icf=safe' folds only ctors and dtors."
-msgstr "ICF = gấp lại mã trùng. \"--icf-safe\" chỉ gấp lại các ctor và dtor."
+msgstr "Identical Code Folding (ICF = gấp lại mã trùng). “--icf-safe†chỉ gấp lại các ctor và dtor."
#: options.h:866
msgid "Number of iterations of ICF (default 2)"
@@ -1545,7 +1544,7 @@ msgstr "Số các lần lặp lại ICF (mặc định là 2)"
#: options.h:866 options.h:899 options.h:901 options.h:903 options.h:905
msgid "COUNT"
-msgstr "Sá»_ÄẾM"
+msgstr "Sá»_LƯỢNG"
#: options.h:869
msgid "List folded identical sections on stderr"
@@ -1577,11 +1576,11 @@ msgstr "Không liệt kê phần không dùng bị gỡ bá»"
#: options.h:884
msgid "Print resource usage statistics"
-msgstr "In ra thống kê cách sử dụng tài nguyên"
+msgstr "In ra thống kê vỠsử dụng tài nguyên của máy tính"
#: options.h:887
msgid "Set target system root directory"
-msgstr "Lập thư mục gốc của hệ thống đích"
+msgstr "Äặt thÆ° mục gốc của hệ thống đích"
#: options.h:890
msgid "Print the name of each input file"
@@ -1605,35 +1604,35 @@ msgstr "Số các nhánh cần dùng"
#: options.h:901
msgid "Number of threads to use in initial pass"
-msgstr "Số các nhánh cần dùng trong lần đi qua đầu tiên"
+msgstr "Số lượng tuyến cần dùng trong lần duyệt qua đầu tiên"
#: options.h:903
msgid "Number of threads to use in middle pass"
-msgstr "Số các nhánh cần dùng trong lần đi qua vừa"
+msgstr "Số lượng tuyến cần dùng trong lần duyệt qua vừa"
#: options.h:905
msgid "Number of threads to use in final pass"
-msgstr "Số các nhánh cần dùng trong lần đi qua cuối cùng"
+msgstr "Số lượng tuyến cần dùng trong lần duyệt qua cuối cùng"
#: options.h:908
msgid "Set the address of the bss segment"
-msgstr "Äặt địa chỉ của Ä‘oạn \"bss\""
+msgstr "Äặt địa chỉ của Ä‘oạn “bssâ€"
#: options.h:910
msgid "Set the address of the data segment"
-msgstr "Äặt địa chỉ của Ä‘oạn \"data\" (dữ liệu)"
+msgstr "Äặt địa chỉ của Ä‘oạn “data†(dữ liệu)"
#: options.h:912
msgid "Set the address of the text segment"
-msgstr "Äặt địa chỉ của Ä‘oạn \"text\" (văn bản)"
+msgstr "Äặt địa chỉ của Ä‘oạn “text†(văn bản)"
#: options.h:915
msgid "Create undefined reference to SYMBOL"
-msgstr "Tạo tham chiếu chưa xác định đến ký hiệu này"
+msgstr "Tạo tham chiếu chưa định nghĩa đến ký hiệu này"
#: options.h:918
msgid "Synonym for --debug=files"
-msgstr "Bằng \"--debug=files\""
+msgstr "Äồng nghÄ©a vá»›i “--debug=filesâ€"
#: options.h:921
msgid "Read version script"
@@ -1745,7 +1744,7 @@ msgstr "Äánh dấu DSO không sẵn sàng cho dldump"
#: options.h:992
msgid "Mark output as not requiring executable stack"
-msgstr "Äánh dấu kết xuất nhÆ° là không yêu cầu đống có thể thá»±c hiện được"
+msgstr "Äánh dấu kết xuất nhÆ° là không yêu cầu đống có thể thá»±c thi được"
#: options.h:994
msgid "Mark object for immediate function binding"
@@ -1770,7 +1769,7 @@ msgstr "nhóm phần được giữ lại còn phần tử nhóm bị hủy"
#: output.cc:1860
#, c-format
msgid "invalid alignment %lu for section \"%s\""
-msgstr "sai chỉnh canh %lu cho phần \"%s\""
+msgstr "sai chỉnh canh %lu cho phần “%sâ€"
#: output.cc:3573
#, c-format
@@ -1780,17 +1779,17 @@ msgstr "chấm đi ngược trong văn lệnh liên kết từ 0x%llx vỠ0x%ll
#: output.cc:3576
#, c-format
msgid "address of section '%s' moves backward from 0x%llx to 0x%llx"
-msgstr "địa chỉ của phần \"%s\" đi ngược từ 0x%llx vỠ0x%llx"
+msgstr "địa chỉ của phần “%s†đi ngược từ 0x%llx vỠ0x%llx"
#: output.cc:3755
#, c-format
msgid "nobits section %s may not precede progbits section %s in same segment"
-msgstr "phần \"nobits\" %s có thể không phải đi trước phần \"progbits\" %s trong cùng một đoạn"
+msgstr "phần “nobits†%s có thể không phải đi trước phần “progbits†%s trong cùng một đoạn"
#: output.cc:3907 output.cc:3975
#, c-format
msgid "%s: open: %s"
-msgstr "%s: mở : %s"
+msgstr "%s: mở: %s"
#: output.cc:3996
#, c-format
@@ -1841,7 +1840,7 @@ msgstr "** dòng đầu tập tin"
#: output.h:833
msgid "** fill"
-msgstr "** tô đầy"
+msgstr "** Ä‘iá»n đầy"
#: output.h:987
msgid "** string table"
@@ -1857,7 +1856,7 @@ msgstr "** sự định vị lại"
#: output.h:1662
msgid "** group"
-msgstr "** nhóm"
+msgstr "** nhóm"
#: output.h:1774
msgid "** GOT"
@@ -1908,7 +1907,7 @@ msgstr "%s: không phải một đối tượng hay kho lưu"
#: reduced_debug_output.cc:236
msgid "Debug abbreviations extend beyond .debug_abbrev section; failed to reduce debug abbreviations"
-msgstr "Viết tắt gỡ lỗi kéo dài qua phần \".debug_abbrev\": không giảm được viết tắt gỡ lỗi"
+msgstr "Viết tắt gỡ lá»—i kéo dài qua phần “.debug_abbrevâ€: không giảm được viết tắt gỡ lá»—i"
#: reduced_debug_output.cc:322
msgid "Extremely large compile unit in debug info; failed to reduce debug info"
@@ -1916,7 +1915,7 @@ msgstr "Gặp đơn vị biên dịch rất lớn trong thông tin gỡ lỗi: k
#: reduced_debug_output.cc:330
msgid "Debug info extends beyond .debug_info section;failed to reduce debug info"
-msgstr "Thông tin gỡ lỗi kéo dài qua phần \".debug_info\": không giảm được thông tin gỡ lỗi"
+msgstr "Thông tin gỡ lá»—i kéo dài qua phần “.debug_infoâ€: không giảm được thông tin gỡ lá»—i"
#: reduced_debug_output.cc:350 reduced_debug_output.cc:392
msgid "Invalid DIE in debug info; failed to reduce debug info"
@@ -1924,7 +1923,7 @@ msgstr "Gặp DIE sai trong thông tin gỡ lỗi: không giảm được thông
#: reduced_debug_output.cc:373
msgid "Debug info extends beyond .debug_info section; failed to reduce debug info"
-msgstr "Thông tin gỡ lỗi kéo dài qua phần \".debug_info\": không giảm được thông tin gỡ lỗi"
+msgstr "Thông tin gỡ lá»—i kéo dài qua phần “.debug_infoâ€: không giảm được thông tin gỡ lá»—i"
#: reloc.cc:297 reloc.cc:858
#, c-format
@@ -1944,7 +1943,7 @@ msgstr "phần định vị lại %u có kích cỡ %lu không Ä‘á»u"
#: reloc.cc:1203
#, c-format
msgid "could not convert call to '%s' to '%s'"
-msgstr "không thể chuyển đổi cuá»™c gá»i \"%s\" sang \"%s\""
+msgstr "không thể chuyển đổi cuá»™c gá»i “%s†sang “%sâ€"
#: reloc.cc:1343
#, c-format
@@ -1955,55 +1954,55 @@ msgstr "kích cỡ phần định vị lại %zu không phải là bội số ch
#. table.
#: resolve.cc:191
msgid "invalid STB_LOCAL symbol in external symbols"
-msgstr "gặp ký hiệu \"STB_LOCAL\" sai trong những ký hiệu bên ngoài"
+msgstr "gặp ký hiệu “STB_LOCAL†sai trong những ký hiệu bên ngoài"
#. Any target which wants to handle STB_LOOS, etc., needs to
#. define a resolve method.
#: resolve.cc:197
msgid "unsupported symbol binding"
-msgstr "tổ hợp ký hiệu không được hỗ trợ"
+msgstr "không hỗ trợ buộc ký hiệu"
#. A dynamic object cannot reference a hidden or internal symbol
#. defined in another object.
#: resolve.cc:266
#, c-format
msgid "%s symbol '%s' in %s is referenced by DSO %s"
-msgstr "ký hiệu %s \"%s\" trong %s được tham chiếu bởi DSO %s"
+msgstr "ký hiệu %s “%s†trong %s được tham chiếu bởi DSO %s"
#: resolve.cc:326
#, c-format
msgid "common of '%s' overriding smaller common"
-msgstr "Ä‘iá»u chung của \"%s\" ghi đè lên Ä‘iá»u chung nhá» hÆ¡n"
+msgstr "Ä‘iá»u chung của “%s†ghi đè lên Ä‘iá»u chung nhá» hÆ¡n"
#: resolve.cc:331
#, c-format
msgid "common of '%s' overidden by larger common"
-msgstr "Ä‘iá»u chung của \"%s\" bị ghi đè bởi Ä‘iá»u chung lá»›n hÆ¡n"
+msgstr "Ä‘iá»u chung của “%s†bị ghi đè bởi Ä‘iá»u chung lá»›n hÆ¡n"
#: resolve.cc:336
#, c-format
msgid "multiple common of '%s'"
-msgstr "nhiá»u Ä‘iá»u chung của \"%s\""
+msgstr "nhiá»u Ä‘iá»u chung của “%sâ€"
#: resolve.cc:442
#, c-format
msgid "multiple definition of '%s'"
-msgstr "nhiá»u lá»i xác định \"%s\""
+msgstr "nhiá»u định nghÄ©a cho “%sâ€"
#: resolve.cc:481
#, c-format
msgid "definition of '%s' overriding common"
-msgstr "lá»i xác định của \"%s\" ghi đè lên Ä‘iá»u chung"
+msgstr "định nghĩa của “%s†ghi đè lên cái chung"
#: resolve.cc:516
#, c-format
msgid "definition of '%s' overriding dynamic common definition"
-msgstr "lá»i xác định của \"%s\" ghi đè lên lá»i xác định chung Ä‘á»™ng"
+msgstr "định nghÄ©a của “%s†ghi đè lên lá»i định nghÄ©a chung Ä‘á»™ng"
#: resolve.cc:636
#, c-format
msgid "common '%s' overridden by previous definition"
-msgstr "Ä‘iá»u chung \"%s\" bị ghi đè bởi lá»i xác định trÆ°á»›c"
+msgstr "cái chung “%s†bị ghi đè bởi định nghĩa trước đó"
#: resolve.cc:766 resolve.cc:778
msgid "command line"
@@ -2042,19 +2041,19 @@ msgstr "ràng buộc SPECIAL (đặc biệt) chưa được thực hiện"
#: script-sections.cc:2090
msgid "mismatched definition for constrained sections"
-msgstr "lá»i xác định không tÆ°Æ¡ng ứng vá»›i phần ràng buá»™c"
+msgstr "định nghĩa không tương ứng với phần bị ràng buộc"
#: script-sections.cc:2634
msgid "DATA_SEGMENT_ALIGN may only appear once in a linker script"
-msgstr "\"DATA_SEGMENT_ALIGN\" chỉ có thể xuất hiện một lần trong một văn lệnh liên kết"
+msgstr "“DATA_SEGMENT_ALIGN†chỉ có thể xuất hiện một lần trong một văn lệnh liên kết"
#: script-sections.cc:2649
msgid "DATA_SEGMENT_RELRO_END may only appear once in a linker script"
-msgstr "\"DATA_SEGMENT_RELRO_END\" chỉ có thể xuất hiện một lần trong một văn lệnh liên kết"
+msgstr "“DATA_SEGMENT_RELRO_END†chỉ có thể xuất hiện một lần trong một văn lệnh liên kết"
#: script-sections.cc:2654
msgid "DATA_SEGMENT_RELRO_END must follow DATA_SEGMENT_ALIGN"
-msgstr "\"DATA_SEGMENT_RELRO_END\" phải theo sau \"DATA_SEGMENT_ALIGN\""
+msgstr "“DATA_SEGMENT_RELRO_END†phải theo sau “DATA_SEGMENT_ALIGNâ€"
#: script-sections.cc:2826
msgid "no matching section constraint"
@@ -2075,15 +2074,15 @@ msgstr "không có phân %s"
#: script-sections.cc:3323
msgid "section in two PT_LOAD segments"
-msgstr "phần nằm trong hai đoạn \"PT_LOAD\""
+msgstr "phần nằm trong hai Ä‘oạn “PT_LOADâ€"
#: script-sections.cc:3330
msgid "allocated section not in any PT_LOAD segment"
-msgstr "phần đã cấp phát không nằm trong đoạn \"PT_LOAD\" nào"
+msgstr "phần đã cấp phát không nằm trong đoạn “PT_LOAD†nào"
#: script-sections.cc:3358
msgid "may only specify load address for PT_LOAD segment"
-msgstr "chỉ có thể ghi rõ địa chỉ nạp cho đoạn \"PT_LOAD\""
+msgstr "chỉ có thể ghi rõ địa chỉ nạp cho Ä‘oạn “PT_LOADâ€"
#: script-sections.cc:3382
#, c-format
@@ -2101,11 +2100,11 @@ msgstr "không há»— trợ phần được nạp trên trang đầu tiên mà khÃ
#: script-sections.cc:3414
msgid "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"
-msgstr "hiện thá»i không há»— trợ sá»­ dụng FILEHDR và PHDRS trên nhiá»u Ä‘oạn \"PT_LOAD\""
+msgstr "hiện thá»i không há»— trợ sá»­ dụng FILEHDR và PHDRS trên nhiá»u Ä‘oạn “PT_LOADâ€"
#: script.cc:1072
msgid "invalid use of PROVIDE for dot symbol"
-msgstr "sai sử dụng \"PROVIDE\" (cung cấp) cho ký hiệu chấm"
+msgstr "sai sử dụng “PROVIDE†(cung cấp) cho ký hiệu chấm"
#: script.cc:2132
#, c-format
@@ -2117,17 +2116,17 @@ msgstr "%s:%d:%d: %s"
#: script.cc:2297
#, c-format
msgid "%s:%d:%d: ignoring command OPTION; OPTION is only valid for scripts specified via -T/--script"
-msgstr "%s:%d:%d: đang bỠqua TÙY_CHỌN vỠlệnh: TÙY_CHỌN chỉ được chấp nhận cho văn lệnh được ghi rõ thông qua \"-T/--script\""
+msgstr "%s:%d:%d: Ä‘ang bá» qua TÙY_CHỌN vá» lệnh: TÙY_CHỌN chỉ được chấp nhận cho văn lệnh được ghi rõ thông qua “-T/--scriptâ€"
#: script.cc:2362
#, c-format
msgid "%s:%d:%d: ignoring SEARCH_DIR; SEARCH_DIR is only valid for scripts specified via -T/--script"
-msgstr "%s:%d:%d: đang bỠqua \"SEARCH_DIR\": SEARCH_DIR chỉ được chấp nhận cho văn lệnh được ghi rõ thông qua \"-T/--script\""
+msgstr "%s:%d:%d: Ä‘ang bá» qua “SEARCH_DIRâ€: SEARCH_DIR chỉ được chấp nhận cho văn lệnh được ghi rõ thông qua “-T/--scriptâ€"
#: script.cc:2606 script.cc:2620
#, c-format
msgid "%s:%d:%d: DATA_SEGMENT_ALIGN not in SECTIONS clause"
-msgstr "%s:%d:%d: \"DATA_SEGMENT_ALIGN\" không phải trong mệnh đỠ\"SECTIONS\""
+msgstr "%s:%d:%d: “DATA_SEGMENT_ALIGN†không phải trong mệnh đỠ“SECTIONSâ€"
#: script.cc:2739
msgid "unknown PHDR type (try integer)"
@@ -2156,7 +2155,7 @@ msgstr "%s: tham chiếu đến %s"
#: symtab.cc:859
#, c-format
msgid "%s: definition of %s"
-msgstr "%s: lá»i xác định %s"
+msgstr "%s: định nghĩa của %s"
#: symtab.cc:1052
#, c-format
@@ -2165,7 +2164,7 @@ msgstr "sai đặt khoảng bù tên ký hiệu toàn cục %u tại %zu"
#: symtab.cc:1278
msgid "--just-symbols does not make sense with a shared object"
-msgstr "\"--just-symbols\" (chỉ ký hiệu) không có ý nghĩa với một đối tượng dùng chung"
+msgstr "“--just-symbols†(chỉ ký hiệu) không có ý nghĩa với một đối tượng dùng chung"
#: symtab.cc:1284
msgid "too few symbol versions"
@@ -2204,7 +2203,7 @@ msgstr "%s: mục nhập bảng ký hiệu: %zu\n"
#: symtab.cc:3007
#, c-format
msgid "while linking %s: symbol '%s' defined in multiple places (possible ODR violation):"
-msgstr "trong khi liên kết %s: ký hiệu \"%s\" được xác định trong nhiá»u lần (có thể vi phạm quy tắc xác định Ä‘Æ¡n):"
+msgstr "trong khi liên kết %s: ký hiệu “%s†được định nghÄ©a ở nhiá»u lần chá»— (có thể vi phạm quy tắc xác định Ä‘Æ¡n):"
#: target-reloc.h:259
msgid "relocation refers to discarded comdat section"
@@ -2249,12 +2248,12 @@ msgstr ""
"ChÆ°Æ¡ng trình này là phần má»m tá»± do; bạn có quyá»n phát hành lại\n"
"nó vá»›i Ä‘iá»u kiện của Giấy Phép Công Cá»™ng GNU (GPL)\n"
"phiên bản 3 hoặc (tùy chá»n) bắt cứ phiên bản sau nào.\n"
-"Chương trình này không bảo đảm gì cả.\n"
+"Chương trình này tuyệt đối không bảo đảm gì cả.\n"
#: workqueue-threads.cc:106
#, c-format
msgid "%s failed: %s"
-msgstr "%s: bị lỗi: %s"
+msgstr "%s: gặp lỗi: %s"
#: x86_64.cc:2184
#, c-format
diff --git a/gold/po/zh_CN.po b/gold/po/zh_CN.po
index 6c85b17..1d8ec5e 100644
--- a/gold/po/zh_CN.po
+++ b/gold/po/zh_CN.po
@@ -14,6 +14,7 @@ msgstr ""
"Last-Translator: Mingye Wang (Arthur2e5) <arthur200126@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
"Language: zh_CN\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
diff --git a/gold/powerpc.cc b/gold/powerpc.cc
index a046bbe..94efcdf 100644
--- a/gold/powerpc.cc
+++ b/gold/powerpc.cc
@@ -1,6 +1,6 @@
// powerpc.cc -- powerpc target support for gold.
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by David S. Miller <davem@davemloft.net>
// and David Edelsohn <edelsohn@gnu.org>
@@ -613,8 +613,10 @@ class Target_powerpc : public Sized_target<size, big_endian>
stub_tables_(), branch_lookup_table_(), branch_info_(), tocsave_loc_(),
plt_thread_safe_(false), plt_localentry0_(false),
plt_localentry0_init_(false), has_localentry0_(false),
+ has_tls_get_addr_opt_(false),
relax_failed_(false), relax_fail_count_(0),
- stub_group_size_(0), savres_section_(0)
+ stub_group_size_(0), savres_section_(0),
+ tls_get_addr_(NULL), tls_get_addr_opt_(NULL)
{
}
@@ -1026,7 +1028,8 @@ class Target_powerpc : public Sized_target<size, big_endian>
&& this->plt_localentry0()
&& gsym->type() == elfcpp::STT_FUNC
&& gsym->is_defined()
- && gsym->nonvis() >> 3 == 0);
+ && gsym->nonvis() >> 3 == 0
+ && !gsym->non_zero_localentry());
}
bool
@@ -1051,12 +1054,28 @@ class Target_powerpc : public Sized_target<size, big_endian>
return false;
}
+ // Remember any symbols seen with non-zero localentry, even those
+ // not providing a definition
+ bool
+ resolve(Symbol* to, const elfcpp::Sym<size, big_endian>& sym, Object*,
+ const char*)
+ {
+ if (size == 64)
+ {
+ unsigned char st_other = sym.get_st_other();
+ if ((st_other & elfcpp::STO_PPC64_LOCAL_MASK) != 0)
+ to->set_non_zero_localentry();
+ }
+ // We haven't resolved anything, continue normal processing.
+ return false;
+ }
+
int
- abiversion () const
+ abiversion() const
{ return this->processor_specific_flags() & elfcpp::EF_PPC64_ABI; }
void
- set_abiversion (int ver)
+ set_abiversion(int ver)
{
elfcpp::Elf_Word flags = this->processor_specific_flags();
flags &= ~elfcpp::EF_PPC64_ABI;
@@ -1064,11 +1083,43 @@ class Target_powerpc : public Sized_target<size, big_endian>
this->set_processor_specific_flags(flags);
}
- // Offset to to save stack slot
+ Symbol*
+ tls_get_addr_opt() const
+ { return this->tls_get_addr_opt_; }
+
+ Symbol*
+ tls_get_addr() const
+ { return this->tls_get_addr_; }
+
+ // If optimizing __tls_get_addr calls, whether this is the
+ // "__tls_get_addr" symbol.
+ bool
+ is_tls_get_addr_opt(const Symbol* gsym) const
+ {
+ return this->tls_get_addr_opt_ && (gsym == this->tls_get_addr_
+ || gsym == this->tls_get_addr_opt_);
+ }
+
+ bool
+ replace_tls_get_addr(const Symbol* gsym) const
+ { return this->tls_get_addr_opt_ && gsym == this->tls_get_addr_; }
+
+ void
+ set_has_tls_get_addr_opt()
+ { this->has_tls_get_addr_opt_ = true; }
+
+ // Offset to toc save stack slot
int
- stk_toc () const
+ stk_toc() const
{ return this->abiversion() < 2 ? 40 : 24; }
+ // Offset to linker save stack slot. ELFv2 doesn't have a linker word,
+ // so use the CR save slot. Used only by __tls_get_addr call stub,
+ // relying on __tls_get_addr not saving CR itself.
+ int
+ stk_linker() const
+ { return this->abiversion() < 2 ? 32 : 8; }
+
private:
class Track_tls
@@ -1083,13 +1134,13 @@ class Target_powerpc : public Sized_target<size, big_endian>
};
Track_tls()
- : tls_get_addr_(NOT_EXPECTED),
+ : tls_get_addr_state_(NOT_EXPECTED),
relinfo_(NULL), relnum_(0), r_offset_(0)
{ }
~Track_tls()
{
- if (this->tls_get_addr_ != NOT_EXPECTED)
+ if (this->tls_get_addr_state_ != NOT_EXPECTED)
this->missing();
}
@@ -1107,7 +1158,7 @@ class Target_powerpc : public Sized_target<size, big_endian>
size_t relnum,
Address r_offset)
{
- this->tls_get_addr_ = EXPECTED;
+ this->tls_get_addr_state_ = EXPECTED;
this->relinfo_ = relinfo;
this->relnum_ = relnum;
this->r_offset_ = r_offset;
@@ -1115,21 +1166,23 @@ class Target_powerpc : public Sized_target<size, big_endian>
void
expect_tls_get_addr_call()
- { this->tls_get_addr_ = EXPECTED; }
+ { this->tls_get_addr_state_ = EXPECTED; }
void
skip_next_tls_get_addr_call()
- {this->tls_get_addr_ = SKIP; }
+ {this->tls_get_addr_state_ = SKIP; }
Tls_get_addr
- maybe_skip_tls_get_addr_call(unsigned int r_type, const Symbol* gsym)
+ maybe_skip_tls_get_addr_call(Target_powerpc<size, big_endian>* target,
+ unsigned int r_type, const Symbol* gsym)
{
bool is_tls_call = ((r_type == elfcpp::R_POWERPC_REL24
|| r_type == elfcpp::R_PPC_PLTREL24)
&& gsym != NULL
- && strcmp(gsym->name(), "__tls_get_addr") == 0);
- Tls_get_addr last_tls = this->tls_get_addr_;
- this->tls_get_addr_ = NOT_EXPECTED;
+ && (gsym == target->tls_get_addr()
+ || gsym == target->tls_get_addr_opt()));
+ Tls_get_addr last_tls = this->tls_get_addr_state_;
+ this->tls_get_addr_state_ = NOT_EXPECTED;
if (is_tls_call && last_tls != EXPECTED)
return last_tls;
else if (!is_tls_call && last_tls != NOT_EXPECTED)
@@ -1152,7 +1205,7 @@ class Target_powerpc : public Sized_target<size, big_endian>
// allowing ld to safely optimize away the call. We check that
// every call to __tls_get_addr has a marker relocation, and that
// every marker relocation is on a call to __tls_get_addr.
- Tls_get_addr tls_get_addr_;
+ Tls_get_addr tls_get_addr_state_;
// Info about the last reloc for error message.
const Relocate_info<size, big_endian>* relinfo_;
size_t relnum_;
@@ -1323,7 +1376,8 @@ class Target_powerpc : public Sized_target<size, big_endian>
{
// If we are generating a shared library, then we can't do anything
// in the linker.
- if (parameters->options().shared())
+ if (parameters->options().shared()
+ || !parameters->options().tls_optimize())
return tls::TLSOPT_NONE;
if (!is_final)
@@ -1334,7 +1388,8 @@ class Target_powerpc : public Sized_target<size, big_endian>
tls::Tls_optimization
optimize_tls_ld()
{
- if (parameters->options().shared())
+ if (parameters->options().shared()
+ || !parameters->options().tls_optimize())
return tls::TLSOPT_NONE;
return tls::TLSOPT_TO_LE;
@@ -1343,7 +1398,9 @@ class Target_powerpc : public Sized_target<size, big_endian>
tls::Tls_optimization
optimize_tls_ie(bool is_final)
{
- if (!is_final || parameters->options().shared())
+ if (!is_final
+ || parameters->options().shared()
+ || !parameters->options().tls_optimize())
return tls::TLSOPT_NONE;
return tls::TLSOPT_TO_LE;
@@ -1528,12 +1585,18 @@ class Target_powerpc : public Sized_target<size, big_endian>
bool plt_localentry0_;
bool plt_localentry0_init_;
bool has_localentry0_;
+ bool has_tls_get_addr_opt_;
bool relax_failed_;
int relax_fail_count_;
int32_t stub_group_size_;
Output_data_save_res<size, big_endian> *savres_section_;
+
+ // The "__tls_get_addr" symbol, if present
+ Symbol* tls_get_addr_;
+ // If optimizing __tls_get_addr calls, the "__tls_get_addr_opt" symbol.
+ Symbol* tls_get_addr_opt_;
};
template<>
@@ -1599,9 +1662,9 @@ Target::Target_info Target_powerpc<64, true>::powerpc_info =
true, // is_big_endian
elfcpp::EM_PPC64, // machine_code
false, // has_make_symbol
- false, // has_resolve
+ true, // has_resolve
false, // has_code_fill
- true, // is_default_stack_executable
+ false, // is_default_stack_executable
false, // can_icf_inline_merge_sections
'\0', // wrap_char
"/usr/lib/ld.so.1", // dynamic_linker
@@ -1627,9 +1690,9 @@ Target::Target_info Target_powerpc<64, false>::powerpc_info =
false, // is_big_endian
elfcpp::EM_PPC64, // machine_code
false, // has_make_symbol
- false, // has_resolve
+ true, // has_resolve
false, // has_code_fill
- true, // is_default_stack_executable
+ false, // is_default_stack_executable
false, // can_icf_inline_merge_sections
'\0', // wrap_char
"/usr/lib/ld.so.1", // dynamic_linker
@@ -2438,6 +2501,36 @@ Target_powerpc<size, big_endian>::do_define_standard_symbols(
false, false);
}
}
+
+ this->tls_get_addr_ = symtab->lookup("__tls_get_addr");
+ if (parameters->options().tls_get_addr_optimize()
+ && this->tls_get_addr_ != NULL
+ && this->tls_get_addr_->in_reg())
+ this->tls_get_addr_opt_ = symtab->lookup("__tls_get_addr_opt");
+ if (this->tls_get_addr_opt_ != NULL)
+ {
+ if (this->tls_get_addr_->is_undefined()
+ || this->tls_get_addr_->is_from_dynobj())
+ {
+ // Make it seem as if references to __tls_get_addr are
+ // really to __tls_get_addr_opt, so the latter symbol is
+ // made dynamic, not the former.
+ this->tls_get_addr_->clear_in_reg();
+ this->tls_get_addr_opt_->set_in_reg();
+ }
+ // We have a non-dynamic definition for __tls_get_addr.
+ // Make __tls_get_addr_opt the same, if it does not already have
+ // a non-dynamic definition.
+ else if (this->tls_get_addr_opt_->is_undefined()
+ || this->tls_get_addr_opt_->is_from_dynobj())
+ {
+ Sized_symbol<size>* from
+ = static_cast<Sized_symbol<size>*>(this->tls_get_addr_);
+ Sized_symbol<size>* to
+ = static_cast<Sized_symbol<size>*>(this->tls_get_addr_opt_);
+ symtab->clone<size>(to, from);
+ }
+ }
}
// Set up PowerPC target specific relobj.
@@ -2525,6 +2618,9 @@ public:
Output_data_reloc_generic* rel_dyn,
unsigned int r_type_1, unsigned int r_type_2)
{
+ if (gsym->has_got_offset(got_type))
+ return;
+
this->reserve_ent(2);
Output_data_got<size, big_endian>::
add_global_pair_with_rel(gsym, got_type, rel_dyn, r_type_1, r_type_2);
@@ -2556,6 +2652,9 @@ public:
Output_data_reloc_generic* rel_dyn,
unsigned int r_type)
{
+ if (object->local_has_got_offset(sym_index, got_type))
+ return;
+
this->reserve_ent(2);
Output_data_got<size, big_endian>::
add_local_tls_pair(object, sym_index, got_type, rel_dyn, r_type);
@@ -3005,6 +3104,8 @@ Target_powerpc<size, big_endian>::Branch_info::mark_pltcall(
Symbol* sym = this->object_->global_symbol(this->r_sym_);
if (sym != NULL && sym->is_forwarder())
sym = symtab->resolve_forwards(sym);
+ if (target->replace_tls_get_addr(sym))
+ sym = target->tls_get_addr_opt();
const Sized_symbol<size>* gsym = static_cast<const Sized_symbol<size>*>(sym);
if (gsym != NULL
? (gsym->use_plt_offset(Scan::get_reference_flags(this->r_type_, target))
@@ -3028,12 +3129,14 @@ Target_powerpc<size, big_endian>::Branch_info::make_stub(
Symbol_table* symtab) const
{
Symbol* sym = this->object_->global_symbol(this->r_sym_);
- if (sym != NULL && sym->is_forwarder())
- sym = symtab->resolve_forwards(sym);
- const Sized_symbol<size>* gsym = static_cast<const Sized_symbol<size>*>(sym);
Target_powerpc<size, big_endian>* target =
static_cast<Target_powerpc<size, big_endian>*>(
parameters->sized_target<size, big_endian>());
+ if (sym != NULL && sym->is_forwarder())
+ sym = symtab->resolve_forwards(sym);
+ if (target->replace_tls_get_addr(sym))
+ sym = target->tls_get_addr_opt();
+ const Sized_symbol<size>* gsym = static_cast<const Sized_symbol<size>*>(sym);
bool ok = true;
if (gsym != NULL
@@ -3048,11 +3151,17 @@ Target_powerpc<size, big_endian>::Branch_info::make_stub(
target->glink_section()->add_global_entry(gsym);
else
{
- if (stub_table == NULL)
+ if (stub_table == NULL
+ && !(size == 32
+ && gsym != NULL
+ && !parameters->options().output_is_position_independent()
+ && !is_branch_reloc(this->r_type_)))
stub_table = this->object_->stub_table(this->shndx_);
if (stub_table == NULL)
{
- // This is a ref from a data section to an ifunc symbol.
+ // This is a ref from a data section to an ifunc symbol,
+ // or a non-branch reloc for which we always want to use
+ // one set of stubs for resolving function addresses.
stub_table = ifunc_stub_table;
}
gold_assert(stub_table != NULL);
@@ -3323,6 +3432,16 @@ Target_powerpc<size, big_endian>::do_relax(int pass,
if (size == 64 && again)
this->brlt_section_->set_current_size(num_huge_branches);
+ for (typename Stub_tables::reverse_iterator p = this->stub_tables_.rbegin();
+ p != this->stub_tables_.rend();
+ ++p)
+ (*p)->remove_eh_frame(layout);
+
+ for (typename Stub_tables::iterator p = this->stub_tables_.begin();
+ p != this->stub_tables_.end();
+ ++p)
+ (*p)->add_eh_frame(layout);
+
typedef Unordered_set<Output_section*> Output_sections;
Output_sections os_need_update;
for (typename Stub_tables::iterator p = this->stub_tables_.begin();
@@ -3332,7 +3451,6 @@ Target_powerpc<size, big_endian>::do_relax(int pass,
if ((*p)->size_update())
{
again = true;
- (*p)->add_eh_frame(layout);
os_need_update.insert((*p)->output_section());
}
}
@@ -3639,6 +3757,8 @@ static const uint32_t add_2_2_11 = 0x7c425a14;
static const uint32_t add_2_2_12 = 0x7c426214;
static const uint32_t add_3_3_2 = 0x7c631214;
static const uint32_t add_3_3_13 = 0x7c636a14;
+static const uint32_t add_3_12_2 = 0x7c6c1214;
+static const uint32_t add_3_12_13 = 0x7c6c6a14;
static const uint32_t add_11_0_11 = 0x7d605a14;
static const uint32_t add_11_2_11 = 0x7d625a14;
static const uint32_t add_11_11_2 = 0x7d6b1214;
@@ -3660,10 +3780,14 @@ static const uint32_t addis_12_12 = 0x3d8c0000;
static const uint32_t b = 0x48000000;
static const uint32_t bcl_20_31 = 0x429f0005;
static const uint32_t bctr = 0x4e800420;
+static const uint32_t bctrl = 0x4e800421;
+static const uint32_t beqlr = 0x4d820020;
static const uint32_t blr = 0x4e800020;
static const uint32_t bnectr_p4 = 0x4ce20420;
static const uint32_t cmpld_7_12_0 = 0x7fac0040;
static const uint32_t cmpldi_2_0 = 0x28220000;
+static const uint32_t cmpdi_11_0 = 0x2c2b0000;
+static const uint32_t cmpwi_11_0 = 0x2c0b0000;
static const uint32_t cror_15_15_15 = 0x4def7b82;
static const uint32_t cror_31_31_31 = 0x4ffffb82;
static const uint32_t ld_0_1 = 0xe8010000;
@@ -3672,9 +3796,12 @@ static const uint32_t ld_2_1 = 0xe8410000;
static const uint32_t ld_2_2 = 0xe8420000;
static const uint32_t ld_2_11 = 0xe84b0000;
static const uint32_t ld_2_12 = 0xe84c0000;
+static const uint32_t ld_11_1 = 0xe9610000;
static const uint32_t ld_11_2 = 0xe9620000;
+static const uint32_t ld_11_3 = 0xe9630000;
static const uint32_t ld_11_11 = 0xe96b0000;
static const uint32_t ld_12_2 = 0xe9820000;
+static const uint32_t ld_12_3 = 0xe9830000;
static const uint32_t ld_12_11 = 0xe98b0000;
static const uint32_t ld_12_12 = 0xe98c0000;
static const uint32_t lfd_0_1 = 0xc8010000;
@@ -3686,17 +3813,22 @@ static const uint32_t lis_11 = 0x3d600000;
static const uint32_t lis_12 = 0x3d800000;
static const uint32_t lvx_0_12_0 = 0x7c0c00ce;
static const uint32_t lwz_0_12 = 0x800c0000;
+static const uint32_t lwz_11_3 = 0x81630000;
static const uint32_t lwz_11_11 = 0x816b0000;
static const uint32_t lwz_11_30 = 0x817e0000;
+static const uint32_t lwz_12_3 = 0x81830000;
static const uint32_t lwz_12_12 = 0x818c0000;
static const uint32_t lwzu_0_12 = 0x840c0000;
static const uint32_t mflr_0 = 0x7c0802a6;
static const uint32_t mflr_11 = 0x7d6802a6;
static const uint32_t mflr_12 = 0x7d8802a6;
+static const uint32_t mr_0_3 = 0x7c601b78;
+static const uint32_t mr_3_0 = 0x7c030378;
static const uint32_t mtctr_0 = 0x7c0903a6;
static const uint32_t mtctr_11 = 0x7d6903a6;
static const uint32_t mtctr_12 = 0x7d8903a6;
static const uint32_t mtlr_0 = 0x7c0803a6;
+static const uint32_t mtlr_11 = 0x7d6803a6;
static const uint32_t mtlr_12 = 0x7d8803a6;
static const uint32_t nop = 0x60000000;
static const uint32_t ori_0_0_0 = 0x60000000;
@@ -3704,6 +3836,7 @@ static const uint32_t srdi_0_0_2 = 0x7800f082;
static const uint32_t std_0_1 = 0xf8010000;
static const uint32_t std_0_12 = 0xf80c0000;
static const uint32_t std_2_1 = 0xf8410000;
+static const uint32_t std_11_1 = 0xf9610000;
static const uint32_t stfd_0_1 = 0xd8010000;
static const uint32_t stvx_0_12_0 = 0x7c0c01ce;
static const uint32_t sub_11_11_12 = 0x7d6c5850;
@@ -3987,7 +4120,7 @@ static const unsigned char glink_eh_frame_fde_64v1[] =
0, // Augmentation size.
elfcpp::DW_CFA_advance_loc + 1,
elfcpp::DW_CFA_register, 65, 12,
- elfcpp::DW_CFA_advance_loc + 4,
+ elfcpp::DW_CFA_advance_loc + 5,
elfcpp::DW_CFA_restore_extended, 65
};
@@ -3999,7 +4132,7 @@ static const unsigned char glink_eh_frame_fde_64v2[] =
0, // Augmentation size.
elfcpp::DW_CFA_advance_loc + 1,
elfcpp::DW_CFA_register, 65, 0,
- elfcpp::DW_CFA_advance_loc + 4,
+ elfcpp::DW_CFA_advance_loc + 7,
elfcpp::DW_CFA_restore_extended, 65
};
@@ -4066,7 +4199,8 @@ class Stub_table : public Output_relaxed_input_section
orig_data_size_(owner->current_data_size()),
plt_size_(0), last_plt_size_(0),
branch_size_(0), last_branch_size_(0), min_size_threshold_(0),
- eh_frame_added_(false), need_save_res_(false), uniq_(id)
+ need_save_res_(false), uniq_(id), tls_get_addr_opt_bctrl_(-1u),
+ plt_fde_len_(0)
{
this->set_output_section(output_section);
@@ -4227,34 +4361,17 @@ class Stub_table : public Output_relaxed_input_section
return false;
}
- // Add .eh_frame info for this stub section. Unlike other linker
- // generated .eh_frame this is added late in the link, because we
- // only want the .eh_frame info if this particular stub section is
- // non-empty.
+ // Generate a suitable FDE to describe code in this stub group.
void
- add_eh_frame(Layout* layout)
- {
- if (!this->eh_frame_added_)
- {
- if (!parameters->options().ld_generated_unwind_info())
- return;
+ init_plt_fde();
- // Since we add stub .eh_frame info late, it must be placed
- // after all other linker generated .eh_frame info so that
- // merge mapping need not be updated for input sections.
- // There is no provision to use a different CIE to that used
- // by .glink.
- if (!this->targ_->has_glink())
- return;
+ // Add .eh_frame info for this stub section.
+ void
+ add_eh_frame(Layout* layout);
- layout->add_eh_frame_for_plt(this,
- Eh_cie<size>::eh_frame_cie,
- sizeof (Eh_cie<size>::eh_frame_cie),
- default_fde,
- sizeof (default_fde));
- this->eh_frame_added_ = true;
- }
- }
+ // Remove .eh_frame info for this stub section.
+ void
+ remove_eh_frame(Layout* layout);
Target_powerpc<size, big_endian>*
targ() const
@@ -4306,7 +4423,12 @@ class Stub_table : public Output_relaxed_input_section
plt_call_size(typename Plt_stub_entries::const_iterator p) const
{
if (size == 32)
- return 16;
+ {
+ const Symbol* gsym = p->first.sym_;
+ if (this->targ_->is_tls_get_addr_opt(gsym))
+ return 12 * 4;
+ return 4 * 4;
+ }
bool is_iplt;
Address plt_addr = this->plt_off(p, &is_iplt);
@@ -4320,6 +4442,9 @@ class Stub_table : public Output_relaxed_input_section
got_addr += ppcobj->toc_base_offset();
Address off = plt_addr - got_addr;
unsigned int bytes = 4 * 4 + 4 * (ha(off) != 0);
+ const Symbol* gsym = p->first.sym_;
+ if (this->targ_->is_tls_get_addr_opt(gsym))
+ bytes += 13 * 4;
if (this->targ_->abiversion() < 2)
{
bool static_chain = parameters->options().plt_static_chain();
@@ -4329,6 +4454,12 @@ class Stub_table : public Output_relaxed_input_section
+ 8 * thread_safe
+ 4 * (ha(off + 8 + 8 * static_chain) != ha(off)));
}
+ return bytes;
+ }
+
+ unsigned int
+ plt_call_align(unsigned int bytes) const
+ {
unsigned int align = 1 << parameters->options().plt_align();
if (align > 1)
bytes = (bytes + align - 1) & -align;
@@ -4468,13 +4599,16 @@ class Stub_table : public Output_relaxed_input_section
// a stub table, it is zero for the first few iterations, then
// increases monotonically.
Address min_size_threshold_;
- // Whether .eh_frame info has been created for this stub section.
- bool eh_frame_added_;
// Set if this stub group needs a copy of out-of-line register
// save/restore functions.
bool need_save_res_;
// Per stub table unique identifier.
uint32_t uniq_;
+ // The bctrl in the __tls_get_addr_opt stub, if present.
+ unsigned int tls_get_addr_opt_bctrl_;
+ // FDE unwind info for this stub group.
+ unsigned int plt_fde_len_;
+ unsigned char plt_fde_[20];
};
// Add a plt call stub, if we do not already have one for this
@@ -4503,6 +4637,12 @@ Stub_table<size, big_endian>::add_plt_call_entry(
p.first->second.localentry0_ = 1;
this->targ_->set_has_localentry0();
}
+ if (this->targ_->is_tls_get_addr_opt(gsym))
+ {
+ this->targ_->set_has_tls_get_addr_opt();
+ this->tls_get_addr_opt_bctrl_ = this->plt_size_ - 5 * 4;
+ }
+ this->plt_size_ = this->plt_call_align(this->plt_size_);
}
if (size == 64
&& !tocsave
@@ -4528,6 +4668,7 @@ Stub_table<size, big_endian>::add_plt_call_entry(
if (p.second)
{
this->plt_size_ = ent.off_ + this->plt_call_size(p.first);
+ this->plt_size_ = this->plt_call_align(this->plt_size_);
if (size == 64
&& this->targ_->is_elfv2_localentry0(object, locsym_index))
{
@@ -4647,6 +4788,94 @@ Stub_table<size, big_endian>::find_long_branch_entry(
return p->second;
}
+// Generate a suitable FDE to describe code in this stub group.
+// The __tls_get_addr_opt call stub needs to describe where it saves
+// LR, to support exceptions that might be thrown from __tls_get_addr.
+
+template<int size, bool big_endian>
+void
+Stub_table<size, big_endian>::init_plt_fde()
+{
+ unsigned char* p = this->plt_fde_;
+ // offset pcrel sdata4, size udata4, and augmentation size byte.
+ memset (p, 0, 9);
+ p += 9;
+ if (this->tls_get_addr_opt_bctrl_ != -1u)
+ {
+ unsigned int to_bctrl = this->tls_get_addr_opt_bctrl_ / 4;
+ if (to_bctrl < 64)
+ *p++ = elfcpp::DW_CFA_advance_loc + to_bctrl;
+ else if (to_bctrl < 256)
+ {
+ *p++ = elfcpp::DW_CFA_advance_loc1;
+ *p++ = to_bctrl;
+ }
+ else if (to_bctrl < 65536)
+ {
+ *p++ = elfcpp::DW_CFA_advance_loc2;
+ elfcpp::Swap<16, big_endian>::writeval(p, to_bctrl);
+ p += 2;
+ }
+ else
+ {
+ *p++ = elfcpp::DW_CFA_advance_loc4;
+ elfcpp::Swap<32, big_endian>::writeval(p, to_bctrl);
+ p += 4;
+ }
+ *p++ = elfcpp::DW_CFA_offset_extended_sf;
+ *p++ = 65;
+ *p++ = -(this->targ_->stk_linker() / 8) & 0x7f;
+ *p++ = elfcpp::DW_CFA_advance_loc + 4;
+ *p++ = elfcpp::DW_CFA_restore_extended;
+ *p++ = 65;
+ }
+ this->plt_fde_len_ = p - this->plt_fde_;
+}
+
+// Add .eh_frame info for this stub section. Unlike other linker
+// generated .eh_frame this is added late in the link, because we
+// only want the .eh_frame info if this particular stub section is
+// non-empty.
+
+template<int size, bool big_endian>
+void
+Stub_table<size, big_endian>::add_eh_frame(Layout* layout)
+{
+ if (!parameters->options().ld_generated_unwind_info())
+ return;
+
+ // Since we add stub .eh_frame info late, it must be placed
+ // after all other linker generated .eh_frame info so that
+ // merge mapping need not be updated for input sections.
+ // There is no provision to use a different CIE to that used
+ // by .glink.
+ if (!this->targ_->has_glink())
+ return;
+
+ if (this->plt_size_ + this->branch_size_ + this->need_save_res_ == 0)
+ return;
+
+ this->init_plt_fde();
+ layout->add_eh_frame_for_plt(this,
+ Eh_cie<size>::eh_frame_cie,
+ sizeof (Eh_cie<size>::eh_frame_cie),
+ this->plt_fde_, this->plt_fde_len_);
+}
+
+template<int size, bool big_endian>
+void
+Stub_table<size, big_endian>::remove_eh_frame(Layout* layout)
+{
+ if (this->plt_fde_len_ != 0)
+ {
+ layout->remove_eh_frame_for_plt(this,
+ Eh_cie<size>::eh_frame_cie,
+ sizeof (Eh_cie<size>::eh_frame_cie),
+ this->plt_fde_, this->plt_fde_len_);
+ this->plt_fde_len_ = 0;
+ }
+}
+
// A class to handle .glink.
template<int size, bool big_endian>
@@ -4846,13 +5075,15 @@ Stub_table<size, big_endian>::define_stub_syms(Symbol_table* symtab)
sprintf(localname, "%x", cs->first.locsym_);
symname = localname;
}
+ else if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+ symname = this->targ_->tls_get_addr_opt()->name();
else
symname = cs->first.sym_->name();
char* name = new char[8 + 10 + strlen(obj) + strlen(symname) + strlen(add) + 1];
sprintf(name, "%08x.plt_call.%s%s%s", this->uniq_, obj, symname, add);
Address value
= this->stub_address() - this->address() + cs->second.off_;
- unsigned int stub_size = this->plt_call_size(cs);
+ unsigned int stub_size = this->plt_call_align(this->plt_call_size(cs));
this->targ_->define_local(symtab, name, this, value, stub_size);
}
}
@@ -4961,6 +5192,33 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
}
p = oview + cs->second.off_;
+ const Symbol* gsym = cs->first.sym_;
+ if (this->targ_->is_tls_get_addr_opt(gsym))
+ {
+ write_insn<big_endian>(p, ld_11_3 + 0);
+ p += 4;
+ write_insn<big_endian>(p, ld_12_3 + 8);
+ p += 4;
+ write_insn<big_endian>(p, mr_0_3);
+ p += 4;
+ write_insn<big_endian>(p, cmpdi_11_0);
+ p += 4;
+ write_insn<big_endian>(p, add_3_12_13);
+ p += 4;
+ write_insn<big_endian>(p, beqlr);
+ p += 4;
+ write_insn<big_endian>(p, mr_3_0);
+ p += 4;
+ if (!cs->second.localentry0_)
+ {
+ write_insn<big_endian>(p, mflr_11);
+ p += 4;
+ write_insn<big_endian>(p, (std_11_1
+ + this->targ_->stk_linker()));
+ p += 4;
+ }
+ use_fake_dep = thread_safe;
+ }
if (ha(off) != 0)
{
if (cs->second.r2save_)
@@ -5047,7 +5305,20 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
p += 4;
}
}
- if (thread_safe && !use_fake_dep)
+ if (!cs->second.localentry0_
+ && this->targ_->is_tls_get_addr_opt(gsym))
+ {
+ write_insn<big_endian>(p, bctrl);
+ p += 4;
+ write_insn<big_endian>(p, ld_2_1 + this->targ_->stk_toc());
+ p += 4;
+ write_insn<big_endian>(p, ld_11_1 + this->targ_->stk_linker());
+ p += 4;
+ write_insn<big_endian>(p, mtlr_11);
+ p += 4;
+ write_insn<big_endian>(p, blr);
+ }
+ else if (thread_safe && !use_fake_dep)
{
write_insn<big_endian>(p, cmpldi_2_0);
p += 4;
@@ -5123,6 +5394,26 @@ Stub_table<size, big_endian>::do_write(Output_file* of)
plt_addr += plt_base;
p = oview + cs->second.off_;
+ const Symbol* gsym = cs->first.sym_;
+ if (this->targ_->is_tls_get_addr_opt(gsym))
+ {
+ write_insn<big_endian>(p, lwz_11_3 + 0);
+ p += 4;
+ write_insn<big_endian>(p, lwz_12_3 + 4);
+ p += 4;
+ write_insn<big_endian>(p, mr_0_3);
+ p += 4;
+ write_insn<big_endian>(p, cmpwi_11_0);
+ p += 4;
+ write_insn<big_endian>(p, add_3_12_2);
+ p += 4;
+ write_insn<big_endian>(p, beqlr);
+ p += 4;
+ write_insn<big_endian>(p, mr_3_0);
+ p += 4;
+ write_insn<big_endian>(p, nop);
+ p += 4;
+ }
if (parameters->options().output_is_position_independent())
{
Address got_addr;
@@ -6175,7 +6466,7 @@ Target_powerpc<size, big_endian>::Scan::local(
const elfcpp::Sym<size, big_endian>& lsym,
bool is_discarded)
{
- this->maybe_skip_tls_get_addr_call(r_type, NULL);
+ this->maybe_skip_tls_get_addr_call(target, r_type, NULL);
if ((size == 64 && r_type == elfcpp::R_PPC64_TLSGD)
|| (size == 32 && r_type == elfcpp::R_PPC_TLSGD))
@@ -6626,7 +6917,7 @@ Target_powerpc<size, big_endian>::Scan::local(
shndx = ppc_object->adjust_sym_shndx(r_sym, shndx, &is_ordinary);
if (is_ordinary && shndx == ppc_object->toc_shndx())
{
- Address dst_off = lsym.get_st_value() + reloc.get_r_offset();
+ Address dst_off = lsym.get_st_value() + reloc.get_r_addend();
if (dst_off < ppc_object->section_size(shndx))
{
bool ok = false;
@@ -6722,9 +7013,15 @@ Target_powerpc<size, big_endian>::Scan::global(
unsigned int r_type,
Symbol* gsym)
{
- if (this->maybe_skip_tls_get_addr_call(r_type, gsym) == Track_tls::SKIP)
+ if (this->maybe_skip_tls_get_addr_call(target, r_type, gsym)
+ == Track_tls::SKIP)
return;
+ if (target->replace_tls_get_addr(gsym))
+ // Change a __tls_get_addr reference to __tls_get_addr_opt
+ // so dynamic relocs are emitted against the latter symbol.
+ gsym = target->tls_get_addr_opt();
+
if ((size == 64 && r_type == elfcpp::R_PPC64_TLSGD)
|| (size == 32 && r_type == elfcpp::R_PPC_TLSGD))
{
@@ -7294,7 +7591,7 @@ Target_powerpc<size, big_endian>::Scan::global(
if (shndx == sym_object->toc_shndx())
{
Sized_symbol<size>* sym = symtab->get_sized_symbol<size>(gsym);
- Address dst_off = sym->value() + reloc.get_r_offset();
+ Address dst_off = sym->value() + reloc.get_r_addend();
if (dst_off < sym_object->section_size(shndx))
{
bool ok = false;
@@ -7660,8 +7957,10 @@ Target_powerpc<size, big_endian>::scan_relocs(
{
if (parameters->options().user_set_plt_localentry())
plt_localentry0 = parameters->options().plt_localentry();
- else
- plt_localentry0 = symtab->lookup("GLIBC_2.26", NULL) != NULL;
+ if (plt_localentry0
+ && symtab->lookup("GLIBC_2.26", NULL) == NULL)
+ gold_warning(_("--plt-localentry is especially dangerous without "
+ "ld.so support to detect ABI violations"));
}
this->plt_localentry0_ = plt_localentry0;
this->plt_localentry0_init_ = true;
@@ -7852,6 +8151,8 @@ Target_powerpc<size, big_endian>::do_finalize_sections(
odyn->add_section_plus_offset(elfcpp::DT_PPC_GOT,
this->got_, this->got_->g_o_t());
}
+ if (this->has_tls_get_addr_opt_)
+ odyn->add_constant(elfcpp::DT_PPC_OPT, elfcpp::PPC_OPT_TLS);
}
else
{
@@ -7863,9 +8164,12 @@ Target_powerpc<size, big_endian>::do_finalize_sections(
(this->glink_->pltresolve_size
- 32));
}
- if (this->has_localentry0_)
+ if (this->has_localentry0_ || this->has_tls_get_addr_opt_)
odyn->add_constant(elfcpp::DT_PPC64_OPT,
- elfcpp::PPC64_OPT_LOCALENTRY);
+ ((this->has_localentry0_
+ ? elfcpp::PPC64_OPT_LOCALENTRY : 0)
+ | (this->has_tls_get_addr_opt_
+ ? elfcpp::PPC64_OPT_TLS : 0)));
}
}
@@ -7983,9 +8287,12 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
if (view == NULL)
return true;
+ if (target->replace_tls_get_addr(gsym))
+ gsym = static_cast<const Sized_symbol<size>*>(target->tls_get_addr_opt());
+
const elfcpp::Rela<size, big_endian> rela(preloc);
unsigned int r_type = elfcpp::elf_r_type<size>(rela.get_r_info());
- switch (this->maybe_skip_tls_get_addr_call(r_type, gsym))
+ switch (this->maybe_skip_tls_get_addr_call(target, r_type, gsym))
{
case Track_tls::NOT_EXPECTED:
gold_error_at_location(relinfo, relnum, rela.get_r_offset(),
@@ -8033,11 +8340,20 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
}
else
{
- Stub_table<size, big_endian>* stub_table
- = object->stub_table(relinfo->data_shndx);
+ Stub_table<size, big_endian>* stub_table = NULL;
+ if (target->stub_tables().size() == 1)
+ stub_table = target->stub_tables()[0];
+ if (stub_table == NULL
+ && !(size == 32
+ && gsym != NULL
+ && !parameters->options().output_is_position_independent()
+ && !is_branch_reloc(r_type)))
+ stub_table = object->stub_table(relinfo->data_shndx);
if (stub_table == NULL)
{
- // This is a ref from a data section to an ifunc symbol.
+ // This is a ref from a data section to an ifunc symbol,
+ // or a non-branch reloc for which we always want to use
+ // one set of stubs for resolving function addresses.
if (target->stub_tables().size() != 0)
stub_table = target->stub_tables()[0];
}
@@ -8110,8 +8426,8 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
{
typedef typename elfcpp::Swap<32, big_endian>::Valtype Valtype;
Valtype* wv = reinterpret_cast<Valtype*>(view);
- bool can_plt_call = localentry0;
- if (!localentry0 && rela.get_r_offset() + 8 <= view_size)
+ bool can_plt_call = localentry0 || target->is_tls_get_addr_opt(gsym);
+ if (!can_plt_call && rela.get_r_offset() + 8 <= view_size)
{
Valtype insn = elfcpp::Swap<32, big_endian>::readval(wv);
Valtype insn2 = elfcpp::Swap<32, big_endian>::readval(wv + 1);
@@ -8673,6 +8989,38 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
}
break;
+ case elfcpp::R_POWERPC_TPREL16_HA:
+ if (parameters->options().tls_optimize() && value + 0x8000 < 0x10000)
+ {
+ Insn* iview = reinterpret_cast<Insn*>(view - d_offset);
+ Insn insn = elfcpp::Swap<32, big_endian>::readval(iview);
+ if ((insn & ((0x3f << 26) | 0x1f << 16))
+ != ((15u << 26) | ((size == 32 ? 2 : 13) << 16)))
+ ;
+ else
+ {
+ elfcpp::Swap<32, big_endian>::writeval(iview, nop);
+ return true;
+ }
+ }
+ break;
+
+ case elfcpp::R_PPC64_TPREL16_LO_DS:
+ if (size == 32)
+ // R_PPC_TLSGD, R_PPC_TLSLD
+ break;
+ // Fall through.
+ case elfcpp::R_POWERPC_TPREL16_LO:
+ if (parameters->options().tls_optimize() && value + 0x8000 < 0x10000)
+ {
+ Insn* iview = reinterpret_cast<Insn*>(view - d_offset);
+ Insn insn = elfcpp::Swap<32, big_endian>::readval(iview);
+ insn &= ~(0x1f << 16);
+ insn |= (size == 32 ? 2 : 13) << 16;
+ elfcpp::Swap<32, big_endian>::writeval(iview, insn);
+ }
+ break;
+
case elfcpp::R_PPC64_ENTRY:
value = (target->got_section()->output_section()->address()
+ object->toc_base_offset());
@@ -9386,6 +9734,8 @@ Target_powerpc<size, big_endian>::relocate_relocs(
gold_assert(got2_addend != invalid_address);
}
+ const bool relocatable = parameters->options().relocatable();
+
unsigned char* pwrite = reloc_view;
bool zap_next = false;
for (size_t i = 0; i < reloc_count; ++i, prelocs += reloc_size)
@@ -9481,7 +9831,7 @@ Target_powerpc<size, big_endian>::relocate_relocs(
// In an object file, r_offset is an offset within the section.
// In an executable or dynamic object, generated by
// --emit-relocs, r_offset is an absolute address.
- if (!parameters->options().relocatable())
+ if (!relocatable)
{
offset += view_address;
if (static_cast<Address>(offset_in_output_section) != invalid_address)
@@ -9494,8 +9844,15 @@ Target_powerpc<size, big_endian>::relocate_relocs(
else if (strategy == Relocatable_relocs::RELOC_ADJUST_FOR_SECTION_RELA)
{
const Symbol_value<size>* psymval = object->local_symbol(orig_r_sym);
- gold_assert(os != NULL);
- addend = psymval->value(object, addend) - os->address();
+ addend = psymval->value(object, addend);
+ // In a relocatable link, the symbol value is relative to
+ // the start of the output section. For a non-relocatable
+ // link, we need to adjust the addend.
+ if (!relocatable)
+ {
+ gold_assert(os != NULL);
+ addend -= os->address();
+ }
}
else if (strategy == Relocatable_relocs::RELOC_SPECIAL)
{
@@ -9518,7 +9875,7 @@ Target_powerpc<size, big_endian>::relocate_relocs(
else
gold_unreachable();
- if (!parameters->options().relocatable())
+ if (!relocatable)
{
if (r_type == elfcpp::R_POWERPC_GOT_TLSGD16
|| r_type == elfcpp::R_POWERPC_GOT_TLSGD16_LO
diff --git a/gold/pread.c b/gold/pread.c
index 0202fe5..8fea976 100644
--- a/gold/pread.c
+++ b/gold/pread.c
@@ -1,6 +1,6 @@
/* pread.c -- version of pread for gold. */
-/* Copyright (C) 2006-2017 Free Software Foundation, Inc.
+/* Copyright (C) 2006-2018 Free Software Foundation, Inc.
Written by Ian Lance Taylor <iant@google.com>.
This file is part of gold.
diff --git a/gold/readsyms.cc b/gold/readsyms.cc
index 10b940e..a76432e 100644
--- a/gold/readsyms.cc
+++ b/gold/readsyms.cc
@@ -1,6 +1,6 @@
// readsyms.cc -- read input file symbols for gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/readsyms.h b/gold/readsyms.h
index d9e4e6b..46c4df1 100644
--- a/gold/readsyms.h
+++ b/gold/readsyms.h
@@ -1,6 +1,6 @@
// readsyms.h -- read input file symbols for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/reduced_debug_output.cc b/gold/reduced_debug_output.cc
index 5ecc339..77653af 100644
--- a/gold/reduced_debug_output.cc
+++ b/gold/reduced_debug_output.cc
@@ -1,6 +1,6 @@
// reduced_debug_output.cc -- output reduced debugging information to save space
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Caleb Howe <cshowe@google.com>.
// This file is part of gold.
diff --git a/gold/reduced_debug_output.h b/gold/reduced_debug_output.h
index 7e43ac4..7894de1 100644
--- a/gold/reduced_debug_output.h
+++ b/gold/reduced_debug_output.h
@@ -1,6 +1,6 @@
// reduced_debug_output.h -- reduce debugging information -*- C++ -*-
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Caleb Howe <cshowe@google.com>.
// This file is part of gold.
diff --git a/gold/reloc-types.h b/gold/reloc-types.h
index eea7dd6..92b9d5b 100644
--- a/gold/reloc-types.h
+++ b/gold/reloc-types.h
@@ -1,6 +1,6 @@
// reloc-types.h -- ELF relocation templates for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/reloc.cc b/gold/reloc.cc
index 26d84d0..32d4f74 100644
--- a/gold/reloc.cc
+++ b/gold/reloc.cc
@@ -1,6 +1,6 @@
// reloc.cc -- relocate input files for gold.
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/reloc.h b/gold/reloc.h
index 7ec2474..a2bc03f 100644
--- a/gold/reloc.h
+++ b/gold/reloc.h
@@ -1,6 +1,6 @@
// reloc.h -- relocate input files for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/resolve.cc b/gold/resolve.cc
index 8f4d2e3..4a5784c 100644
--- a/gold/resolve.cc
+++ b/gold/resolve.cc
@@ -1,6 +1,6 @@
// resolve.cc -- symbol resolution for gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -92,9 +92,9 @@ Symbol::override_base(const elfcpp::Sym<size, big_endian>& sym,
Object* object, const char* version)
{
gold_assert(this->source_ == FROM_OBJECT);
- this->u_.from_object.object = object;
+ this->u1_.object = object;
this->override_version(version);
- this->u_.from_object.shndx = st_shndx;
+ this->u2_.shndx = st_shndx;
this->is_ordinary_shndx_ = is_ordinary;
// Don't override st_type from plugin placeholder symbols.
if (object->pluginobj() == NULL)
@@ -247,18 +247,28 @@ Symbol_table::resolve(Sized_symbol<size>* to,
Object* object, const char* version,
bool is_default_version)
{
+ bool to_is_ordinary;
+ const unsigned int to_shndx = to->shndx(&to_is_ordinary);
+
// It's possible for a symbol to be defined in an object file
// using .symver to give it a version, and for there to also be
// a linker script giving that symbol the same version. We
// don't want to give a multiple-definition error for this
// harmless redefinition.
- bool to_is_ordinary;
if (to->source() == Symbol::FROM_OBJECT
&& to->object() == object
- && is_ordinary
&& to->is_defined()
- && to->shndx(&to_is_ordinary) == st_shndx
+ && is_ordinary
&& to_is_ordinary
+ && to_shndx == st_shndx
+ && to->value() == sym.get_st_value())
+ return;
+
+ // Likewise for an absolute symbol defined twice with the same value.
+ if (!is_ordinary
+ && st_shndx == elfcpp::SHN_ABS
+ && !to_is_ordinary
+ && to_shndx == elfcpp::SHN_ABS
&& to->value() == sym.get_st_value())
return;
@@ -266,8 +276,8 @@ Symbol_table::resolve(Sized_symbol<size>* to,
{
Sized_target<size, big_endian>* sized_target;
sized_target = parameters->sized_target<size, big_endian>();
- sized_target->resolve(to, sym, object, version);
- return;
+ if (sized_target->resolve(to, sym, object, version))
+ return;
}
if (!object->is_dynamic())
@@ -350,8 +360,8 @@ Symbol_table::resolve(Sized_symbol<size>* to,
&& (sym.get_st_bind() == elfcpp::STB_WEAK
|| to->binding() == elfcpp::STB_WEAK)
&& orig_st_shndx != elfcpp::SHN_UNDEF
- && to->shndx(&to_is_ordinary) != elfcpp::SHN_UNDEF
&& to_is_ordinary
+ && to_shndx != elfcpp::SHN_UNDEF
&& sym.get_st_size() != 0 // Ignore weird 0-sized symbols.
&& to->symsize() != 0
&& (sym.get_st_type() != to->type()
@@ -362,7 +372,7 @@ Symbol_table::resolve(Sized_symbol<size>* to,
{
Symbol_location fromloc
= { object, orig_st_shndx, static_cast<off_t>(sym.get_st_value()) };
- Symbol_location toloc = { to->object(), to->shndx(&to_is_ordinary),
+ Symbol_location toloc = { to->object(), to_shndx,
static_cast<off_t>(to->value()) };
this->candidate_odr_violations_[to->name()].insert(fromloc);
this->candidate_odr_violations_[to->name()].insert(toloc);
@@ -917,6 +927,61 @@ Symbol_table::report_resolve_problem(bool is_error, const char* msg,
gold_info("%s: %s: previous definition here", program_name, objname);
}
+// Completely override existing symbol. Everything bar name_,
+// version_, and is_forced_local_ flag are copied. version_ is
+// cleared if from->version_ is clear. Returns true if this symbol
+// should be forced local.
+bool
+Symbol::clone(const Symbol* from)
+{
+ // Don't allow cloning after dynamic linking info is attached to symbols.
+ // We aren't prepared to merge such.
+ gold_assert(!this->has_symtab_index() && !from->has_symtab_index());
+ gold_assert(!this->has_dynsym_index() && !from->has_dynsym_index());
+ gold_assert(this->got_offset_list() == NULL
+ && from->got_offset_list() == NULL);
+ gold_assert(!this->has_plt_offset() && !from->has_plt_offset());
+
+ if (!from->version_)
+ this->version_ = from->version_;
+ this->u1_ = from->u1_;
+ this->u2_ = from->u2_;
+ this->type_ = from->type_;
+ this->binding_ = from->binding_;
+ this->visibility_ = from->visibility_;
+ this->nonvis_ = from->nonvis_;
+ this->source_ = from->source_;
+ this->is_def_ = from->is_def_;
+ this->is_forwarder_ = from->is_forwarder_;
+ this->has_alias_ = from->has_alias_;
+ this->needs_dynsym_entry_ = from->needs_dynsym_entry_;
+ this->in_reg_ = from->in_reg_;
+ this->in_dyn_ = from->in_dyn_;
+ this->needs_dynsym_value_ = from->needs_dynsym_value_;
+ this->has_warning_ = from->has_warning_;
+ this->is_copied_from_dynobj_ = from->is_copied_from_dynobj_;
+ this->is_ordinary_shndx_ = from->is_ordinary_shndx_;
+ this->in_real_elf_ = from->in_real_elf_;
+ this->is_defined_in_discarded_section_
+ = from->is_defined_in_discarded_section_;
+ this->undef_binding_set_ = from->undef_binding_set_;
+ this->undef_binding_weak_ = from->undef_binding_weak_;
+ this->is_predefined_ = from->is_predefined_;
+ this->is_protected_ = from->is_protected_;
+ this->non_zero_localentry_ = from->non_zero_localentry_;
+
+ return !this->is_forced_local_ && from->is_forced_local_;
+}
+
+template <int size>
+bool
+Sized_symbol<size>::clone(const Sized_symbol<size>* from)
+{
+ this->value_ = from->value_;
+ this->symsize_ = from->symsize_;
+ return Symbol::clone(from);
+}
+
// A special case of should_override which is only called for a strong
// defined symbol from a regular object file. This is used when
// defining special symbols.
@@ -952,13 +1017,10 @@ Symbol::override_base_with_special(const Symbol* from)
switch (from->source_)
{
case FROM_OBJECT:
- this->u_.from_object = from->u_.from_object;
- break;
case IN_OUTPUT_DATA:
- this->u_.in_output_data = from->u_.in_output_data;
- break;
case IN_OUTPUT_SEGMENT:
- this->u_.in_output_segment = from->u_.in_output_segment;
+ this->u1_ = from->u1_;
+ this->u2_ = from->u2_;
break;
case IS_CONSTANT:
case IS_UNDEFINED:
@@ -1119,4 +1181,11 @@ Symbol_table::override_with_special<64>(Sized_symbol<64>*,
const Sized_symbol<64>*);
#endif
+template
+bool
+Sized_symbol<32>::clone(const Sized_symbol<32>*);
+
+template
+bool
+Sized_symbol<64>::clone(const Sized_symbol<64>*);
} // End namespace gold.
diff --git a/gold/s390.cc b/gold/s390.cc
index a188268..3542ee6 100644
--- a/gold/s390.cc
+++ b/gold/s390.cc
@@ -1,6 +1,6 @@
// s390.cc -- s390 target support for gold.
-// Copyright (C) 2015-2017 Free Software Foundation, Inc.
+// Copyright (C) 2015-2018 Free Software Foundation, Inc.
// Written by Marcin Kościelnicki <koriakin@0x04.net>.
// This file is part of gold.
diff --git a/gold/script-c.h b/gold/script-c.h
index 084e78a..550f438 100644
--- a/gold/script-c.h
+++ b/gold/script-c.h
@@ -1,6 +1,6 @@
/* script-c.h -- C interface for linker scripts in gold. */
-/* Copyright (C) 2006-2017 Free Software Foundation, Inc.
+/* Copyright (C) 2006-2018 Free Software Foundation, Inc.
Written by Ian Lance Taylor <iant@google.com>.
This file is part of gold.
diff --git a/gold/script-sections.cc b/gold/script-sections.cc
index f411556..074b492 100644
--- a/gold/script-sections.cc
+++ b/gold/script-sections.cc
@@ -1,6 +1,6 @@
// script-sections.cc -- linker script SECTIONS for gold
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/script-sections.h b/gold/script-sections.h
index cbfdc03..9dbef7c 100644
--- a/gold/script-sections.h
+++ b/gold/script-sections.h
@@ -1,6 +1,6 @@
// script-sections.h -- linker script SECTIONS for gold -*- C++ -*-
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/script.cc b/gold/script.cc
index 67540a5..db243cf 100644
--- a/gold/script.cc
+++ b/gold/script.cc
@@ -1,6 +1,6 @@
// script.cc -- handle linker scripts for gold.
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/script.h b/gold/script.h
index 4f2f4fd..ec8ce8e 100644
--- a/gold/script.h
+++ b/gold/script.h
@@ -1,6 +1,6 @@
// script.h -- handle linker scripts for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/sparc.cc b/gold/sparc.cc
index 54c7c33..8551afd 100644
--- a/gold/sparc.cc
+++ b/gold/sparc.cc
@@ -1,6 +1,6 @@
// sparc.cc -- sparc target support for gold.
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by David S. Miller <davem@davemloft.net>.
// This file is part of gold.
@@ -4164,7 +4164,7 @@ Target_sparc<size, big_endian>::Relocate::relax_call(
if (op3 != 0x3d)
{
// First check RS1
- reg = (delay_insn >> 14) & 0x15;
+ reg = (delay_insn >> 14) & 0x1f;
if (reg == 15)
return;
diff --git a/gold/stringpool.cc b/gold/stringpool.cc
index 2544456..8480c40 100644
--- a/gold/stringpool.cc
+++ b/gold/stringpool.cc
@@ -1,6 +1,6 @@
// stringpool.cc -- a string pool for gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/stringpool.h b/gold/stringpool.h
index 5cacd09..45ddbee 100644
--- a/gold/stringpool.h
+++ b/gold/stringpool.h
@@ -1,6 +1,6 @@
// stringpool.h -- a string pool for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/symtab.cc b/gold/symtab.cc
index 43909ff..34551ac 100644
--- a/gold/symtab.cc
+++ b/gold/symtab.cc
@@ -1,6 +1,6 @@
// symtab.cc -- the gold symbol table
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -47,8 +47,8 @@ namespace gold
// Class Symbol.
-// Initialize fields in Symbol. This initializes everything except u_
-// and source_.
+// Initialize fields in Symbol. This initializes everything except
+// u1_, u2_ and source_.
void
Symbol::init_fields(const char* name, const char* version,
@@ -81,6 +81,7 @@ Symbol::init_fields(const char* name, const char* version,
this->undef_binding_weak_ = false;
this->is_predefined_ = false;
this->is_protected_ = false;
+ this->non_zero_localentry_ = false;
}
// Return the demangled version of the symbol's name, but only
@@ -119,8 +120,8 @@ Symbol::init_base_object(const char* name, const char* version, Object* object,
{
this->init_fields(name, version, sym.get_st_type(), sym.get_st_bind(),
sym.get_st_visibility(), sym.get_st_nonvis());
- this->u_.from_object.object = object;
- this->u_.from_object.shndx = st_shndx;
+ this->u1_.object = object;
+ this->u2_.shndx = st_shndx;
this->is_ordinary_shndx_ = is_ordinary;
this->source_ = FROM_OBJECT;
this->in_reg_ = !object->is_dynamic();
@@ -139,8 +140,8 @@ Symbol::init_base_output_data(const char* name, const char* version,
bool is_predefined)
{
this->init_fields(name, version, type, binding, visibility, nonvis);
- this->u_.in_output_data.output_data = od;
- this->u_.in_output_data.offset_is_from_end = offset_is_from_end;
+ this->u1_.output_data = od;
+ this->u2_.offset_is_from_end = offset_is_from_end;
this->source_ = IN_OUTPUT_DATA;
this->in_reg_ = true;
this->in_real_elf_ = true;
@@ -159,8 +160,8 @@ Symbol::init_base_output_segment(const char* name, const char* version,
bool is_predefined)
{
this->init_fields(name, version, type, binding, visibility, nonvis);
- this->u_.in_output_segment.output_segment = os;
- this->u_.in_output_segment.offset_base = offset_base;
+ this->u1_.output_segment = os;
+ this->u2_.offset_base = offset_base;
this->source_ = IN_OUTPUT_SEGMENT;
this->in_reg_ = true;
this->in_real_elf_ = true;
@@ -205,8 +206,8 @@ Symbol::allocate_base_common(Output_data* od)
{
gold_assert(this->is_common());
this->source_ = IN_OUTPUT_DATA;
- this->u_.in_output_data.output_data = od;
- this->u_.in_output_data.offset_is_from_end = false;
+ this->u1_.output_data = od;
+ this->u2_.offset_is_from_end = false;
}
// Initialize the fields in Sized_symbol for SYM in OBJECT.
@@ -487,19 +488,19 @@ Symbol::output_section() const
{
case FROM_OBJECT:
{
- unsigned int shndx = this->u_.from_object.shndx;
+ unsigned int shndx = this->u2_.shndx;
if (shndx != elfcpp::SHN_UNDEF && this->is_ordinary_shndx_)
{
- gold_assert(!this->u_.from_object.object->is_dynamic());
- gold_assert(this->u_.from_object.object->pluginobj() == NULL);
- Relobj* relobj = static_cast<Relobj*>(this->u_.from_object.object);
+ gold_assert(!this->u1_.object->is_dynamic());
+ gold_assert(this->u1_.object->pluginobj() == NULL);
+ Relobj* relobj = static_cast<Relobj*>(this->u1_.object);
return relobj->output_section(shndx);
}
return NULL;
}
case IN_OUTPUT_DATA:
- return this->u_.in_output_data.output_data->output_section();
+ return this->u1_.output_data->output_section();
case IN_OUTPUT_SEGMENT:
case IS_CONSTANT:
@@ -526,8 +527,8 @@ Symbol::set_output_section(Output_section* os)
break;
case IS_CONSTANT:
this->source_ = IN_OUTPUT_DATA;
- this->u_.in_output_data.output_data = os;
- this->u_.in_output_data.offset_is_from_end = false;
+ this->u1_.output_data = os;
+ this->u2_.offset_is_from_end = false;
break;
case IN_OUTPUT_SEGMENT:
case IS_UNDEFINED:
@@ -545,8 +546,8 @@ Symbol::set_output_segment(Output_segment* os, Segment_offset_base base)
{
gold_assert(this->is_predefined_);
this->source_ = IN_OUTPUT_SEGMENT;
- this->u_.in_output_segment.output_segment = os;
- this->u_.in_output_segment.offset_base = base;
+ this->u1_.output_segment = os;
+ this->u2_.offset_base = base;
}
// Set the symbol to undefined. This is used for pre-defined
@@ -989,7 +990,7 @@ Symbol_table::add_from_object(Object* object,
// ins.second: true if new entry was inserted, false if not.
Sized_symbol<size>* ret;
- bool was_undefined;
+ bool was_undefined_in_reg;
bool was_common;
if (!ins.second)
{
@@ -997,7 +998,7 @@ Symbol_table::add_from_object(Object* object,
ret = this->get_sized_symbol<size>(ins.first->second);
gold_assert(ret != NULL);
- was_undefined = ret->is_undefined();
+ was_undefined_in_reg = ret->is_undefined() && ret->in_reg();
// Commons from plugins are just placeholders.
was_common = ret->is_common() && ret->object()->pluginobj() == NULL;
@@ -1048,7 +1049,7 @@ Symbol_table::add_from_object(Object* object,
// it, then change it to NAME/VERSION.
ret = this->get_sized_symbol<size>(insdefault.first->second);
- was_undefined = ret->is_undefined();
+ was_undefined_in_reg = ret->is_undefined() && ret->in_reg();
// Commons from plugins are just placeholders.
was_common = ret->is_common() && ret->object()->pluginobj() == NULL;
@@ -1060,7 +1061,7 @@ Symbol_table::add_from_object(Object* object,
}
else
{
- was_undefined = false;
+ was_undefined_in_reg = false;
was_common = false;
Sized_target<size, big_endian>* target =
@@ -1104,9 +1105,10 @@ Symbol_table::add_from_object(Object* object,
ret->set_is_default();
}
- // Record every time we see a new undefined symbol, to speed up
- // archive groups.
- if (!was_undefined && ret->is_undefined())
+ // Record every time we see a new undefined symbol, to speed up archive
+ // groups. We only care about symbols undefined in regular objects here
+ // because undefined symbols only in dynamic objects should't trigger rescans.
+ if (!was_undefined_in_reg && ret->is_undefined() && ret->in_reg())
{
++this->saw_undefined_;
if (parameters->options().has_plugins())
@@ -1184,7 +1186,9 @@ Symbol_table::add_from_relobj(
const char* name = sym_names + st_name;
if (!parameters->options().relocatable()
- && strcmp (name, "__gnu_lto_slim") == 0)
+ && name[0] == '_'
+ && name[1] == '_'
+ && strcmp (name + (name[2] == '_'), "__gnu_lto_slim") == 0)
gold_info(_("%s: plugin needed to handle lto object"),
relobj->name().c_str());
@@ -1758,6 +1762,7 @@ template<int size, bool big_endian>
Sized_symbol<size>*
Symbol_table::define_special_symbol(const char** pname, const char** pversion,
bool only_if_ref,
+ elfcpp::STV visibility,
Sized_symbol<size>** poldsym,
bool* resolve_oldsym, bool is_forced_local)
{
@@ -1796,8 +1801,21 @@ Symbol_table::define_special_symbol(const char** pname, const char** pversion,
oldsym = this->lookup(*pname, *pversion);
if (oldsym == NULL && is_default_version)
oldsym = this->lookup(*pname, NULL);
- if (oldsym == NULL || !oldsym->is_undefined())
+ if (oldsym == NULL)
return NULL;
+ if (!oldsym->is_undefined())
+ {
+ // Skip if the old definition is from a regular object.
+ if (!oldsym->is_from_dynobj())
+ return NULL;
+
+ // If the symbol has hidden or internal visibility, ignore
+ // definition and reference from a dynamic object.
+ if ((visibility == elfcpp::STV_HIDDEN
+ || visibility == elfcpp::STV_INTERNAL)
+ && !oldsym->in_reg())
+ return NULL;
+ }
*pname = oldsym->name();
if (is_default_version)
@@ -1972,7 +1990,9 @@ Symbol_table::do_define_in_output_data(
{
#if defined(HAVE_TARGET_32_BIG) || defined(HAVE_TARGET_64_BIG)
sym = this->define_special_symbol<size, true>(&name, &version,
- only_if_ref, &oldsym,
+ only_if_ref,
+ visibility,
+ &oldsym,
&resolve_oldsym,
is_forced_local);
#else
@@ -1983,7 +2003,9 @@ Symbol_table::do_define_in_output_data(
{
#if defined(HAVE_TARGET_32_LITTLE) || defined(HAVE_TARGET_64_LITTLE)
sym = this->define_special_symbol<size, false>(&name, &version,
- only_if_ref, &oldsym,
+ only_if_ref,
+ visibility,
+ &oldsym,
&resolve_oldsym,
is_forced_local);
#else
@@ -2091,7 +2113,9 @@ Symbol_table::do_define_in_output_segment(
{
#if defined(HAVE_TARGET_32_BIG) || defined(HAVE_TARGET_64_BIG)
sym = this->define_special_symbol<size, true>(&name, &version,
- only_if_ref, &oldsym,
+ only_if_ref,
+ visibility,
+ &oldsym,
&resolve_oldsym,
is_forced_local);
#else
@@ -2102,7 +2126,9 @@ Symbol_table::do_define_in_output_segment(
{
#if defined(HAVE_TARGET_32_LITTLE) || defined(HAVE_TARGET_64_LITTLE)
sym = this->define_special_symbol<size, false>(&name, &version,
- only_if_ref, &oldsym,
+ only_if_ref,
+ visibility,
+ &oldsym,
&resolve_oldsym,
is_forced_local);
#else
@@ -2208,7 +2234,9 @@ Symbol_table::do_define_as_constant(
{
#if defined(HAVE_TARGET_32_BIG) || defined(HAVE_TARGET_64_BIG)
sym = this->define_special_symbol<size, true>(&name, &version,
- only_if_ref, &oldsym,
+ only_if_ref,
+ visibility,
+ &oldsym,
&resolve_oldsym,
is_forced_local);
#else
@@ -2219,7 +2247,9 @@ Symbol_table::do_define_as_constant(
{
#if defined(HAVE_TARGET_32_LITTLE) || defined(HAVE_TARGET_64_LITTLE)
sym = this->define_special_symbol<size, false>(&name, &version,
- only_if_ref, &oldsym,
+ only_if_ref,
+ visibility,
+ &oldsym,
&resolve_oldsym,
is_forced_local);
#else
@@ -2446,7 +2476,9 @@ Symbol_table::add_undefined_symbol_from_command_line(const char* name)
{
#if defined(HAVE_TARGET_32_BIG) || defined(HAVE_TARGET_64_BIG)
sym = this->define_special_symbol<size, true>(&name, &version,
- false, &oldsym,
+ false,
+ elfcpp::STV_DEFAULT,
+ &oldsym,
&resolve_oldsym,
false);
#else
@@ -2457,7 +2489,9 @@ Symbol_table::add_undefined_symbol_from_command_line(const char* name)
{
#if defined(HAVE_TARGET_32_LITTLE) || defined(HAVE_TARGET_64_LITTLE)
sym = this->define_special_symbol<size, false>(&name, &version,
- false, &oldsym,
+ false,
+ elfcpp::STV_DEFAULT,
+ &oldsym,
&resolve_oldsym,
false);
#else
diff --git a/gold/symtab.h b/gold/symtab.h
index 77552ae..fdb7511 100644
--- a/gold/symtab.h
+++ b/gold/symtab.h
@@ -1,6 +1,6 @@
// symtab.h -- the gold symbol table -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -159,7 +159,7 @@ class Symbol
object() const
{
gold_assert(this->source_ == FROM_OBJECT);
- return this->u_.from_object.object;
+ return this->u1_.object;
}
// Return the index of the section in the input relocatable or
@@ -169,7 +169,7 @@ class Symbol
{
gold_assert(this->source_ == FROM_OBJECT);
*is_ordinary = this->is_ordinary_shndx_;
- return this->u_.from_object.shndx;
+ return this->u2_.shndx;
}
// Return the output data section with which this symbol is
@@ -179,7 +179,7 @@ class Symbol
output_data() const
{
gold_assert(this->source_ == IN_OUTPUT_DATA);
- return this->u_.in_output_data.output_data;
+ return this->u1_.output_data;
}
// If this symbol was defined with respect to an output data
@@ -188,7 +188,7 @@ class Symbol
offset_is_from_end() const
{
gold_assert(this->source_ == IN_OUTPUT_DATA);
- return this->u_.in_output_data.offset_is_from_end;
+ return this->u2_.offset_is_from_end;
}
// Return the output segment with which this symbol is associated,
@@ -198,7 +198,7 @@ class Symbol
output_segment() const
{
gold_assert(this->source_ == IN_OUTPUT_SEGMENT);
- return this->u_.in_output_segment.output_segment;
+ return this->u1_.output_segment;
}
// If this symbol was defined with respect to an output segment,
@@ -207,7 +207,7 @@ class Symbol
offset_base() const
{
gold_assert(this->source_ == IN_OUTPUT_SEGMENT);
- return this->u_.in_output_segment.offset_base;
+ return this->u2_.offset_base;
}
// Return the symbol binding.
@@ -329,6 +329,11 @@ class Symbol
set_in_reg()
{ this->in_reg_ = true; }
+ // Forget this symbol was seen in a regular object.
+ void
+ clear_in_reg()
+ { this->in_reg_ = false; }
+
// Return whether this symbol has been seen in a dynamic object.
bool
in_dyn() const
@@ -883,6 +888,23 @@ class Symbol
set_is_protected()
{ this->is_protected_ = true; }
+ // Return state of PowerPC64 ELFv2 specific flag.
+ bool
+ non_zero_localentry() const
+ { return this->non_zero_localentry_; }
+
+ // Set PowerPC64 ELFv2 specific flag.
+ void
+ set_non_zero_localentry()
+ { this->non_zero_localentry_ = true; }
+
+ // Completely override existing symbol. Everything bar name_,
+ // version_, and is_forced_local_ flag are copied. version_ is
+ // cleared if from->version_ is clear. Returns true if this symbol
+ // should be forced local.
+ bool
+ clone(const Symbol* from);
+
protected:
// Instances of this class should always be created at a specific
// size.
@@ -963,38 +985,38 @@ class Symbol
union
{
- // This struct is used if SOURCE_ == FROM_OBJECT.
- struct
- {
- // Object in which symbol is defined, or in which it was first
- // seen.
- Object* object;
- // Section number in object_ in which symbol is defined.
- unsigned int shndx;
- } from_object;
-
- // This struct is used if SOURCE_ == IN_OUTPUT_DATA.
- struct
- {
- // Output_data in which symbol is defined. Before
- // Layout::finalize the symbol's value is an offset within the
- // Output_data.
- Output_data* output_data;
- // True if the offset is from the end, false if the offset is
- // from the beginning.
- bool offset_is_from_end;
- } in_output_data;
-
- // This struct is used if SOURCE_ == IN_OUTPUT_SEGMENT.
- struct
- {
- // Output_segment in which the symbol is defined. Before
- // Layout::finalize the symbol's value is an offset.
- Output_segment* output_segment;
- // The base to use for the offset before Layout::finalize.
- Segment_offset_base offset_base;
- } in_output_segment;
- } u_;
+ // This is used if SOURCE_ == FROM_OBJECT.
+ // Object in which symbol is defined, or in which it was first
+ // seen.
+ Object* object;
+
+ // This is used if SOURCE_ == IN_OUTPUT_DATA.
+ // Output_data in which symbol is defined. Before
+ // Layout::finalize the symbol's value is an offset within the
+ // Output_data.
+ Output_data* output_data;
+
+ // This is used if SOURCE_ == IN_OUTPUT_SEGMENT.
+ // Output_segment in which the symbol is defined. Before
+ // Layout::finalize the symbol's value is an offset.
+ Output_segment* output_segment;
+ } u1_;
+
+ union
+ {
+ // This is used if SOURCE_ == FROM_OBJECT.
+ // Section number in object in which symbol is defined.
+ unsigned int shndx;
+
+ // This is used if SOURCE_ == IN_OUTPUT_DATA.
+ // True if the offset is from the end, false if the offset is
+ // from the beginning.
+ bool offset_is_from_end;
+
+ // This is used if SOURCE_ == IN_OUTPUT_SEGMENT.
+ // The base to use for the offset before Layout::finalize.
+ Segment_offset_base offset_base;
+ } u2_;
// The index of this symbol in the output file. If the symbol is
// not going into the output file, this value is -1U. This field
@@ -1008,16 +1030,16 @@ class Symbol
// non-zero value during Layout::finalize.
unsigned int dynsym_index_;
- // The GOT section entries for this symbol. A symbol may have more
- // than one GOT offset (e.g., when mixing modules compiled with two
- // different TLS models), but will usually have at most one.
- Got_offset_list got_offsets_;
-
// If this symbol has an entry in the PLT section, then this is the
// offset from the start of the PLT section. This is -1U if there
// is no PLT entry.
unsigned int plt_offset_;
+ // The GOT section entries for this symbol. A symbol may have more
+ // than one GOT offset (e.g., when mixing modules compiled with two
+ // different TLS models), but will usually have at most one.
+ Got_offset_list got_offsets_;
+
// Symbol type (bits 0 to 3).
elfcpp::STT type_ : 4;
// Symbol binding (bits 4 to 7).
@@ -1059,7 +1081,7 @@ class Symbol
// True if this symbol was forced to local visibility by a version
// script (bit 28).
bool is_forced_local_ : 1;
- // True if the field u_.from_object.shndx is an ordinary section
+ // True if the field u2_.shndx is an ordinary section
// index, not one of the special codes from SHN_LORESERVE to
// SHN_HIRESERVE (bit 29).
bool is_ordinary_shndx_ : 1;
@@ -1084,6 +1106,8 @@ class Symbol
// The visibility_ field will be STV_DEFAULT in this case because we
// must treat it as such from outside the shared object.
bool is_protected_ : 1;
+ // Used by PowerPC64 ELFv2 to track st_other localentry (bit 36).
+ bool non_zero_localentry_ : 1;
};
// The parts of a symbol which are size specific. Using a template
@@ -1170,6 +1194,13 @@ class Sized_symbol : public Symbol
void
allocate_common(Output_data*, Value_type value);
+ // Completely override existing symbol. Everything bar name_,
+ // version_, and is_forced_local_ flag are copied. version_ is
+ // cleared if from->version_ is clear. Returns true if this symbol
+ // should be forced local.
+ bool
+ clone(const Sized_symbol<size>* from);
+
private:
Sized_symbol(const Sized_symbol&);
Sized_symbol& operator=(const Sized_symbol&);
@@ -1675,6 +1706,15 @@ class Symbol_table
version_script() const
{ return version_script_; }
+ // Completely override existing symbol.
+ template<int size>
+ void
+ clone(Sized_symbol<size>* to, const Sized_symbol<size>* from)
+ {
+ if (to->clone(from))
+ this->force_local(to);
+ }
+
private:
Symbol_table(const Symbol_table&);
Symbol_table& operator=(const Symbol_table&);
@@ -1790,7 +1830,8 @@ class Symbol_table
template<int size, bool big_endian>
Sized_symbol<size>*
define_special_symbol(const char** pname, const char** pversion,
- bool only_if_ref, Sized_symbol<size>** poldsym,
+ bool only_if_ref, elfcpp::STV visibility,
+ Sized_symbol<size>** poldsym,
bool* resolve_oldsym, bool is_forced_local);
// Define a symbol in an Output_data, sized version.
diff --git a/gold/system.h b/gold/system.h
index 5a3e001..b80e8f2 100644
--- a/gold/system.h
+++ b/gold/system.h
@@ -1,6 +1,6 @@
// system.h -- general definitions for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -49,8 +49,14 @@
# define gettext(Msgid) (Msgid)
# define dgettext(Domainname, Msgid) (Msgid)
# define dcgettext(Domainname, Msgid, Category) (Msgid)
-# define textdomain(Domainname) do {} while (0) /* nothing */
-# define bindtextdomain(Domainname, Dirname) do {} while (0) /* nothing */
+# define ngettext(Msgid1, Msgid2, n) \
+ (n == 1 ? Msgid1 : Msgid2)
+# define dngettext(Domainname, Msgid1, Msgid2, n) \
+ (n == 1 ? Msgid1 : Msgid2)
+# define dcngettext(Domainname, Msgid1, Msgid2, n, Category) \
+ (n == 1 ? Msgid1 : Msgid2)
+# define textdomain(Domainname) do {} while (0)
+# define bindtextdomain(Domainname, Dirname) do {} while (0)
# define _(String) (String)
# define N_(String) (String)
#endif
diff --git a/gold/target-reloc.h b/gold/target-reloc.h
index c8b86c6..f52e42f 100644
--- a/gold/target-reloc.h
+++ b/gold/target-reloc.h
@@ -1,6 +1,6 @@
// target-reloc.h -- target specific relocation support -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -755,6 +755,8 @@ relocate_relocs(
unsigned char* pwrite = reloc_view;
+ const bool relocatable = parameters->options().relocatable();
+
for (size_t i = 0; i < reloc_count; ++i, prelocs += reloc_size)
{
Relocatable_relocs::Reloc_strategy strategy = relinfo->rr->strategy(i);
@@ -857,7 +859,7 @@ relocate_relocs(
// In an object file, r_offset is an offset within the section.
// In an executable or dynamic object, generated by
// --emit-relocs, r_offset is an absolute address.
- if (!parameters->options().relocatable())
+ if (!relocatable)
{
new_offset += view_address;
if (offset_in_output_section != invalid_address)
@@ -892,10 +894,17 @@ relocate_relocs(
{
case Relocatable_relocs::RELOC_ADJUST_FOR_SECTION_RELA:
{
- typename elfcpp::Elf_types<size>::Elf_Swxword addend;
- addend = Classify_reloc::get_r_addend(&reloc);
- gold_assert(os != NULL);
- addend = psymval->value(object, addend) - os->address();
+ typename elfcpp::Elf_types<size>::Elf_Swxword addend
+ = Classify_reloc::get_r_addend(&reloc);
+ addend = psymval->value(object, addend);
+ // In a relocatable link, the symbol value is relative to
+ // the start of the output section. For a non-relocatable
+ // link, we need to adjust the addend.
+ if (!relocatable)
+ {
+ gold_assert(os != NULL);
+ addend -= os->address();
+ }
Classify_reloc::put_r_addend(&reloc_write, addend);
}
break;
diff --git a/gold/target-select.cc b/gold/target-select.cc
index 0f70456..4c0cc17 100644
--- a/gold/target-select.cc
+++ b/gold/target-select.cc
@@ -1,6 +1,6 @@
// target-select.cc -- select a target for an object file
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/target-select.h b/gold/target-select.h
index df6829f..0cdd005 100644
--- a/gold/target-select.h
+++ b/gold/target-select.h
@@ -1,6 +1,6 @@
// target-select.h -- select a target for an object file -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/target.cc b/gold/target.cc
index 643b728..b3b145c 100644
--- a/gold/target.cc
+++ b/gold/target.cc
@@ -1,6 +1,6 @@
// target.cc -- target support for gold.
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Doug Kwan <dougkwan@google.com>.
// This file is part of gold.
diff --git a/gold/target.h b/gold/target.h
index 5ca8435..059d2d0 100644
--- a/gold/target.h
+++ b/gold/target.h
@@ -1,6 +1,6 @@
// target.h -- target support for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -852,7 +852,7 @@ class Sized_target : public Target
// pre-existing symbol. SYM is the new symbol, seen in OBJECT.
// VERSION is the version of SYM. This will only be called if
// has_resolve() returns true.
- virtual void
+ virtual bool
resolve(Symbol*, const elfcpp::Sym<size, big_endian>&, Object*,
const char*)
{ gold_unreachable(); }
diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am
index 26ee77a..16cae80 100644
--- a/gold/testsuite/Makefile.am
+++ b/gold/testsuite/Makefile.am
@@ -157,6 +157,10 @@ endif NATIVE_OR_CROSS_LINKER
if NATIVE_LINKER
if GCC
+# Test empty command line error conditions.
+check_SCRIPTS += empty_command_line_test.sh
+empty_command_line_test.sh: gcctestdir/ld
+
# Each of these .o's is a useful, small complete program. They're
# particularly useful for making sure ld-new's flags do what they're
# supposed to (hence their names), but are used for many tests that
@@ -174,7 +178,7 @@ incremental_test_1.o: incremental_test_1.c
incremental_test_2.o: incremental_test_2.c
$(COMPILE) -O0 -c -ffunction-sections -g -o $@ $<
incremental_test: incremental_test_1.o incremental_test_2.o gcctestdir/ld
- $(LINK) -Bgcctestdir/ -Wl,--incremental-full -Wl,-z,norelro incremental_test_1.o incremental_test_2.o -Wl,-debug 2> incremental_test.cmdline
+ $(LINK) -Bgcctestdir/ -Wl,--incremental-full -Wl,-z,norelro,-no-pie incremental_test_1.o incremental_test_2.o -Wl,-debug 2> incremental_test.cmdline
incremental_test.stdout: incremental_test ../incremental-dump
../incremental-dump incremental_test > $@
@@ -340,6 +344,16 @@ section_sorting_name: section_sorting_name.o gcctestdir/ld
section_sorting_name.stdout: section_sorting_name
$(TEST_NM) -n --synthetic section_sorting_name > section_sorting_name.stdout
+check_SCRIPTS += text_unlikely_segment.sh
+check_DATA += text_unlikely_segment_readelf.stdout
+MOSTLYCLEANFILES += text_unlikely_segment
+text_unlikely_segment.o: text_unlikely_segment.cc
+ $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $<
+text_unlikely_segment: text_unlikely_segment.o gcctestdir/ld
+ $(CXXLINK) -Bgcctestdir/ -Wl,-z,text-unlikely-segment text_unlikely_segment.o
+text_unlikely_segment_readelf.stdout: text_unlikely_segment
+ $(TEST_READELF) -Wl $< >$@
+
check_PROGRAMS += icf_virtual_function_folding_test
MOSTLYCLEANFILES += icf_virtual_function_folding_test icf_virtual_function_folding_test.map
icf_virtual_function_folding_test.o: icf_virtual_function_folding_test.cc
@@ -2295,6 +2309,18 @@ plugin_test_thin.a: two_file_test_1.o two_file_test_1b.o two_file_test_2.o
rm -f $@
$(TEST_AR) crT $@ $^
+check_PROGRAMS += plugin_test_12
+check_SCRIPTS += plugin_test_12.sh
+check_DATA += plugin_test_12.err
+MOSTLYCLEANFILES += plugin_test_12.err
+export_dynamic_plugin.o.syms: export_dynamic_plugin.o
+ $(TEST_READELF) -sW $< >$@ 2>/dev/null
+export_dynamic_plugin.o: export_dynamic_plugin.cc
+ $(COMPILE) -c -o $@ $<
+plugin_test_12: export_dynamic_plugin.o gcctestdir/ld plugin_test.so export_dynamic_plugin.o.syms
+ $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z3foov" -Wl,--export-dynamic-symbol,"_Z3foov" export_dynamic_plugin.o.syms 2>plugin_test_12.err
+plugin_test_12.err: plugin_test_12
+ @touch plugin_test_12.err
check_PROGRAMS += plugin_test_start_lib
check_SCRIPTS += plugin_test_start_lib.sh
@@ -2375,6 +2401,23 @@ plugin_section_order.so: plugin_section_order.o gcctestdir/ld
plugin_section_order.o: plugin_section_order.c
$(COMPILE) -O0 -c -fpic -o $@ $<
+# Uses the plugin_final_layout.sh script above to avoid duplication
+check_DATA += plugin_layout_new_file.stdout plugin_layout_new_file_readelf.stdout
+MOSTLYCLEANFILES += plugin_layout_new_file
+plugin_final_layout.o.syms: plugin_final_layout.o
+ $(TEST_READELF) -sW $< >$@ 2>/dev/null
+plugin_layout_new_file: plugin_final_layout.o.syms plugin_test.so plugin_new_section_layout.so gcctestdir/ld
+ $(CXXLINK) -Bgcctestdir/ -Wl,--plugin,"./plugin_test.so" -Wl,--plugin,"./plugin_new_section_layout.so" plugin_final_layout.o.syms
+plugin_layout_new_file.stdout: plugin_layout_new_file
+ $(TEST_NM) -n --synthetic plugin_layout_new_file > plugin_layout_new_file.stdout
+plugin_layout_new_file_readelf.stdout: plugin_layout_new_file
+ $(TEST_READELF) -Wl plugin_layout_new_file > plugin_layout_new_file_readelf.stdout
+
+plugin_new_section_layout.so: plugin_new_section_layout.o gcctestdir/ld
+ $(LINK) -Bgcctestdir/ -shared plugin_new_section_layout.o
+plugin_new_section_layout.o: plugin_new_section_layout.c
+ $(COMPILE) -O0 -c -fpic -o $@ $<
+
check_SCRIPTS += plugin_layout_with_alignment.sh
check_DATA += plugin_layout_with_alignment.stdout
MOSTLYCLEANFILES += plugin_layout_with_alignment
@@ -2970,9 +3013,9 @@ pr20976-d.o: pr20976.o gcctestdir/ld
if DEFAULT_TARGET_X86_64
two_file_test_1_v1_ndebug.o: two_file_test_1_v1.cc
- $(CXXCOMPILE) -O0 -g0 -c -o $@ $<
+ $(CXXCOMPILE) -O0 -g0 -fno-exceptions -fno-asynchronous-unwind-tables -c -o $@ $<
two_file_test_1_ndebug.o: two_file_test_1.cc
- $(CXXCOMPILE) -O0 -g0 -c -o $@ $<
+ $(CXXCOMPILE) -O0 -g0 -fno-exceptions -fno-asynchronous-unwind-tables -c -o $@ $<
two_file_test_1b_ndebug.o: two_file_test_1b.cc
$(CXXCOMPILE) -O0 -g0 -c -o $@ $<
two_file_test_2_ndebug.o: two_file_test_2.cc
@@ -2985,31 +3028,31 @@ MOSTLYCLEANFILES += two_file_test_tmp_2.o
incremental_test_2: two_file_test_1_v1_ndebug.o two_file_test_1_ndebug.o two_file_test_1b_ndebug.o \
two_file_test_2_ndebug.o two_file_test_main_ndebug.o gcctestdir/ld
cp -f two_file_test_1_v1_ndebug.o two_file_test_tmp_2.o
- $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro -Bgcctestdir/ two_file_test_tmp_2.o two_file_test_1b_ndebug.o two_file_test_2_ndebug.o two_file_test_main_ndebug.o
+ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_tmp_2.o two_file_test_1b_ndebug.o two_file_test_2_ndebug.o two_file_test_main_ndebug.o
@sleep 1
cp -f two_file_test_1_ndebug.o two_file_test_tmp_2.o
- $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro -Bgcctestdir/ two_file_test_tmp_2.o two_file_test_1b_ndebug.o two_file_test_2_ndebug.o two_file_test_main_ndebug.o
+ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_tmp_2.o two_file_test_1b_ndebug.o two_file_test_2_ndebug.o two_file_test_main_ndebug.o
check_PROGRAMS += incremental_test_3
MOSTLYCLEANFILES += two_file_test_tmp_3.o
incremental_test_3: two_file_test_1.o two_file_test_1b_v1.o two_file_test_1b.o \
two_file_test_2.o two_file_test_main.o gcctestdir/ld
cp -f two_file_test_1b_v1.o two_file_test_tmp_3.o
- $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro -Bgcctestdir/ two_file_test_1.o two_file_test_tmp_3.o two_file_test_2.o two_file_test_main.o
+ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_1.o two_file_test_tmp_3.o two_file_test_2.o two_file_test_main.o
@sleep 1
cp -f two_file_test_1b.o two_file_test_tmp_3.o
- $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro -Bgcctestdir/ two_file_test_1.o two_file_test_tmp_3.o two_file_test_2.o two_file_test_main.o
+ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_1.o two_file_test_tmp_3.o two_file_test_2.o two_file_test_main.o
check_PROGRAMS += incremental_test_4
MOSTLYCLEANFILES += incremental_test_4.base two_file_test_tmp_4.o
incremental_test_4: two_file_test_1.o two_file_test_1b.o two_file_test_2_v1.o \
two_file_test_2.o two_file_test_main.o gcctestdir/ld
cp -f two_file_test_2_v1.o two_file_test_tmp_4.o
- $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro -Bgcctestdir/ two_file_test_1.o two_file_test_1b.o two_file_test_tmp_4.o two_file_test_main.o
+ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_1.o two_file_test_1b.o two_file_test_tmp_4.o two_file_test_main.o
mv -f incremental_test_4 incremental_test_4.base
@sleep 1
cp -f two_file_test_2.o two_file_test_tmp_4.o
- $(CXXLINK) -Wl,--incremental-update,--incremental-base=incremental_test_4.base -Wl,-z,norelro -Bgcctestdir/ two_file_test_1.o two_file_test_1b.o two_file_test_tmp_4.o two_file_test_main.o
+ $(CXXLINK) -Wl,--incremental-update,--incremental-base=incremental_test_4.base -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_1.o two_file_test_1b.o two_file_test_tmp_4.o two_file_test_main.o
check_PROGRAMS += incremental_test_5
MOSTLYCLEANFILES += two_file_test_5.a
@@ -3017,11 +3060,11 @@ incremental_test_5: two_file_test_1.o two_file_test_1b_v1.o two_file_test_1b.o \
two_file_test_2.o two_file_test_main.o gcctestdir/ld
cp -f two_file_test_1b_v1.o two_file_test_tmp_5.o
$(TEST_AR) rc two_file_test_5.a two_file_test_1.o two_file_test_tmp_5.o two_file_test_2.o
- $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro -Bgcctestdir/ two_file_test_main.o two_file_test_5.a
+ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_main.o two_file_test_5.a
@sleep 1
cp -f two_file_test_1b.o two_file_test_tmp_5.o
$(TEST_AR) rc two_file_test_5.a two_file_test_1.o two_file_test_tmp_5.o two_file_test_2.o
- $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro -Bgcctestdir/ two_file_test_main.o two_file_test_5.a
+ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_main.o two_file_test_5.a
# Test the --incremental-unchanged flag with an archive library.
# The second link should not update the library.
@@ -3031,38 +3074,38 @@ incremental_test_6: two_file_test_1.o two_file_test_1b_v1.o two_file_test_1b.o \
two_file_test_2.o two_file_test_main.o gcctestdir/ld
cp -f two_file_test_1b.o two_file_test_tmp_6.o
$(TEST_AR) rc two_file_test_6.a two_file_test_1.o two_file_test_tmp_6.o two_file_test_2.o
- $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro -Bgcctestdir/ two_file_test_main.o two_file_test_6.a
+ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_main.o two_file_test_6.a
@sleep 1
cp -f two_file_test_1b_v1.o two_file_test_tmp_6.o
$(TEST_AR) rc two_file_test_6.a two_file_test_1.o two_file_test_tmp_6.o two_file_test_2.o
- $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro -Bgcctestdir/ two_file_test_main.o -Wl,--incremental-unchanged two_file_test_6.a -Wl,--incremental-unknown
+ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_main.o -Wl,--incremental-unchanged two_file_test_6.a -Wl,--incremental-unknown
check_PROGRAMS += incremental_copy_test
incremental_copy_test: copy_test_v1.o copy_test.o copy_test_1.so copy_test_2.so
cp -f copy_test_v1.o copy_test_tmp.o
- $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro -Bgcctestdir/ -Wl,-R,. -Wl,--no-as-needed copy_test_tmp.o copy_test_1.so copy_test_2.so
+ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ -Wl,-R,. -Wl,--no-as-needed copy_test_tmp.o copy_test_1.so copy_test_2.so
@sleep 1
cp -f copy_test.o copy_test_tmp.o
- $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro -Bgcctestdir/ -Wl,-R,. -Wl,--no-as-needed copy_test_tmp.o copy_test_1.so copy_test_2.so
+ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ -Wl,-R,. -Wl,--no-as-needed copy_test_tmp.o copy_test_1.so copy_test_2.so
check_PROGRAMS += incremental_common_test_1
incremental_common_test_1: common_test_1_v1.o common_test_1_v2.o gcctestdir/ld
cp -f common_test_1_v1.o common_test_1_tmp.o
- $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro -Bgcctestdir/ common_test_1_tmp.o
+ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ common_test_1_tmp.o
@sleep 1
cp -f common_test_1_v2.o common_test_1_tmp.o
- $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro -Bgcctestdir/ common_test_1_tmp.o
+ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ common_test_1_tmp.o
check_PROGRAMS += incremental_comdat_test_1
incremental_comdat_test_1: incr_comdat_test_1.o incr_comdat_test_2_v1.o incr_comdat_test_2_v2.o incr_comdat_test_2_v3.o gcctestdir/ld
cp -f incr_comdat_test_2_v1.o incr_comdat_test_1_tmp.o
- $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o
+ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o
@sleep 1
cp -f incr_comdat_test_2_v2.o incr_comdat_test_1_tmp.o
- $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o
+ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o
@sleep 1
cp -f incr_comdat_test_2_v3.o incr_comdat_test_1_tmp.o
- $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o
+ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o
endif DEFAULT_TARGET_X86_64
@@ -3078,6 +3121,12 @@ exception_x86_64_bnd_2.o: exception_test_2.cc gcctestdir/as
$(CXXCOMPILE) -c -Bgcctestdir/ -Wa,-madd-bnd-prefix -o $@ $<
endif DEFAULT_TARGET_X86_64
+check_PROGRAMS += pr22266
+pr22266: pr22266_main.o pr22266_ar.o gcctestdir/ld
+ $(LINK) -Bgcctestdir/ pr22266_main.o pr22266_ar.o
+pr22266_ar.o: pr22266_a.o gcctestdir/ld
+ gcctestdir/ld -r -T $(srcdir)/pr22266_script.t -o $@ pr22266_a.o
+
endif GCC
endif NATIVE_LINKER
@@ -3710,6 +3759,38 @@ arm_farcall_thumb_thumb_6m.o: arm_farcall_thumb_thumb.s
MOSTLYCLEANFILES += arm_farcall_thumb_thumb arm_farcall_thumb_thumb_5t \
arm_farcall_thumb_thumb_7m arm_farcall_thumb_thumb_6m
+#Check ARM to ARM farcall veneers in the be8 mode addressing
+
+check_SCRIPTS += arm_farcall_arm_arm_be8.sh
+check_DATA += arm_farcall_arm_arm_be8.stdout
+
+arm_farcall_arm_arm_be8.stdout: arm_farcall_arm_arm_be8
+ $(TEST_OBJDUMP) -D $< > $@
+
+arm_farcall_arm_arm_be8: arm_farcall_arm_arm_be8.o ../ld-new
+ ../ld-new --no-fix-arm1176 --section-start .text=0x1000 --section-start .foo=0x2001020 -EB --be8 -o $@ $<
+
+arm_farcall_arm_arm_be8.o: arm_farcall_arm_arm.s
+ $(TEST_AS) -EB -o $@ $<
+
+MOSTLYCLEANFILES += arm_farcall_arm_arm_be8
+
+#Check THUMB to THUMB farcall veneers in the be8 mode addressing
+
+check_SCRIPTS += arm_farcall_thumb_thumb_be8.sh
+check_DATA += arm_farcall_thumb_thumb_be8.stdout
+
+arm_farcall_thumb_thumb_be8.stdout: arm_farcall_thumb_thumb_be8
+ $(TEST_OBJDUMP) -D $< > $@
+
+arm_farcall_thumb_thumb_be8: arm_farcall_thumb_thumb_be8.o ../ld-new
+ ../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -EB --be8 -o $@ $<
+
+arm_farcall_thumb_thumb_be8.o: arm_farcall_thumb_thumb.s
+ $(TEST_AS) -march=armv7-m -EB -o $@ $<
+
+MOSTLYCLEANFILES += arm_farcall_thumb_thumb_be8
+
# Check Thumb to ARM farcall veneers
check_SCRIPTS += arm_farcall_thumb_arm.sh
@@ -3829,6 +3910,17 @@ pr21430.stdout: pr21430
MOSTLYCLEANFILES += pr21430
+check_SCRIPTS += aarch64_tlsdesc.sh
+check_DATA += aarch64_tlsdesc.stdout
+aarch64_tlsdesc.o: aarch64_tlsdesc.s
+ $(TEST_AS) -o $@ $<
+aarch64_tlsdesc: aarch64_tlsdesc.o $(srcdir)/aarch64_tlsdesc.t ../ld-new
+ ../ld-new $< -shared -T $(srcdir)/aarch64_tlsdesc.t -o $@
+aarch64_tlsdesc.stdout: aarch64_tlsdesc
+ $(TEST_OBJDUMP) -dR -j.text -j.got.plt $< > $@
+
+MOSTLYCLEANFILES += aarch64_tlsdesc
+
endif DEFAULT_TARGET_AARCH64
if DEFAULT_TARGET_S390
diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in
index eae68b5..bbf8dc1 100644
--- a/gold/testsuite/Makefile.in
+++ b/gold/testsuite/Makefile.in
@@ -70,11 +70,24 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
$(am__EXEEXT_31) $(am__EXEEXT_32) $(am__EXEEXT_33) \
$(am__EXEEXT_34) $(am__EXEEXT_35) $(am__EXEEXT_36) \
$(am__EXEEXT_37) $(am__EXEEXT_38) $(am__EXEEXT_39) \
- $(am__EXEEXT_40)
+ $(am__EXEEXT_40) $(am__EXEEXT_41)
@NATIVE_OR_CROSS_LINKER_TRUE@am__append_1 = object_unittest \
@NATIVE_OR_CROSS_LINKER_TRUE@ binary_unittest leb128_unittest \
@NATIVE_OR_CROSS_LINKER_TRUE@ overflow_unittest
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_2 = incremental_test.sh \
+
+# ---------------------------------------------------------------------
+# These tests test the output of gold (end-to-end tests). In
+# particular, they make sure that gold can link "difficult" object
+# files, and the resulting object files run correctly. These can only
+# run if we've built ld-new for the native architecture (that is,
+# we're not cross-compiling it), since we run ld-new as part of these
+# tests. We use the gcc-specific flag '-B' to use our linker instead
+# of the default linker, which is why we only run our tests under gcc.
+
+# Test empty command line error conditions.
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_2 = \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@ empty_command_line_test.sh \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_test.sh \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ gc_comdat_test.sh gc_tls_test.sh \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ gc_orphan_section_test.sh \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ pr14265.sh pr20717.sh \
@@ -87,6 +100,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ final_layout.sh \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ text_section_grouping.sh \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ section_sorting_name.sh \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@ text_unlikely_segment.sh \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_preemptible_functions_test.sh \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_string_merge_test.sh \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_sht_rel_addend_test.sh \
@@ -114,6 +128,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ text_section_grouping.stdout \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ text_section_no_grouping.stdout \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ section_sorting_name.stdout \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@ text_unlikely_segment_readelf.stdout \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_preemptible_functions_test.stdout \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_string_merge_test.stdout \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_sht_rel_addend_test.stdout \
@@ -139,6 +154,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ text_section_grouping \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ text_section_no_grouping \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ section_sorting_name \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@ text_unlikely_segment \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_virtual_function_folding_test \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_virtual_function_folding_test.map \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_preemptible_functions_test \
@@ -518,6 +534,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_8 \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_10 \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_11 \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_12 \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_start_lib
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_45 = \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_1.sh \
@@ -528,6 +545,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_7.sh \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_10.sh \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_11.sh \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_12.sh \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_start_lib.sh
# Test that symbols known in the IR file but not in the replacement file
@@ -547,6 +565,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_9b.err \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_10.sections \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_11.err \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_12.err \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_start_lib.err
# Make a copy of two_file_test_1.o, which does not define the symbol _Z4t16av.
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_47 = \
@@ -563,6 +582,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_10.sections \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_11.err \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_thin.a \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_12.err \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_start_lib.err
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__append_48 = plugin_test_tls
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__append_49 = plugin_test_tls.sh
@@ -570,11 +590,16 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__append_51 = plugin_test_tls.err
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_52 = unused.c \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_final_layout \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_layout_new_file \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_layout_with_alignment
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_53 = plugin_final_layout.sh \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_layout_with_alignment.sh
+
+# Uses the plugin_final_layout.sh script above to avoid duplication
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_54 = plugin_final_layout.stdout \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_final_layout_readelf.stdout \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_layout_new_file.stdout \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_layout_new_file_readelf.stdout \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_layout_with_alignment.stdout
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_55 = exclude_libs_test \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ local_labels_test \
@@ -803,27 +828,28 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_tmp_4.o \
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_5.a \
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_6.a
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_84 = pr22266
# These tests work with native and cross linkers.
# Test script section order.
-@NATIVE_OR_CROSS_LINKER_TRUE@am__append_84 = script_test_10.sh
-@NATIVE_OR_CROSS_LINKER_TRUE@am__append_85 = script_test_10.stdout
-@NATIVE_OR_CROSS_LINKER_TRUE@am__append_86 = script_test_10
+@NATIVE_OR_CROSS_LINKER_TRUE@am__append_85 = script_test_10.sh
+@NATIVE_OR_CROSS_LINKER_TRUE@am__append_86 = script_test_10.stdout
+@NATIVE_OR_CROSS_LINKER_TRUE@am__append_87 = script_test_10
# These tests work with cross linkers only.
-@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_87 = split_i386.sh
-@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_88 = split_i386_1.stdout split_i386_2.stdout \
+@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_88 = split_i386.sh
+@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_89 = split_i386_1.stdout split_i386_2.stdout \
@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_i386_3.stdout split_i386_4.stdout split_i386_r.stdout
-@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_89 = split_i386_1 split_i386_2 split_i386_3 \
+@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_90 = split_i386_1 split_i386_2 split_i386_3 \
@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_i386_4 split_i386_r
-@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_90 = split_x86_64.sh \
+@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_91 = split_x86_64.sh \
@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ bnd_plt_1.sh \
@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ bnd_ifunc_1.sh \
@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ bnd_ifunc_2.sh
-@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_91 = split_x86_64_1.stdout \
+@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_92 = split_x86_64_1.stdout \
@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_x86_64_2.stdout \
@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_x86_64_3.stdout \
@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_x86_64_4.stdout \
@@ -831,14 +857,14 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ bnd_plt_1.stdout \
@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ bnd_ifunc_1.stdout \
@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ bnd_ifunc_2.stdout
-@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_92 = split_x86_64_1 split_x86_64_2 split_x86_64_3 \
+@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_93 = split_x86_64_1 split_x86_64_2 split_x86_64_3 \
@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_x86_64_4 split_x86_64_r
-@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_93 = split_x32.sh
-@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_94 = split_x32_1.stdout split_x32_2.stdout \
+@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_94 = split_x32.sh
+@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_95 = split_x32_1.stdout split_x32_2.stdout \
@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_x32_3.stdout split_x32_4.stdout split_x32_r.stdout
-@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_95 = split_x32_1 split_x32_2 split_x32_3 \
+@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_96 = split_x32_1 split_x32_2 split_x32_3 \
@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_x32_4 split_x32_r
@@ -852,10 +878,14 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
# Check Thumb to Thumb farcall veneers
+#Check ARM to ARM farcall veneers in the be8 mode addressing
+
+#Check THUMB to THUMB farcall veneers in the be8 mode addressing
+
# Check Thumb to ARM farcall veneers
# Check handling of --target1-abs, --target1-rel and --target2 options
-@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_96 = arm_abs_global.sh \
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_97 = arm_abs_global.sh \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_branch_in_range.sh \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_branch_out_of_range.sh \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_v4bx.sh \
@@ -868,6 +898,8 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_arm.sh \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_thumb.sh \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb.sh \
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_arm_be8.sh \
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_be8.sh \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm.sh \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_target1_abs.sh \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_target1_rel.sh \
@@ -876,7 +908,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_target2_got_rel.sh
# The test demonstrates why the constructor of a target object should not access options.
-@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_97 = arm_abs_global.stdout \
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_98 = arm_abs_global.stdout \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_in_range.stdout \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_out_of_range.stdout \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb_bl_in_range.stdout \
@@ -919,6 +951,8 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_5t.stdout \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_7m.stdout \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_6m.stdout \
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_arm_be8.stdout \
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_be8.stdout \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm.stdout \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm_5t.stdout \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_target1_abs.stdout \
@@ -927,7 +961,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_target2_abs.stdout \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_target2_got_rel.stdout \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_target_lazy_init
-@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_98 = arm_abs_global \
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_99 = arm_abs_global \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_in_range \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_out_of_range \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb_bl_in_range \
@@ -968,6 +1002,8 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_5t \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_7m \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_6m \
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_arm_be8 \
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_be8 \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm_5t \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_target1_abs \
@@ -976,17 +1012,20 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_target2_abs \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_target2_got_rel \
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_target_lazy_init
-@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_99 = aarch64_reloc_none.sh \
+@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_100 = aarch64_reloc_none.sh \
@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ aarch64_relocs.sh \
-@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ pr21430.sh
-@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_100 = aarch64_reloc_none.stdout \
+@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ pr21430.sh \
+@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ aarch64_tlsdesc.sh
+@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_101 = aarch64_reloc_none.stdout \
@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ aarch64_relocs.stdout \
-@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ pr21430.stdout
-@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_101 = aarch64_reloc_none \
+@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ pr21430.stdout \
+@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ aarch64_tlsdesc.stdout
+@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_102 = aarch64_reloc_none \
@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ aarch64_relocs \
-@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ pr21430
-@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_102 = split_s390.sh
-@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_103 = split_s390_z1.stdout split_s390_z2.stdout split_s390_z3.stdout \
+@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ pr21430 \
+@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ aarch64_tlsdesc
+@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_103 = split_s390.sh
+@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_104 = split_s390_z1.stdout split_s390_z2.stdout split_s390_z3.stdout \
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_z4.stdout split_s390_n1.stdout split_s390_n2.stdout \
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_a1.stdout split_s390_a2.stdout split_s390_z1_ns.stdout \
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_z2_ns.stdout split_s390_z3_ns.stdout split_s390_z4_ns.stdout \
@@ -998,7 +1037,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390x_z4_ns.stdout split_s390x_n1_ns.stdout \
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390x_n2_ns.stdout split_s390x_r.stdout
-@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_104 = split_s390_z1 split_s390_z2 split_s390_z3 \
+@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_105 = split_s390_z1 split_s390_z2 split_s390_z3 \
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_z4 split_s390_n1 split_s390_n2 split_s390_a1 \
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_a2 split_s390_z1_ns split_s390_z2_ns split_s390_z3_ns \
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_z4_ns split_s390_n1_ns split_s390_n2_ns split_s390_r \
@@ -1007,10 +1046,10 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390x_z1_ns split_s390x_z2_ns split_s390x_z3_ns \
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390x_z4_ns split_s390x_n1_ns split_s390x_n2_ns split_s390x_r
-@DEFAULT_TARGET_X86_64_TRUE@am__append_105 = *.dwo *.dwp
-@DEFAULT_TARGET_X86_64_TRUE@am__append_106 = dwp_test_1.sh \
+@DEFAULT_TARGET_X86_64_TRUE@am__append_106 = *.dwo *.dwp
+@DEFAULT_TARGET_X86_64_TRUE@am__append_107 = dwp_test_1.sh \
@DEFAULT_TARGET_X86_64_TRUE@ dwp_test_2.sh
-@DEFAULT_TARGET_X86_64_TRUE@am__append_107 = dwp_test_1.stdout \
+@DEFAULT_TARGET_X86_64_TRUE@am__append_108 = dwp_test_1.stdout \
@DEFAULT_TARGET_X86_64_TRUE@ dwp_test_2.stdout
subdir = testsuite
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
@@ -1171,6 +1210,7 @@ libgoldtest_a_OBJECTS = $(am_libgoldtest_a_OBJECTS)
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_8$(EXEEXT) \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_10$(EXEEXT) \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_11$(EXEEXT) \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_12$(EXEEXT) \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_start_lib$(EXEEXT)
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__EXEEXT_25 = plugin_test_tls$(EXEEXT)
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_26 = \
@@ -1232,6 +1272,7 @@ libgoldtest_a_OBJECTS = $(am_libgoldtest_a_OBJECTS)
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_common_test_1$(EXEEXT) \
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_comdat_test_1$(EXEEXT) \
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_x86_64_bnd_test$(EXEEXT)
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_41 = pr22266$(EXEEXT)
basic_pic_test_SOURCES = basic_pic_test.c
basic_pic_test_OBJECTS = basic_pic_test.$(OBJEXT)
basic_pic_test_LDADD = $(LDADD)
@@ -1835,6 +1876,13 @@ plugin_test_11_DEPENDENCIES = libgoldtest.a ../libgold.a \
../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1)
+plugin_test_12_SOURCES = plugin_test_12.c
+plugin_test_12_OBJECTS = plugin_test_12.$(OBJEXT)
+plugin_test_12_LDADD = $(LDADD)
+plugin_test_12_DEPENDENCIES = libgoldtest.a ../libgold.a \
+ ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
plugin_test_2_SOURCES = plugin_test_2.c
plugin_test_2_OBJECTS = plugin_test_2.$(OBJEXT)
plugin_test_2_LDADD = $(LDADD)
@@ -1960,6 +2008,13 @@ pr20976_DEPENDENCIES = libgoldtest.a ../libgold.a \
../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1)
+pr22266_SOURCES = pr22266.c
+pr22266_OBJECTS = pr22266.$(OBJEXT)
+pr22266_LDADD = $(LDADD)
+pr22266_DEPENDENCIES = libgoldtest.a ../libgold.a \
+ ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
@GCC_TRUE@@NATIVE_LINKER_TRUE@am_protected_1_OBJECTS = \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_main_1.$(OBJEXT) \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_main_2.$(OBJEXT) \
@@ -2417,15 +2472,16 @@ SOURCES = $(libgoldtest_a_SOURCES) basic_pic_test.c basic_pie_test.c \
$(many_sections_test_SOURCES) $(object_unittest_SOURCES) \
$(overflow_unittest_SOURCES) permission_test.c \
$(pie_copyrelocs_test_SOURCES) plugin_test_1.c \
- plugin_test_10.c plugin_test_11.c plugin_test_2.c \
- plugin_test_3.c plugin_test_4.c plugin_test_5.c \
- plugin_test_6.c plugin_test_7.c plugin_test_8.c \
- plugin_test_start_lib.c plugin_test_tls.c pr17704a_test.c \
- $(pr20216a_test_SOURCES) $(pr20216b_test_SOURCES) \
- $(pr20216c_test_SOURCES) $(pr20216d_test_SOURCES) \
- $(pr20216e_test_SOURCES) $(pr20308a_test_SOURCES) \
- $(pr20308b_test_SOURCES) $(pr20308c_test_SOURCES) \
- $(pr20308d_test_SOURCES) $(pr20308e_test_SOURCES) pr20976.c \
+ plugin_test_10.c plugin_test_11.c plugin_test_12.c \
+ plugin_test_2.c plugin_test_3.c plugin_test_4.c \
+ plugin_test_5.c plugin_test_6.c plugin_test_7.c \
+ plugin_test_8.c plugin_test_start_lib.c plugin_test_tls.c \
+ pr17704a_test.c $(pr20216a_test_SOURCES) \
+ $(pr20216b_test_SOURCES) $(pr20216c_test_SOURCES) \
+ $(pr20216d_test_SOURCES) $(pr20216e_test_SOURCES) \
+ $(pr20308a_test_SOURCES) $(pr20308b_test_SOURCES) \
+ $(pr20308c_test_SOURCES) $(pr20308d_test_SOURCES) \
+ $(pr20308e_test_SOURCES) pr20976.c pr22266.c \
$(protected_1_SOURCES) $(protected_2_SOURCES) \
$(relro_now_test_SOURCES) $(relro_script_test_SOURCES) \
$(relro_strip_test_SOURCES) $(relro_test_SOURCES) \
@@ -2804,9 +2860,9 @@ MOSTLYCLEANFILES = *.so *.syms *.stdout $(am__append_4) \
$(am__append_34) $(am__append_37) $(am__append_41) \
$(am__append_47) $(am__append_51) $(am__append_52) \
$(am__append_58) $(am__append_78) $(am__append_81) \
- $(am__append_83) $(am__append_86) $(am__append_89) \
- $(am__append_92) $(am__append_95) $(am__append_98) \
- $(am__append_101) $(am__append_104) $(am__append_105)
+ $(am__append_83) $(am__append_87) $(am__append_90) \
+ $(am__append_93) $(am__append_96) $(am__append_99) \
+ $(am__append_102) $(am__append_105) $(am__append_106)
# We will add to these later, for each individual test. Note
# that we add each test under check_SCRIPTS or check_PROGRAMS;
@@ -2815,18 +2871,18 @@ check_SCRIPTS = $(am__append_2) $(am__append_19) $(am__append_23) \
$(am__append_29) $(am__append_35) $(am__append_42) \
$(am__append_45) $(am__append_49) $(am__append_53) \
$(am__append_56) $(am__append_62) $(am__append_73) \
- $(am__append_76) $(am__append_79) $(am__append_84) \
- $(am__append_87) $(am__append_90) $(am__append_93) \
- $(am__append_96) $(am__append_99) $(am__append_102) \
- $(am__append_106)
+ $(am__append_76) $(am__append_79) $(am__append_85) \
+ $(am__append_88) $(am__append_91) $(am__append_94) \
+ $(am__append_97) $(am__append_100) $(am__append_103) \
+ $(am__append_107)
check_DATA = $(am__append_3) $(am__append_20) $(am__append_24) \
$(am__append_30) $(am__append_36) $(am__append_43) \
$(am__append_46) $(am__append_50) $(am__append_54) \
$(am__append_57) $(am__append_63) $(am__append_74) \
- $(am__append_77) $(am__append_80) $(am__append_85) \
- $(am__append_88) $(am__append_91) $(am__append_94) \
- $(am__append_97) $(am__append_100) $(am__append_103) \
- $(am__append_107)
+ $(am__append_77) $(am__append_80) $(am__append_86) \
+ $(am__append_89) $(am__append_92) $(am__append_95) \
+ $(am__append_98) $(am__append_101) $(am__append_104) \
+ $(am__append_108)
BUILT_SOURCES = $(am__append_40)
TESTS = $(check_SCRIPTS) $(check_PROGRAMS)
@@ -3980,6 +4036,15 @@ pie_copyrelocs_test$(EXEEXT): $(pie_copyrelocs_test_OBJECTS) $(pie_copyrelocs_te
@PLUGINS_FALSE@plugin_test_11$(EXEEXT): $(plugin_test_11_OBJECTS) $(plugin_test_11_DEPENDENCIES) $(EXTRA_plugin_test_11_DEPENDENCIES)
@PLUGINS_FALSE@ @rm -f plugin_test_11$(EXEEXT)
@PLUGINS_FALSE@ $(LINK) $(plugin_test_11_OBJECTS) $(plugin_test_11_LDADD) $(LIBS)
+@GCC_FALSE@plugin_test_12$(EXEEXT): $(plugin_test_12_OBJECTS) $(plugin_test_12_DEPENDENCIES) $(EXTRA_plugin_test_12_DEPENDENCIES)
+@GCC_FALSE@ @rm -f plugin_test_12$(EXEEXT)
+@GCC_FALSE@ $(LINK) $(plugin_test_12_OBJECTS) $(plugin_test_12_LDADD) $(LIBS)
+@NATIVE_LINKER_FALSE@plugin_test_12$(EXEEXT): $(plugin_test_12_OBJECTS) $(plugin_test_12_DEPENDENCIES) $(EXTRA_plugin_test_12_DEPENDENCIES)
+@NATIVE_LINKER_FALSE@ @rm -f plugin_test_12$(EXEEXT)
+@NATIVE_LINKER_FALSE@ $(LINK) $(plugin_test_12_OBJECTS) $(plugin_test_12_LDADD) $(LIBS)
+@PLUGINS_FALSE@plugin_test_12$(EXEEXT): $(plugin_test_12_OBJECTS) $(plugin_test_12_DEPENDENCIES) $(EXTRA_plugin_test_12_DEPENDENCIES)
+@PLUGINS_FALSE@ @rm -f plugin_test_12$(EXEEXT)
+@PLUGINS_FALSE@ $(LINK) $(plugin_test_12_OBJECTS) $(plugin_test_12_LDADD) $(LIBS)
@GCC_FALSE@plugin_test_2$(EXEEXT): $(plugin_test_2_OBJECTS) $(plugin_test_2_DEPENDENCIES) $(EXTRA_plugin_test_2_DEPENDENCIES)
@GCC_FALSE@ @rm -f plugin_test_2$(EXEEXT)
@GCC_FALSE@ $(LINK) $(plugin_test_2_OBJECTS) $(plugin_test_2_LDADD) $(LIBS)
@@ -4109,6 +4174,12 @@ pr20308e_test$(EXEEXT): $(pr20308e_test_OBJECTS) $(pr20308e_test_DEPENDENCIES) $
@NATIVE_LINKER_FALSE@pr20976$(EXEEXT): $(pr20976_OBJECTS) $(pr20976_DEPENDENCIES) $(EXTRA_pr20976_DEPENDENCIES)
@NATIVE_LINKER_FALSE@ @rm -f pr20976$(EXEEXT)
@NATIVE_LINKER_FALSE@ $(LINK) $(pr20976_OBJECTS) $(pr20976_LDADD) $(LIBS)
+@GCC_FALSE@pr22266$(EXEEXT): $(pr22266_OBJECTS) $(pr22266_DEPENDENCIES) $(EXTRA_pr22266_DEPENDENCIES)
+@GCC_FALSE@ @rm -f pr22266$(EXEEXT)
+@GCC_FALSE@ $(LINK) $(pr22266_OBJECTS) $(pr22266_LDADD) $(LIBS)
+@NATIVE_LINKER_FALSE@pr22266$(EXEEXT): $(pr22266_OBJECTS) $(pr22266_DEPENDENCIES) $(EXTRA_pr22266_DEPENDENCIES)
+@NATIVE_LINKER_FALSE@ @rm -f pr22266$(EXEEXT)
+@NATIVE_LINKER_FALSE@ $(LINK) $(pr22266_OBJECTS) $(pr22266_LDADD) $(LIBS)
protected_1$(EXEEXT): $(protected_1_OBJECTS) $(protected_1_DEPENDENCIES) $(EXTRA_protected_1_DEPENDENCIES)
@rm -f protected_1$(EXEEXT)
$(protected_1_LINK) $(protected_1_OBJECTS) $(protected_1_LDADD) $(LIBS)
@@ -4441,6 +4512,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_1.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_10.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_11.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_12.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_3.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_4.Po@am__quote@
@@ -4470,6 +4542,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20308d_test-pr20308_main.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20308e_test-pr20308_main.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20976.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr22266.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protected_3.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protected_main_1.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protected_main_2.Po@am__quote@
@@ -5082,6 +5155,8 @@ check-html recheck-html:
rv=0; $(MAKE) $(AM_MAKEFLAGS) $$target || rv=$$?; \
$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_HTML) TEST_LOGS= || exit 4; \
exit $$rv
+empty_command_line_test.sh.log: empty_command_line_test.sh
+ @p='empty_command_line_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
incremental_test.sh.log: incremental_test.sh
@p='incremental_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
gc_comdat_test.sh.log: gc_comdat_test.sh
@@ -5112,6 +5187,8 @@ text_section_grouping.sh.log: text_section_grouping.sh
@p='text_section_grouping.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
section_sorting_name.sh.log: section_sorting_name.sh
@p='section_sorting_name.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+text_unlikely_segment.sh.log: text_unlikely_segment.sh
+ @p='text_unlikely_segment.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
icf_preemptible_functions_test.sh.log: icf_preemptible_functions_test.sh
@p='icf_preemptible_functions_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
icf_string_merge_test.sh.log: icf_string_merge_test.sh
@@ -5212,6 +5289,8 @@ plugin_test_10.sh.log: plugin_test_10.sh
@p='plugin_test_10.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
plugin_test_11.sh.log: plugin_test_11.sh
@p='plugin_test_11.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+plugin_test_12.sh.log: plugin_test_12.sh
+ @p='plugin_test_12.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
plugin_test_start_lib.sh.log: plugin_test_start_lib.sh
@p='plugin_test_start_lib.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
plugin_test_tls.sh.log: plugin_test_tls.sh
@@ -5292,6 +5371,10 @@ arm_farcall_arm_thumb.sh.log: arm_farcall_arm_thumb.sh
@p='arm_farcall_arm_thumb.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
arm_farcall_thumb_thumb.sh.log: arm_farcall_thumb_thumb.sh
@p='arm_farcall_thumb_thumb.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+arm_farcall_arm_arm_be8.sh.log: arm_farcall_arm_arm_be8.sh
+ @p='arm_farcall_arm_arm_be8.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+arm_farcall_thumb_thumb_be8.sh.log: arm_farcall_thumb_thumb_be8.sh
+ @p='arm_farcall_thumb_thumb_be8.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
arm_farcall_thumb_arm.sh.log: arm_farcall_thumb_arm.sh
@p='arm_farcall_thumb_arm.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
arm_target1_abs.sh.log: arm_target1_abs.sh
@@ -5310,6 +5393,8 @@ aarch64_relocs.sh.log: aarch64_relocs.sh
@p='aarch64_relocs.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
pr21430.sh.log: pr21430.sh
@p='pr21430.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+aarch64_tlsdesc.sh.log: aarch64_tlsdesc.sh
+ @p='aarch64_tlsdesc.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
split_s390.sh.log: split_s390.sh
@p='split_s390.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
dwp_test_1.sh.log: dwp_test_1.sh
@@ -5572,6 +5657,8 @@ plugin_test_10.log: plugin_test_10$(EXEEXT)
@p='plugin_test_10$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
plugin_test_11.log: plugin_test_11$(EXEEXT)
@p='plugin_test_11$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+plugin_test_12.log: plugin_test_12$(EXEEXT)
+ @p='plugin_test_12$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
plugin_test_start_lib.log: plugin_test_start_lib$(EXEEXT)
@p='plugin_test_start_lib$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
plugin_test_tls.log: plugin_test_tls$(EXEEXT)
@@ -5680,6 +5767,8 @@ incremental_comdat_test_1.log: incremental_comdat_test_1$(EXEEXT)
@p='incremental_comdat_test_1$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
exception_x86_64_bnd_test.log: exception_x86_64_bnd_test$(EXEEXT)
@p='exception_x86_64_bnd_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+pr22266.log: pr22266$(EXEEXT)
+ @p='pr22266$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
.test.log:
@p='$<'; $(am__check_pre) $(TEST_LOG_COMPILE) "$$tst" $(am__check_post)
@am__EXEEXT_TRUE@.test$(EXEEXT).log:
@@ -5837,15 +5926,7 @@ uninstall-am:
@GCC_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ (cd gcctestdir && $(LN_S) $(abs_top_builddir)/../gas/as-new as)
@NATIVE_OR_CROSS_LINKER_TRUE@overflow_unittest.o: overflow_unittest.cc
@NATIVE_OR_CROSS_LINKER_TRUE@ $(CXXCOMPILE) -O3 -c -o $@ $<
-
-# ---------------------------------------------------------------------
-# These tests test the output of gold (end-to-end tests). In
-# particular, they make sure that gold can link "difficult" object
-# files, and the resulting object files run correctly. These can only
-# run if we've built ld-new for the native architecture (that is,
-# we're not cross-compiling it), since we run ld-new as part of these
-# tests. We use the gcc-specific flag '-B' to use our linker instead
-# of the default linker, which is why we only run our tests under gcc.
+@GCC_TRUE@@NATIVE_LINKER_TRUE@empty_command_line_test.sh: gcctestdir/ld
# Each of these .o's is a useful, small complete program. They're
# particularly useful for making sure ld-new's flags do what they're
@@ -5860,7 +5941,7 @@ uninstall-am:
@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_test_2.o: incremental_test_2.c
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -O0 -c -ffunction-sections -g -o $@ $<
@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_test: incremental_test_1.o incremental_test_2.o gcctestdir/ld
-@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -Wl,--incremental-full -Wl,-z,norelro incremental_test_1.o incremental_test_2.o -Wl,-debug 2> incremental_test.cmdline
+@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -Wl,--incremental-full -Wl,-z,norelro,-no-pie incremental_test_1.o incremental_test_2.o -Wl,-debug 2> incremental_test.cmdline
@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_test.stdout: incremental_test ../incremental-dump
@GCC_TRUE@@NATIVE_LINKER_TRUE@ ../incremental-dump incremental_test > $@
@GCC_TRUE@@NATIVE_LINKER_TRUE@gc_comdat_test_1.o: gc_comdat_test_1.cc
@@ -5969,6 +6050,12 @@ uninstall-am:
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--sort-section=name section_sorting_name.o
@GCC_TRUE@@NATIVE_LINKER_TRUE@section_sorting_name.stdout: section_sorting_name
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) -n --synthetic section_sorting_name > section_sorting_name.stdout
+@GCC_TRUE@@NATIVE_LINKER_TRUE@text_unlikely_segment.o: text_unlikely_segment.cc
+@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $<
+@GCC_TRUE@@NATIVE_LINKER_TRUE@text_unlikely_segment: text_unlikely_segment.o gcctestdir/ld
+@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,-z,text-unlikely-segment text_unlikely_segment.o
+@GCC_TRUE@@NATIVE_LINKER_TRUE@text_unlikely_segment_readelf.stdout: text_unlikely_segment
+@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -Wl $< >$@
@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_virtual_function_folding_test.o: icf_virtual_function_folding_test.cc
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -fPIE -g -o $@ $<
@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_virtual_function_folding_test: icf_virtual_function_folding_test.o gcctestdir/ld
@@ -6910,6 +6997,14 @@ uninstall-am:
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_thin.a: two_file_test_1.o two_file_test_1b.o two_file_test_2.o
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ rm -f $@
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_AR) crT $@ $^
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@export_dynamic_plugin.o.syms: export_dynamic_plugin.o
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@export_dynamic_plugin.o: export_dynamic_plugin.cc
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(COMPILE) -c -o $@ $<
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_12: export_dynamic_plugin.o gcctestdir/ld plugin_test.so export_dynamic_plugin.o.syms
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z3foov" -Wl,--export-dynamic-symbol,"_Z3foov" export_dynamic_plugin.o.syms 2>plugin_test_12.err
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_12.err: plugin_test_12
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @touch plugin_test_12.err
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_start_lib: unused.o plugin_start_lib_test.o plugin_start_lib_test_2.syms gcctestdir/ld plugin_test.so
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so" plugin_start_lib_test.o \
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ -Wl,--start-lib plugin_start_lib_test_2.syms -Wl,--end-lib 2>plugin_test_start_lib.err
@@ -6967,6 +7062,19 @@ uninstall-am:
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(LINK) -Bgcctestdir/ -shared plugin_section_order.o
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_section_order.o: plugin_section_order.c
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(COMPILE) -O0 -c -fpic -o $@ $<
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_final_layout.o.syms: plugin_final_layout.o
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_layout_new_file: plugin_final_layout.o.syms plugin_test.so plugin_new_section_layout.so gcctestdir/ld
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--plugin,"./plugin_test.so" -Wl,--plugin,"./plugin_new_section_layout.so" plugin_final_layout.o.syms
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_layout_new_file.stdout: plugin_layout_new_file
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_NM) -n --synthetic plugin_layout_new_file > plugin_layout_new_file.stdout
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_layout_new_file_readelf.stdout: plugin_layout_new_file
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -Wl plugin_layout_new_file > plugin_layout_new_file_readelf.stdout
+
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_new_section_layout.so: plugin_new_section_layout.o gcctestdir/ld
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(LINK) -Bgcctestdir/ -shared plugin_new_section_layout.o
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_new_section_layout.o: plugin_new_section_layout.c
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(COMPILE) -O0 -c -fpic -o $@ $<
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_layout_with_alignment.o: plugin_layout_with_alignment.c
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(COMPILE) -O0 -c -ffunction-sections -fdata-sections -g -o $@ $<
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_layout_with_alignment: plugin_layout_with_alignment.o plugin_section_alignment.so gcctestdir/ld
@@ -7244,9 +7352,9 @@ uninstall-am:
# Incremental linking is currently supported only on the x86_64 target.
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_1_v1_ndebug.o: two_file_test_1_v1.cc
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g0 -c -o $@ $<
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g0 -fno-exceptions -fno-asynchronous-unwind-tables -c -o $@ $<
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_1_ndebug.o: two_file_test_1.cc
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g0 -c -o $@ $<
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g0 -fno-exceptions -fno-asynchronous-unwind-tables -c -o $@ $<
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_1b_ndebug.o: two_file_test_1b.cc
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g0 -c -o $@ $<
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_2_ndebug.o: two_file_test_2.cc
@@ -7256,68 +7364,72 @@ uninstall-am:
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_test_2: two_file_test_1_v1_ndebug.o two_file_test_1_ndebug.o two_file_test_1b_ndebug.o \
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2_ndebug.o two_file_test_main_ndebug.o gcctestdir/ld
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_1_v1_ndebug.o two_file_test_tmp_2.o
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro -Bgcctestdir/ two_file_test_tmp_2.o two_file_test_1b_ndebug.o two_file_test_2_ndebug.o two_file_test_main_ndebug.o
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_tmp_2.o two_file_test_1b_ndebug.o two_file_test_2_ndebug.o two_file_test_main_ndebug.o
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ @sleep 1
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_1_ndebug.o two_file_test_tmp_2.o
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro -Bgcctestdir/ two_file_test_tmp_2.o two_file_test_1b_ndebug.o two_file_test_2_ndebug.o two_file_test_main_ndebug.o
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_tmp_2.o two_file_test_1b_ndebug.o two_file_test_2_ndebug.o two_file_test_main_ndebug.o
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_test_3: two_file_test_1.o two_file_test_1b_v1.o two_file_test_1b.o \
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2.o two_file_test_main.o gcctestdir/ld
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_1b_v1.o two_file_test_tmp_3.o
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro -Bgcctestdir/ two_file_test_1.o two_file_test_tmp_3.o two_file_test_2.o two_file_test_main.o
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_1.o two_file_test_tmp_3.o two_file_test_2.o two_file_test_main.o
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ @sleep 1
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_1b.o two_file_test_tmp_3.o
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro -Bgcctestdir/ two_file_test_1.o two_file_test_tmp_3.o two_file_test_2.o two_file_test_main.o
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_1.o two_file_test_tmp_3.o two_file_test_2.o two_file_test_main.o
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_test_4: two_file_test_1.o two_file_test_1b.o two_file_test_2_v1.o \
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2.o two_file_test_main.o gcctestdir/ld
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_2_v1.o two_file_test_tmp_4.o
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro -Bgcctestdir/ two_file_test_1.o two_file_test_1b.o two_file_test_tmp_4.o two_file_test_main.o
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_1.o two_file_test_1b.o two_file_test_tmp_4.o two_file_test_main.o
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ mv -f incremental_test_4 incremental_test_4.base
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ @sleep 1
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_2.o two_file_test_tmp_4.o
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update,--incremental-base=incremental_test_4.base -Wl,-z,norelro -Bgcctestdir/ two_file_test_1.o two_file_test_1b.o two_file_test_tmp_4.o two_file_test_main.o
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update,--incremental-base=incremental_test_4.base -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_1.o two_file_test_1b.o two_file_test_tmp_4.o two_file_test_main.o
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_test_5: two_file_test_1.o two_file_test_1b_v1.o two_file_test_1b.o \
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2.o two_file_test_main.o gcctestdir/ld
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_1b_v1.o two_file_test_tmp_5.o
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc two_file_test_5.a two_file_test_1.o two_file_test_tmp_5.o two_file_test_2.o
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro -Bgcctestdir/ two_file_test_main.o two_file_test_5.a
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_main.o two_file_test_5.a
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ @sleep 1
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_1b.o two_file_test_tmp_5.o
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc two_file_test_5.a two_file_test_1.o two_file_test_tmp_5.o two_file_test_2.o
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro -Bgcctestdir/ two_file_test_main.o two_file_test_5.a
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_main.o two_file_test_5.a
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_test_6: two_file_test_1.o two_file_test_1b_v1.o two_file_test_1b.o \
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2.o two_file_test_main.o gcctestdir/ld
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_1b.o two_file_test_tmp_6.o
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc two_file_test_6.a two_file_test_1.o two_file_test_tmp_6.o two_file_test_2.o
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro -Bgcctestdir/ two_file_test_main.o two_file_test_6.a
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_main.o two_file_test_6.a
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ @sleep 1
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f two_file_test_1b_v1.o two_file_test_tmp_6.o
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc two_file_test_6.a two_file_test_1.o two_file_test_tmp_6.o two_file_test_2.o
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro -Bgcctestdir/ two_file_test_main.o -Wl,--incremental-unchanged two_file_test_6.a -Wl,--incremental-unknown
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_main.o -Wl,--incremental-unchanged two_file_test_6.a -Wl,--incremental-unknown
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_copy_test: copy_test_v1.o copy_test.o copy_test_1.so copy_test_2.so
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f copy_test_v1.o copy_test_tmp.o
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro -Bgcctestdir/ -Wl,-R,. -Wl,--no-as-needed copy_test_tmp.o copy_test_1.so copy_test_2.so
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ -Wl,-R,. -Wl,--no-as-needed copy_test_tmp.o copy_test_1.so copy_test_2.so
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ @sleep 1
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f copy_test.o copy_test_tmp.o
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro -Bgcctestdir/ -Wl,-R,. -Wl,--no-as-needed copy_test_tmp.o copy_test_1.so copy_test_2.so
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ -Wl,-R,. -Wl,--no-as-needed copy_test_tmp.o copy_test_1.so copy_test_2.so
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_common_test_1: common_test_1_v1.o common_test_1_v2.o gcctestdir/ld
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f common_test_1_v1.o common_test_1_tmp.o
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro -Bgcctestdir/ common_test_1_tmp.o
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ common_test_1_tmp.o
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ @sleep 1
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f common_test_1_v2.o common_test_1_tmp.o
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro -Bgcctestdir/ common_test_1_tmp.o
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ common_test_1_tmp.o
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@incremental_comdat_test_1: incr_comdat_test_1.o incr_comdat_test_2_v1.o incr_comdat_test_2_v2.o incr_comdat_test_2_v3.o gcctestdir/ld
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f incr_comdat_test_2_v1.o incr_comdat_test_1_tmp.o
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ @sleep 1
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f incr_comdat_test_2_v2.o incr_comdat_test_1_tmp.o
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ @sleep 1
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ cp -f incr_comdat_test_2_v3.o incr_comdat_test_1_tmp.o
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_x86_64_bnd_1.o: exception_test_1.cc gcctestdir/as
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -Bgcctestdir/ -Wa,-madd-bnd-prefix -o $@ $<
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_x86_64_bnd_2.o: exception_test_2.cc gcctestdir/as
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -Bgcctestdir/ -Wa,-madd-bnd-prefix -o $@ $<
+@GCC_TRUE@@NATIVE_LINKER_TRUE@pr22266: pr22266_main.o pr22266_ar.o gcctestdir/ld
+@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ pr22266_main.o pr22266_ar.o
+@GCC_TRUE@@NATIVE_LINKER_TRUE@pr22266_ar.o: pr22266_a.o gcctestdir/ld
+@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld -r -T $(srcdir)/pr22266_script.t -o $@ pr22266_a.o
@NATIVE_OR_CROSS_LINKER_TRUE@script_test_10.o: script_test_10.s
@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $<
@NATIVE_OR_CROSS_LINKER_TRUE@script_test_10: $(srcdir)/script_test_10.t script_test_10.o gcctestdir/ld
@@ -7806,6 +7918,24 @@ uninstall-am:
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_6m.o: arm_farcall_thumb_thumb.s
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv6-m -o $@ $<
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_arm_be8.stdout: arm_farcall_arm_arm_be8
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@
+
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_arm_be8: arm_farcall_arm_arm_be8.o ../ld-new
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --no-fix-arm1176 --section-start .text=0x1000 --section-start .foo=0x2001020 -EB --be8 -o $@ $<
+
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_arm_be8.o: arm_farcall_arm_arm.s
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -EB -o $@ $<
+
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_be8.stdout: arm_farcall_thumb_thumb_be8
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@
+
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_be8: arm_farcall_thumb_thumb_be8.o ../ld-new
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -EB --be8 -o $@ $<
+
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_be8.o: arm_farcall_thumb_thumb.s
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv7-m -EB -o $@ $<
+
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_arm.stdout: arm_farcall_thumb_arm
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@
@@ -7883,6 +8013,12 @@ uninstall-am:
@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -o $@ $<
@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@pr21430.stdout: pr21430
@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_NM) -S $< > $@
+@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@aarch64_tlsdesc.o: aarch64_tlsdesc.s
+@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $<
+@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@aarch64_tlsdesc: aarch64_tlsdesc.o $(srcdir)/aarch64_tlsdesc.t ../ld-new
+@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $< -shared -T $(srcdir)/aarch64_tlsdesc.t -o $@
+@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@aarch64_tlsdesc.stdout: aarch64_tlsdesc
+@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -dR -j.text -j.got.plt $< > $@
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_1_z1.o: split_s390_1_z1.s
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m31 -o $@ $<
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_1_z2.o: split_s390_1_z2.s
diff --git a/gold/testsuite/aarch64_tlsdesc.s b/gold/testsuite/aarch64_tlsdesc.s
new file mode 100644
index 0000000..b1becd6
--- /dev/null
+++ b/gold/testsuite/aarch64_tlsdesc.s
@@ -0,0 +1,12 @@
+ .global test, var
+ .text
+test:
+ adrp x0, :tlsdesc:var
+ ldr x1, [x0, :tlsdesc_lo12:var]
+ add x0, x0, :tlsdesc_lo12:var
+ .tlsdesccall var
+ blr x1
+
+ .section .tbss,"awT",%nobits
+var:
+ .zero 4
diff --git a/gold/testsuite/aarch64_tlsdesc.sh b/gold/testsuite/aarch64_tlsdesc.sh
new file mode 100755
index 0000000..026f196
--- /dev/null
+++ b/gold/testsuite/aarch64_tlsdesc.sh
@@ -0,0 +1,110 @@
+#!/bin/sh
+
+# aarch64_tlsdesc.sh -- test R_AARCH64_TLSDESC_* relocations.
+
+# Copyright (C) 2017 Free Software Foundation, Inc.
+# Written by Igor Kudrin <ikudrin@accesssoftek.com>.
+
+# This file is part of gold.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+file=aarch64_tlsdesc.stdout
+
+get_address_by_reloc()
+{
+ var=$1
+ pattern="\<R_AARCH64_TLSDESC\>"
+ found=$(grep "$pattern" "$file")
+ if test -z "$found"; then
+ echo "GOT entry for a TLS symbol is not found in file $file."
+ echo "Search pattern: $pattern"
+ echo ""
+ echo "Actual output below:"
+ cat "$file"
+ exit 1
+ fi
+ eval $var="0x0$(echo $found | awk -F'[: ]' '{ print $1 }')"
+}
+
+check_adrp()
+{
+ pattern="\<adrp[[:space:]]\+x0, 0\>"
+ found=$(grep "$pattern" "$file")
+ if test -z "$found"; then
+ echo "An ADRP immediate is supposed to be 0"
+ echo "Search pattern: $pattern"
+ echo ""
+ echo "Actual output below:"
+ cat "$file"
+ exit 1
+ fi
+}
+
+get_address_from_ldr()
+{
+ var=$1
+ pattern="\<ldr[[:space:]]\+x1\>"
+ found=$(grep "$pattern" "$file")
+ if test -z "$found"; then
+ echo "An LDR instruction is not found in file $file."
+ echo "Search pattern: $pattern"
+ echo ""
+ echo "Actual output below:"
+ cat "$file"
+ exit 1
+ fi
+ eval $var="$(echo $found | awk -F'[#\\]]' '{ print $2 }')"
+}
+
+get_address_from_add()
+{
+ var=$1
+ pattern="\<add[[:space:]]\+x0\>"
+ found=$(grep "$pattern" "$file")
+ if test -z "$found"; then
+ echo "An ADD instruction is not found in file $file."
+ echo "Search pattern: $pattern"
+ echo ""
+ echo "Actual output below:"
+ cat "$file"
+ exit 1
+ fi
+ eval $var="$(echo $found | awk -F'#' '{ print $2 }')"
+}
+
+check_adrp
+get_address_by_reloc address_by_reloc
+get_address_from_ldr address_from_ldr
+get_address_from_add address_from_add
+
+if test $(($address_by_reloc)) -ne $(($address_from_ldr)); then
+ echo "The address in LDR instruction is wrong."
+ echo ""
+ echo "Actual output below:"
+ cat "$file"
+ exit 1
+fi
+
+if test $(($address_by_reloc)) -ne $(($address_from_add)); then
+ echo "The address in ADD instruction is wrong."
+ echo ""
+ echo "Actual output below:"
+ cat "$file"
+ exit 1
+fi
+
+exit 0
diff --git a/gold/testsuite/aarch64_tlsdesc.t b/gold/testsuite/aarch64_tlsdesc.t
new file mode 100644
index 0000000..8af9cf3
--- /dev/null
+++ b/gold/testsuite/aarch64_tlsdesc.t
@@ -0,0 +1,6 @@
+SECTIONS
+{
+ .text : { *(.text) }
+ .got.plt : { *(.got.plt) }
+ .got : { *(.got) }
+}
diff --git a/gold/testsuite/arm_abs_global.sh b/gold/testsuite/arm_abs_global.sh
index 377125c..d9301e8 100755
--- a/gold/testsuite/arm_abs_global.sh
+++ b/gold/testsuite/arm_abs_global.sh
@@ -2,7 +2,7 @@
# arm_abs_global.sh -- test ARM absolute relocations against global symbols.
-# Copyright (C) 2010-2017 Free Software Foundation, Inc.
+# Copyright (C) 2010-2018 Free Software Foundation, Inc.
# Written by Doug Kwan <dougkwan@google.com>
# This file is part of gold.
diff --git a/gold/testsuite/arm_farcall_arm_arm.sh b/gold/testsuite/arm_farcall_arm_arm.sh
index 55ec8ee..141af91 100755
--- a/gold/testsuite/arm_farcall_arm_arm.sh
+++ b/gold/testsuite/arm_farcall_arm_arm.sh
@@ -2,7 +2,7 @@
# arm_farcall_arm_arm.sh -- a test case for ARM->ARM farcall veneers
-# Copyright (C) 2010-2017 Free Software Foundation, Inc.
+# Copyright (C) 2010-2018 Free Software Foundation, Inc.
# Written by Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
# Based upon arm_cortex_a8.sh
# Written by Doug Kwan <dougkwan@google.com>.
diff --git a/gold/testsuite/arm_farcall_arm_arm_be8.sh b/gold/testsuite/arm_farcall_arm_arm_be8.sh
new file mode 100755
index 0000000..e21a16d
--- /dev/null
+++ b/gold/testsuite/arm_farcall_arm_arm_be8.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+# arm_farcall_arm_arm_be8.sh -- a test case for ARM->ARM farcall veneers
+
+# Copyright (C) 2010-2017 Free Software Foundation, Inc.
+# This file is part of gold.
+# Based on arm_farcall_arm_arm.s file.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+check()
+{
+ if ! grep -q "$2" "$1"
+ then
+ echo "Did not find expected instruction in $1:"
+ echo " $2"
+ echo ""
+ echo "Actual instructions below:"
+ cat "$1"
+ exit 1
+ fi
+}
+
+# Check for ARM->ARM default
+check arm_farcall_arm_arm_be8.stdout "1004: .* ldr pc, \[pc, #-4\] .*"
+check arm_farcall_arm_arm_be8.stdout "1008: 20100002"
+
+exit 0
diff --git a/gold/testsuite/arm_farcall_arm_thumb.sh b/gold/testsuite/arm_farcall_arm_thumb.sh
index 2c592cf..095b65a 100755
--- a/gold/testsuite/arm_farcall_arm_thumb.sh
+++ b/gold/testsuite/arm_farcall_arm_thumb.sh
@@ -2,7 +2,7 @@
# arm_farcall_arm_thumb.sh -- a test case for ARM->Thumb farcall veneers.
-# Copyright (C) 2010-2017 Free Software Foundation, Inc.
+# Copyright (C) 2010-2018 Free Software Foundation, Inc.
# Written by Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
# Based upon arm_cortex_a8.sh
# Written by Doug Kwan <dougkwan@google.com>.
diff --git a/gold/testsuite/arm_farcall_thumb_thumb_be8.sh b/gold/testsuite/arm_farcall_thumb_thumb_be8.sh
new file mode 100755
index 0000000..c772a93
--- /dev/null
+++ b/gold/testsuite/arm_farcall_thumb_thumb_be8.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+# arm_farcall_thumb_thumb_be8.sh -- a test case for Thumb->Thumb farcall veneers.
+
+# Copyright (C) 2010-2017 Free Software Foundation, Inc.
+# This file is part of gold.
+# Based on arm_farcall_thumb_thumb.s file
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+check()
+{
+ if ! grep -q "$2" "$1"
+ then
+ echo "Did not find expected instruction in $1:"
+ echo " $2"
+ echo ""
+ echo "Actual instructions below:"
+ cat "$1"
+ exit 1
+ fi
+}
+
+# Thumb->Thumb
+check arm_farcall_thumb_thumb_be8.stdout "1004:\sb401"
+check arm_farcall_thumb_thumb_be8.stdout "1006:\s4802"
+check arm_farcall_thumb_thumb_be8.stdout "1008:\s4684"
+check arm_farcall_thumb_thumb_be8.stdout "100a:\sbc01"
+check arm_farcall_thumb_thumb_be8.stdout "100c:\s4760"
+check arm_farcall_thumb_thumb_be8.stdout "100e:\sbf00"
+check arm_farcall_thumb_thumb_be8.stdout "1010:\s0002"
+check arm_farcall_thumb_thumb_be8.stdout "1012:\s1510"
+
+exit 0
diff --git a/gold/testsuite/arm_target2_got_rel.sh b/gold/testsuite/arm_target2_got_rel.sh
index 0a91052..be712e5 100755
--- a/gold/testsuite/arm_target2_got_rel.sh
+++ b/gold/testsuite/arm_target2_got_rel.sh
@@ -3,7 +3,7 @@
# arm_target2_got_rel.sh -- test --target2=got-rel options.
# This test is based on ld/testsuite/ld-arm/arm-target2-got-rel.d.
-# Copyright (C) 2016-2017 Free Software Foundation, Inc.
+# Copyright (C) 2016-2018 Free Software Foundation, Inc.
# Written by Igor Kudrin <ikudrin@accesssoftek.com>.
# This file is part of gold.
diff --git a/gold/testsuite/arm_target2_rel.sh b/gold/testsuite/arm_target2_rel.sh
index 1cd46a3..e7235cb 100755
--- a/gold/testsuite/arm_target2_rel.sh
+++ b/gold/testsuite/arm_target2_rel.sh
@@ -3,7 +3,7 @@
# arm_target2_rel.sh -- test --target2=rel option.
# This test is based on ld/testsuite/ld-arm/arm-target2-rel.d.
-# Copyright (C) 2016-2017 Free Software Foundation, Inc.
+# Copyright (C) 2016-2018 Free Software Foundation, Inc.
# Written by Igor Kudrin <ikudrin@accesssoftek.com>.
# This file is part of gold.
diff --git a/gold/testsuite/bnd_ifunc_1.sh b/gold/testsuite/bnd_ifunc_1.sh
index 1d74266..3ac9180 100755
--- a/gold/testsuite/bnd_ifunc_1.sh
+++ b/gold/testsuite/bnd_ifunc_1.sh
@@ -2,7 +2,7 @@
# bnd_ifunc_1.sh -- test -z bndplt for x86_64
-# Copyright (C) 2016-2017 Free Software Foundation, Inc.
+# Copyright (C) 2016-2018 Free Software Foundation, Inc.
# Written by Cary Coutant <ccoutant@gmail.com>.
# This file is part of gold.
diff --git a/gold/testsuite/common_test_1.c b/gold/testsuite/common_test_1.c
index d9f000b..29e7d20 100644
--- a/gold/testsuite/common_test_1.c
+++ b/gold/testsuite/common_test_1.c
@@ -1,6 +1,6 @@
/* common_test_1.c -- test common symbol sorting
- Copyright (C) 2008-2017 Free Software Foundation, Inc.
+ Copyright (C) 2008-2018 Free Software Foundation, Inc.
Written by Ian Lance Taylor <iant@google.com>
This file is part of gold.
diff --git a/gold/testsuite/copy_test_2.cc b/gold/testsuite/copy_test_2.cc
index 4794e10..fb655ad 100644
--- a/gold/testsuite/copy_test_2.cc
+++ b/gold/testsuite/copy_test_2.cc
@@ -1,6 +1,6 @@
// copy_test_2.cc -- test copy relocs variables for gold
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/debug_msg.sh b/gold/testsuite/debug_msg.sh
index 032397b..5668d8e 100755
--- a/gold/testsuite/debug_msg.sh
+++ b/gold/testsuite/debug_msg.sh
@@ -88,7 +88,7 @@ check_missing debug_msg.err "odr_violation1.cc:1[6-8]"
check_missing debug_msg.err "odr_violation2.cc:2[3-5]"
check debug_msg.err ": symbol 'SometimesInlineFunction(int)' defined in multiple places (possible ODR violation):"
check debug_msg.err "debug_msg.cc:6[89]"
-check debug_msg.err "odr_violation2.cc:2[7-9]"
+check debug_msg.err "odr_violation2.cc:3[0-7]"
# Check for the same error messages when using --compressed-debug-sections.
if test -r debug_msg_cdebug.err
@@ -114,7 +114,7 @@ then
check_missing debug_msg_cdebug.err "odr_violation2.cc:2[3-5]"
check debug_msg_cdebug.err ": symbol 'SometimesInlineFunction(int)' defined in multiple places (possible ODR violation):"
check debug_msg_cdebug.err "debug_msg.cc:6[89]"
- check debug_msg_cdebug.err "odr_violation2.cc:2[7-9]"
+ check debug_msg_cdebug.err "odr_violation2.cc:3[0-7]"
fi
# When linking together .so's, we don't catch the line numbers, but we
@@ -132,7 +132,7 @@ check_missing debug_msg_so.err "odr_violation1.cc:1[6-8]"
check_missing debug_msg_so.err "odr_violation2.cc:2[3-5]"
check debug_msg_so.err ": symbol 'SometimesInlineFunction(int)' defined in multiple places (possible ODR violation):"
check debug_msg_so.err "debug_msg.cc:6[89]"
-check debug_msg_so.err "odr_violation2.cc:2[7-9]"
+check debug_msg_so.err "odr_violation2.cc:3[0-7]"
# These messages shouldn't need any debug info to detect:
check debug_msg_ndebug.err "debug_msg_ndebug.so: error: undefined reference to 'undef_fn1()'"
diff --git a/gold/testsuite/discard_locals_relocatable_test.c b/gold/testsuite/discard_locals_relocatable_test.c
index 76ced81..3d3b814 100644
--- a/gold/testsuite/discard_locals_relocatable_test.c
+++ b/gold/testsuite/discard_locals_relocatable_test.c
@@ -1,6 +1,6 @@
/* discard_locals_relocatable_test.c -- test --discard-locals/--discard-all -r
- Copyright (C) 2010-2017 Free Software Foundation, Inc.
+ Copyright (C) 2010-2018 Free Software Foundation, Inc.
Viktor Kutuzov <vkutuzov@accesssoftek.com>.
This file is part of gold.
diff --git a/gold/testsuite/dwp_test.h b/gold/testsuite/dwp_test.h
index 4cfadd7..f4498ae 100644
--- a/gold/testsuite/dwp_test.h
+++ b/gold/testsuite/dwp_test.h
@@ -1,6 +1,6 @@
// dwp_test.h -- a test case for dwp, header file -*- C++ -*-
-// Copyright (C) 2012-2017 Free Software Foundation, Inc.
+// Copyright (C) 2012-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/dwp_test_2.cc b/gold/testsuite/dwp_test_2.cc
index 612f1b6..6d8b988 100644
--- a/gold/testsuite/dwp_test_2.cc
+++ b/gold/testsuite/dwp_test_2.cc
@@ -1,6 +1,6 @@
// dwp_test_2.cc -- a test case for dwp
-// Copyright (C) 2012-2017 Free Software Foundation, Inc.
+// Copyright (C) 2012-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/dwp_test_main.cc b/gold/testsuite/dwp_test_main.cc
index 736233e..f828a5e 100644
--- a/gold/testsuite/dwp_test_main.cc
+++ b/gold/testsuite/dwp_test_main.cc
@@ -1,6 +1,6 @@
// dwp_test_main.cc -- a test case for dwp
-// Copyright (C) 2012-2017 Free Software Foundation, Inc.
+// Copyright (C) 2012-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/dyn_weak_ref_1.c b/gold/testsuite/dyn_weak_ref_1.c
index 6185c4b..5799cdb 100644
--- a/gold/testsuite/dyn_weak_ref_1.c
+++ b/gold/testsuite/dyn_weak_ref_1.c
@@ -1,7 +1,7 @@
// dyn_weak_ref_1.c -- test that a weak ref remains weak in output when
// there is a DSO with the same weak ref.
-// Copyright (C) 2010-2017 Free Software Foundation, Inc.
+// Copyright (C) 2010-2018 Free Software Foundation, Inc.
// Written by Doug Kwan <dougkwan@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/dynamic_list_2.t b/gold/testsuite/dynamic_list_2.t
index 53847d6..c915421 100644
--- a/gold/testsuite/dynamic_list_2.t
+++ b/gold/testsuite/dynamic_list_2.t
@@ -1,6 +1,6 @@
/* dynamic_list_2.t -- script file for building dynamic_list_lib2.so.
- Copyright (C) 2014-2017 Free Software Foundation, Inc.
+ Copyright (C) 2014-2018 Free Software Foundation, Inc.
Written by Cary Coutant <ccoutant@google.com>.
This file is part of gold.
diff --git a/gold/testsuite/ehdr_start_def.cc b/gold/testsuite/ehdr_start_def.cc
index 3eb6f66..df76e9b 100644
--- a/gold/testsuite/ehdr_start_def.cc
+++ b/gold/testsuite/ehdr_start_def.cc
@@ -1,6 +1,6 @@
// ehdr_start_def.cc -- test for __ehdr_start linker-defined symbol.
-// Copyright (C) 2014-2017 Free Software Foundation, Inc.
+// Copyright (C) 2014-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/ehdr_start_test.cc b/gold/testsuite/ehdr_start_test.cc
index eff7dcc..d0416b9 100644
--- a/gold/testsuite/ehdr_start_test.cc
+++ b/gold/testsuite/ehdr_start_test.cc
@@ -1,6 +1,6 @@
// ehdr_start_test.cc -- test for __ehdr_start linker-defined symbol.
-// Copyright (C) 2014-2017 Free Software Foundation, Inc.
+// Copyright (C) 2014-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/empty_command_line_test.sh b/gold/testsuite/empty_command_line_test.sh
new file mode 100755
index 0000000..ab6a0d8
--- /dev/null
+++ b/gold/testsuite/empty_command_line_test.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+# empty_command_line_test.sh -- test various command lines with no inputs
+
+# Copyright (C) 2017 Free Software Foundation, Inc.
+# Written by Benjamin Peterson <bp@benjamin.pe>
+
+# This file is part of gold.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+check()
+{
+ expected_msg="$1"
+ shift
+ echo "checking empty command line '$@'"
+ err=$(gcctestdir/ld "$@" 2>&1)
+ if [ $? != 1 ]; then
+ echo "gold didn't fail"
+ exit 1
+ fi
+ echo "$err" | grep -q "$expected_msg" || {
+ echo "unexpected error message: $err"
+ exit 1
+ }
+}
+
+check "no input files"
+check "missing lib end" --start-lib
+check "missing group end" --start-group
diff --git a/gold/testsuite/export_dynamic_plugin.cc b/gold/testsuite/export_dynamic_plugin.cc
new file mode 100644
index 0000000..6d151c0
--- /dev/null
+++ b/gold/testsuite/export_dynamic_plugin.cc
@@ -0,0 +1,29 @@
+/* export_dynamic_plugin.c -- a test case for gold
+
+ Copyright (C) 2017 onwards Free Software Foundation, Inc.
+ Written by Teresa Johnson <tejohnson@google.com>.
+
+ This file is part of gold.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+int foo(void) {
+ return 0;
+}
+
+int main(void) {
+ return 0;
+}
diff --git a/gold/testsuite/file_in_many_sections_test.sh b/gold/testsuite/file_in_many_sections_test.sh
index 6936cae..f73fb6c 100755
--- a/gold/testsuite/file_in_many_sections_test.sh
+++ b/gold/testsuite/file_in_many_sections_test.sh
@@ -2,7 +2,7 @@
# file_in_many_sections.sh -- test
-# Copyright (C) 2016-2017 Free Software Foundation, Inc.
+# Copyright (C) 2016-2018 Free Software Foundation, Inc.
# Written by Tristan Gingold <gingold@adacore.com>
# This file is part of gold.
diff --git a/gold/testsuite/gc_dynamic_list_test.c b/gold/testsuite/gc_dynamic_list_test.c
index 0e09f1a..af02bb9 100644
--- a/gold/testsuite/gc_dynamic_list_test.c
+++ b/gold/testsuite/gc_dynamic_list_test.c
@@ -1,6 +1,6 @@
// gc_dynamic_list_test.cc -- Check that --gc-sections honors --dynamic-list.
-// Copyright (C) 2014-2017 Free Software Foundation, Inc.
+// Copyright (C) 2014-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/gc_dynamic_list_test.sh b/gold/testsuite/gc_dynamic_list_test.sh
index c8b4769..ac81879 100755
--- a/gold/testsuite/gc_dynamic_list_test.sh
+++ b/gold/testsuite/gc_dynamic_list_test.sh
@@ -2,7 +2,7 @@
# gc_comdat_test.sh -- test --gc-sections
-# Copyright (C) 2014-2017 Free Software Foundation, Inc.
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
# Written by Cary Coutant <ccoutant@google.com>.
# This file is part of gold.
diff --git a/gold/testsuite/gc_orphan_section_test.cc b/gold/testsuite/gc_orphan_section_test.cc
index 2029b75..ba8010b 100644
--- a/gold/testsuite/gc_orphan_section_test.cc
+++ b/gold/testsuite/gc_orphan_section_test.cc
@@ -1,6 +1,6 @@
// gc_orphan_section_test.cc -- a test case for gold
-// Copyright (C) 2010-2017 Free Software Foundation, Inc.
+// Copyright (C) 2010-2018 Free Software Foundation, Inc.
// Written by Sriraman Tallam <tmsriram@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/gc_tls_test.cc b/gold/testsuite/gc_tls_test.cc
index 60b1888..15fab88 100644
--- a/gold/testsuite/gc_tls_test.cc
+++ b/gold/testsuite/gc_tls_test.cc
@@ -1,6 +1,6 @@
// gc_tls_test.cc -- a test case for gold
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Sriraman Tallam <tmsriram@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/gdb_index_test.cc b/gold/testsuite/gdb_index_test.cc
index 87816ea..b501e97 100644
--- a/gold/testsuite/gdb_index_test.cc
+++ b/gold/testsuite/gdb_index_test.cc
@@ -1,6 +1,6 @@
// gdb_index_test.cc -- a test case for the --gdb-index option.
-// Copyright (C) 2012-2017 Free Software Foundation, Inc.
+// Copyright (C) 2012-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/gdb_index_test_1.sh b/gold/testsuite/gdb_index_test_1.sh
index 339c384..41ebbca 100755
--- a/gold/testsuite/gdb_index_test_1.sh
+++ b/gold/testsuite/gdb_index_test_1.sh
@@ -2,7 +2,7 @@
# gdb_index_test_1.sh -- a test case for the --gdb-index option.
-# Copyright (C) 2012-2017 Free Software Foundation, Inc.
+# Copyright (C) 2012-2018 Free Software Foundation, Inc.
# Written by Cary Coutant <ccoutant@google.com>.
# This file is part of gold.
diff --git a/gold/testsuite/icf_preemptible_functions_test.sh b/gold/testsuite/icf_preemptible_functions_test.sh
index db02c7c..a0173a2 100755
--- a/gold/testsuite/icf_preemptible_functions_test.sh
+++ b/gold/testsuite/icf_preemptible_functions_test.sh
@@ -2,7 +2,7 @@
# icf_preemptible_functions_test.sh -- test --icf=all
-# Copyright (C) 2010-2017 Free Software Foundation, Inc.
+# Copyright (C) 2010-2018 Free Software Foundation, Inc.
# Written by Sriraman Tallam <tmsriram@google.com>.
# This file is part of gold.
diff --git a/gold/testsuite/icf_safe_so_test.cc b/gold/testsuite/icf_safe_so_test.cc
index 21aedef..5481d04 100644
--- a/gold/testsuite/icf_safe_so_test.cc
+++ b/gold/testsuite/icf_safe_so_test.cc
@@ -1,6 +1,6 @@
// icf_safe_so_test.cc -- a test case for gold
-// Copyright (C) 2010-2017 Free Software Foundation, Inc.
+// Copyright (C) 2010-2018 Free Software Foundation, Inc.
// Written by Sriraman Tallam <tmsriram@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/icf_sht_rel_addend_test_1.cc b/gold/testsuite/icf_sht_rel_addend_test_1.cc
index ccb0cde..c9b4d87 100644
--- a/gold/testsuite/icf_sht_rel_addend_test_1.cc
+++ b/gold/testsuite/icf_sht_rel_addend_test_1.cc
@@ -1,6 +1,6 @@
// icf_sht_rel_addend_test_1.cc -- a test case for gold
-// Copyright (C) 2010-2017 Free Software Foundation, Inc.
+// Copyright (C) 2010-2018 Free Software Foundation, Inc.
// Written by Sriraman Tallam <tmsriram@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/icf_string_merge_test.cc b/gold/testsuite/icf_string_merge_test.cc
index 74ff567..e91f85f 100644
--- a/gold/testsuite/icf_string_merge_test.cc
+++ b/gold/testsuite/icf_string_merge_test.cc
@@ -1,6 +1,6 @@
// icf_string_merge_test.cc -- a test case for gold
-// Copyright (C) 2010-2017 Free Software Foundation, Inc.
+// Copyright (C) 2010-2018 Free Software Foundation, Inc.
// Written by Sriraman Tallam <tmsriram@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/icf_test.cc b/gold/testsuite/icf_test.cc
index c6bd088..ec40d18 100644
--- a/gold/testsuite/icf_test.cc
+++ b/gold/testsuite/icf_test.cc
@@ -1,6 +1,6 @@
// icf_test.cc -- a test case for gold
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Sriraman Tallam <tmsriram@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/incremental_test.sh b/gold/testsuite/incremental_test.sh
index 0167f1a..e411e0d 100755
--- a/gold/testsuite/incremental_test.sh
+++ b/gold/testsuite/incremental_test.sh
@@ -2,7 +2,7 @@
# incremental_test.sh -- test that incremental linking information is correct.
-# Copyright (C) 2009-2017 Free Software Foundation, Inc.
+# Copyright (C) 2009-2018 Free Software Foundation, Inc.
# Written by Rafael Avila de Espindola <espindola@google.com>
# and Cary Coutant <ccoutant@google.com>
diff --git a/gold/testsuite/incremental_test_2.c b/gold/testsuite/incremental_test_2.c
index 3fe3904..3563458 100644
--- a/gold/testsuite/incremental_test_2.c
+++ b/gold/testsuite/incremental_test_2.c
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Rafael Avila de Espindola <espindola@google.com>
// This file is part of gold.
diff --git a/gold/testsuite/initpri3.c b/gold/testsuite/initpri3.c
index b705764..f6bbbeb 100644
--- a/gold/testsuite/initpri3.c
+++ b/gold/testsuite/initpri3.c
@@ -1,6 +1,6 @@
/* initpri3.c -- test ctor odering when using init_array.
- Copyright (C) 2011-2017 Free Software Foundation, Inc.
+ Copyright (C) 2011-2018 Free Software Foundation, Inc.
Written by Ian Lance Taylor <iant@google.com>.
This file is part of gold.
diff --git a/gold/testsuite/justsyms.t b/gold/testsuite/justsyms.t
index 2d95586..c5fdc2b 100644
--- a/gold/testsuite/justsyms.t
+++ b/gold/testsuite/justsyms.t
@@ -1,6 +1,6 @@
/* justsyms.t -- test --just-symbols for gold.
- Copyright (C) 2008-2017 Free Software Foundation, Inc.
+ Copyright (C) 2008-2018 Free Software Foundation, Inc.
Written by Ian Lance Taylor <iant@google.com>.
This file is part of gold.
diff --git a/gold/testsuite/justsyms_exec.c b/gold/testsuite/justsyms_exec.c
index a907dee..49c0b55 100644
--- a/gold/testsuite/justsyms_exec.c
+++ b/gold/testsuite/justsyms_exec.c
@@ -1,6 +1,6 @@
// justsyms_exec.c -- test --just-symbols for gold
-// Copyright (C) 2011-2017 Free Software Foundation, Inc.
+// Copyright (C) 2011-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/justsyms_lib.c b/gold/testsuite/justsyms_lib.c
index 677490c..f9827bc 100644
--- a/gold/testsuite/justsyms_lib.c
+++ b/gold/testsuite/justsyms_lib.c
@@ -1,6 +1,6 @@
// justsyms_lib.cc -- test --just-symbols for gold
-// Copyright (C) 2011-2017 Free Software Foundation, Inc.
+// Copyright (C) 2011-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/memory_test.sh b/gold/testsuite/memory_test.sh
index ddea9bc..439df03 100755
--- a/gold/testsuite/memory_test.sh
+++ b/gold/testsuite/memory_test.sh
@@ -2,7 +2,7 @@
# memory_test.sh -- test MEMORY regions.
-# Copyright (C) 2010-2017 Free Software Foundation, Inc.
+# Copyright (C) 2010-2018 Free Software Foundation, Inc.
# Written by Nick Clifton <nickc@redhat.com>
# This file is part of gold.
diff --git a/gold/testsuite/missing_key_func.sh b/gold/testsuite/missing_key_func.sh
index c639e83..2e20512 100755
--- a/gold/testsuite/missing_key_func.sh
+++ b/gold/testsuite/missing_key_func.sh
@@ -3,7 +3,7 @@
# missing_key_func.sh -- a test case for printing error messages when
# a class is missing its key function.
-# Copyright (C) 2013-2017 Free Software Foundation, Inc.
+# Copyright (C) 2013-2018 Free Software Foundation, Inc.
# Written by Cary Coutant <ccoutant@google.com>
# This file is part of gold.
diff --git a/gold/testsuite/no_version_test.c b/gold/testsuite/no_version_test.c
index 4af4ff4..e8c0f93 100644
--- a/gold/testsuite/no_version_test.c
+++ b/gold/testsuite/no_version_test.c
@@ -1,6 +1,6 @@
// ver_no_default.c -- a test case for gold
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Doug Kwan <dougkwan@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/odr_violation2.cc b/gold/testsuite/odr_violation2.cc
index e3d30f3..aa9868f 100644
--- a/gold/testsuite/odr_violation2.cc
+++ b/gold/testsuite/odr_violation2.cc
@@ -23,6 +23,14 @@ void SortDescending(int array[], int size) {
extern "C" int OverriddenCFunction(int i) {
return i * i;
}
+
+// Extra lines to put SometimeInlineFunction at line 30+.
+
+// And a dummy function to workaround a GCC 7 bug with debug line numbers.
+int DummyFunction(int i) {
+ return i ^ 0x5555;
+}
+
// This is inline in debug_msg.cc, which makes it a weak symbol too.
int SometimesInlineFunction(int i) {
return i * i;
diff --git a/gold/testsuite/pie_copyrelocs_shared_test.cc b/gold/testsuite/pie_copyrelocs_shared_test.cc
index 638e919..0411e9c 100644
--- a/gold/testsuite/pie_copyrelocs_shared_test.cc
+++ b/gold/testsuite/pie_copyrelocs_shared_test.cc
@@ -1,7 +1,7 @@
// pie_copyrelocs_shared_test.cc -- a test case for gold, used
// by pie_copyrelocs_test
-// Copyright (C) 2014-2017 Free Software Foundation, Inc.
+// Copyright (C) 2014-2018 Free Software Foundation, Inc.
// Written by Sriraman Tallam <tmsriram@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/plugin_common_test_1.c b/gold/testsuite/plugin_common_test_1.c
index 86513c9..67e16c2 100644
--- a/gold/testsuite/plugin_common_test_1.c
+++ b/gold/testsuite/plugin_common_test_1.c
@@ -1,6 +1,6 @@
/* plugin_common_test_1.c -- test common symbol handling in plugins
- Copyright (C) 2010-2017 Free Software Foundation, Inc.
+ Copyright (C) 2010-2018 Free Software Foundation, Inc.
Written by Cary Coutant <ccoutant@google.com>
This file is part of gold.
diff --git a/gold/testsuite/plugin_final_layout.sh b/gold/testsuite/plugin_final_layout.sh
index 5498591..3157bea 100755
--- a/gold/testsuite/plugin_final_layout.sh
+++ b/gold/testsuite/plugin_final_layout.sh
@@ -23,7 +23,7 @@
# MA 02110-1301, USA.
# The goal of this program is to verify if --section-ordering-file works as
-# intended. File final_layout.cc is in this test.
+# intended. File plugin_final_layout.cc is in this test.
set -e
@@ -37,7 +37,7 @@ BEGIN { saw1 = 0; saw2 = 0; err = 0; }
saw2 = 1;
if (!saw1)
{
- printf \"layout of $2 and $3 is not right\\n\";
+ printf \"layout of $2 and $3 is not right in file $1\\n\";
err = 1;
exit 1;
}
@@ -45,12 +45,12 @@ BEGIN { saw1 = 0; saw2 = 0; err = 0; }
END {
if (!saw1 && !err)
{
- printf \"did not see $2\\n\";
+ printf \"did not see $2 in file $1\\n\";
exit 1;
}
if (!saw2 && !err)
{
- printf \"did not see $3\\n\";
+ printf \"did not see $3 in file $1\\n\";
exit 1;
}
}" $1
@@ -74,12 +74,12 @@ BEGIN { saw_section = 0; saw_unique = 0; }
END {
if (!saw_section)
{
- printf \"Section $2 not seen in output\\n\";
+ printf \"Section $2 not seen in output file $1\\n\";
exit 1;
}
else if (!saw_unique)
{
- printf \"Unique segment not seen for: $2\\n\";
+ printf \"Unique segment not seen for: $2 in file $1\\n\";
exit 1;
}
}" $1
@@ -88,3 +88,7 @@ END {
check plugin_final_layout.stdout "_Z3foov" "_Z3barv"
check plugin_final_layout.stdout "_Z3barv" "_Z3bazv"
check_unique_segment plugin_final_layout_readelf.stdout ".text.plugin_created_unique"
+
+check plugin_layout_new_file.stdout "_Z3foov" "_Z3barv"
+check plugin_layout_new_file.stdout "_Z3barv" "_Z3bazv"
+check_unique_segment plugin_layout_new_file_readelf.stdout ".text.plugin_created_unique"
diff --git a/gold/testsuite/plugin_new_section_layout.c b/gold/testsuite/plugin_new_section_layout.c
new file mode 100644
index 0000000..0fe1607
--- /dev/null
+++ b/gold/testsuite/plugin_new_section_layout.c
@@ -0,0 +1,182 @@
+/* plugin_new_section_layout.c -- Simple plugin to reorder function sections in
+ plugin-generated objects
+
+ Copyright (C) 2017-2018 Free Software Foundation, Inc.
+ Written by Stephen Crane <sjc@immunant.com>.
+
+ This file is part of gold.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+/* This plugin tests the new_input API of the linker plugin interface that
+ * allows plugins to modify section layout and assign sections to segments for
+ * sections in plugin-generated object files. It assumes that another plugin is
+ * also in use which will add new files. In practice a plugin is likely to
+ * generate new input files itself in all_symbols_read and want to
+ * reorder/assign sections for these files in the new_input_hook callback. */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include "plugin-api.h"
+#include "elf/common.h"
+
+static ld_plugin_get_input_section_count get_input_section_count = NULL;
+static ld_plugin_get_input_section_type get_input_section_type = NULL;
+static ld_plugin_get_input_section_name get_input_section_name = NULL;
+static ld_plugin_update_section_order update_section_order = NULL;
+static ld_plugin_allow_section_ordering allow_section_ordering = NULL;
+static ld_plugin_allow_unique_segment_for_sections
+ allow_unique_segment_for_sections = NULL;
+static ld_plugin_unique_segment_for_sections unique_segment_for_sections = NULL;
+
+enum ld_plugin_status onload(struct ld_plugin_tv *tv);
+enum ld_plugin_status new_input_hook(const struct ld_plugin_input_file *file);
+
+/* Plugin entry point. */
+enum ld_plugin_status
+onload(struct ld_plugin_tv *tv)
+{
+ struct ld_plugin_tv *entry;
+ for (entry = tv; entry->tv_tag != LDPT_NULL; ++entry)
+ {
+ switch (entry->tv_tag)
+ {
+ case LDPT_GET_INPUT_SECTION_COUNT:
+ get_input_section_count = *entry->tv_u.tv_get_input_section_count;
+ break;
+ case LDPT_GET_INPUT_SECTION_TYPE:
+ get_input_section_type = *entry->tv_u.tv_get_input_section_type;
+ break;
+ case LDPT_GET_INPUT_SECTION_NAME:
+ get_input_section_name = *entry->tv_u.tv_get_input_section_name;
+ break;
+ case LDPT_UPDATE_SECTION_ORDER:
+ update_section_order = *entry->tv_u.tv_update_section_order;
+ break;
+ case LDPT_ALLOW_SECTION_ORDERING:
+ allow_section_ordering = *entry->tv_u.tv_allow_section_ordering;
+ break;
+ case LDPT_ALLOW_UNIQUE_SEGMENT_FOR_SECTIONS:
+ allow_unique_segment_for_sections
+ = *entry->tv_u.tv_allow_unique_segment_for_sections;
+ break;
+ case LDPT_UNIQUE_SEGMENT_FOR_SECTIONS:
+ unique_segment_for_sections
+ = *entry->tv_u.tv_unique_segment_for_sections;
+ break;
+ case LDPT_REGISTER_NEW_INPUT_HOOK:
+ assert((*entry->tv_u.tv_register_new_input) (new_input_hook)
+ == LDPS_OK);
+ break;
+ default:
+ break;
+ }
+ }
+
+ if (get_input_section_count == NULL
+ || get_input_section_type == NULL
+ || get_input_section_name == NULL
+ || update_section_order == NULL
+ || allow_section_ordering == NULL
+ || allow_unique_segment_for_sections == NULL
+ || unique_segment_for_sections == NULL)
+ {
+ fprintf(stderr, "Some interfaces are missing\n");
+ return LDPS_ERR;
+ }
+
+ /* Inform the linker to prepare for section reordering. */
+ (*allow_section_ordering)();
+ /* Inform the linker to prepare to map some sections to unique
+ segments. */
+ (*allow_unique_segment_for_sections)();
+
+ return LDPS_OK;
+}
+
+inline static int is_prefix_of(const char *prefix, const char *str)
+{
+ return strncmp(prefix, str, strlen (prefix)) == 0;
+}
+
+/* This function is called by the linker when new files are added by a plugin.
+ We can now tell the linker the desired function order since we have a file
+ handle for the newly added file. */
+
+enum ld_plugin_status
+new_input_hook(const struct ld_plugin_input_file *file)
+{
+ struct ld_plugin_section section_list[3];
+ int num_entries = 0;
+ unsigned int count;
+
+ if (get_input_section_count(file->handle, &count) != LDPS_OK)
+ return LDPS_ERR;
+
+ unsigned int i;
+ for (i = 0; i < count; ++i)
+ {
+ struct ld_plugin_section section;
+ unsigned int type = 0;
+ char *name = NULL;
+ int position = 3;
+
+ section.handle = file->handle;
+ section.shndx = i;
+
+ if (get_input_section_type(section, &type) != LDPS_OK)
+ return LDPL_FATAL;
+ if (type != SHT_PROGBITS)
+ continue;
+
+ if (get_input_section_name(section, &name))
+ return LDPL_FATAL;
+
+ /* As in plugin_section_order.c, order is foo() followed by bar()
+ followed by baz() */
+ if (is_prefix_of(".text.", name))
+ {
+ if (strstr(name, "_Z3foov") != NULL)
+ position = 0;
+ else if (strstr(name, "_Z3barv") != NULL)
+ position = 1;
+ else if (strstr(name, "_Z3bazv") != NULL)
+ position = 2;
+ else
+ position = 3;
+ }
+ if (position < 3)
+ {
+ section_list[position] = section;
+ num_entries++;
+ }
+ }
+
+ if (num_entries != 3)
+ return LDPL_FATAL;
+
+ update_section_order(section_list, num_entries);
+ unique_segment_for_sections (".text.plugin_created_unique", 0, 0x1000,
+ section_list, num_entries);
+
+ return LDPS_OK;
+}
diff --git a/gold/testsuite/plugin_section_alignment.cc b/gold/testsuite/plugin_section_alignment.cc
index 76b64ec..4454637 100644
--- a/gold/testsuite/plugin_section_alignment.cc
+++ b/gold/testsuite/plugin_section_alignment.cc
@@ -1,6 +1,6 @@
// plugin_section_alignment.cc -- plugins to test ordering with {size,alignment}
//
-// Copyright (C) 2016-2017 Free Software Foundation, Inc.
+// Copyright (C) 2016-2018 Free Software Foundation, Inc.
// Written by Than McIntosh <thanm@google.com>.
//
// This file is part of gold.
diff --git a/gold/testsuite/plugin_test.c b/gold/testsuite/plugin_test.c
index e8c8a5d..c6df7b6 100644
--- a/gold/testsuite/plugin_test.c
+++ b/gold/testsuite/plugin_test.c
@@ -1,6 +1,6 @@
/* test_plugin.c -- simple linker plugin test
- Copyright (C) 2008-2017 Free Software Foundation, Inc.
+ Copyright (C) 2008-2018 Free Software Foundation, Inc.
Written by Cary Coutant <ccoutant@google.com>.
This file is part of gold.
diff --git a/gold/testsuite/plugin_test_10.sh b/gold/testsuite/plugin_test_10.sh
index 4474824..f5bee96e 100755
--- a/gold/testsuite/plugin_test_10.sh
+++ b/gold/testsuite/plugin_test_10.sh
@@ -2,7 +2,7 @@
# plugin_test_10.sh -- a test case for the plugin API.
-# Copyright (C) 2010-2017 Free Software Foundation, Inc.
+# Copyright (C) 2010-2018 Free Software Foundation, Inc.
# Written by Rafael Ãvila de Espíndola <rafael.espindola@gmail.com>
# This file is part of gold.
diff --git a/gold/testsuite/plugin_test_11.sh b/gold/testsuite/plugin_test_11.sh
index 8f55fb9..b823433 100755
--- a/gold/testsuite/plugin_test_11.sh
+++ b/gold/testsuite/plugin_test_11.sh
@@ -2,7 +2,7 @@
# plugin_test_11.sh -- a test case for the plugin API.
-# Copyright (C) 2008-2017 Free Software Foundation, Inc.
+# Copyright (C) 2008-2018 Free Software Foundation, Inc.
# Written by Cary Coutant <ccoutant@google.com>.
# This file is part of gold.
diff --git a/gold/testsuite/plugin_test_12.sh b/gold/testsuite/plugin_test_12.sh
new file mode 100755
index 0000000..f34f248
--- /dev/null
+++ b/gold/testsuite/plugin_test_12.sh
@@ -0,0 +1,52 @@
+#!/bin/sh
+
+# plugin_test_12.sh -- a test case for the plugin API.
+
+# Copyright (C) 2017 onwards Free Software Foundation, Inc.
+# Written by Teresa Johnson <tejohnson@google.com>.
+
+# This file is part of gold.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+# This file goes with plugin_test.c, a simple plug-in library that
+# exercises the basic interfaces and prints out version numbers and
+# options passed to the plugin.
+
+# This checks if the symbol resolution withe export dynamic symbol is
+# as expected.
+
+check()
+{
+ if ! grep -q "$2" "$1"
+ then
+ echo "Did not find expected output in $1:"
+ echo " $2"
+ echo ""
+ echo "Actual output below:"
+ cat "$1"
+ exit 1
+ fi
+}
+
+check plugin_test_12.err "API version:"
+check plugin_test_12.err "gold version:"
+check plugin_test_12.err "option: _Z3foov"
+check plugin_test_12.err "export_dynamic_plugin.o.syms: claim file hook called"
+check plugin_test_12.err "export_dynamic_plugin.o.syms: _Z3foov: PREVAILING_DEF_IRONLY_EXP"
+check plugin_test_12.err "cleanup hook called"
+
+exit 0
diff --git a/gold/testsuite/plugin_test_2.sh b/gold/testsuite/plugin_test_2.sh
index 75400e8..580001c 100755
--- a/gold/testsuite/plugin_test_2.sh
+++ b/gold/testsuite/plugin_test_2.sh
@@ -2,7 +2,7 @@
# plugin_test_2.sh -- a test case for the plugin API.
-# Copyright (C) 2008-2017 Free Software Foundation, Inc.
+# Copyright (C) 2008-2018 Free Software Foundation, Inc.
# Written by Cary Coutant <ccoutant@google.com>.
# This file is part of gold.
diff --git a/gold/testsuite/plugin_test_7_2.c b/gold/testsuite/plugin_test_7_2.c
index c9c999a..da86766 100644
--- a/gold/testsuite/plugin_test_7_2.c
+++ b/gold/testsuite/plugin_test_7_2.c
@@ -1,6 +1,6 @@
/* plugin_test_7_1.c -- a test case for the plugin API with GC.
- Copyright (C) 2010-2017 Free Software Foundation, Inc.
+ Copyright (C) 2010-2018 Free Software Foundation, Inc.
Written by Rafael Avila de Espindola <espindola@google.com>.
This file is part of gold.
diff --git a/gold/testsuite/plugin_test_start_lib.sh b/gold/testsuite/plugin_test_start_lib.sh
index 110402d..180b1d9 100755
--- a/gold/testsuite/plugin_test_start_lib.sh
+++ b/gold/testsuite/plugin_test_start_lib.sh
@@ -2,7 +2,7 @@
# plugin_test_start_lib.sh -- a test case for the plugin API.
-# Copyright (C) 2008-2017 Free Software Foundation, Inc.
+# Copyright (C) 2008-2018 Free Software Foundation, Inc.
# Written by Evgenii Stepanov <eugenis@google.com>.
# This file is part of gold.
diff --git a/gold/testsuite/pr20717.sh b/gold/testsuite/pr20717.sh
index 0b82376..4e6528a 100755
--- a/gold/testsuite/pr20717.sh
+++ b/gold/testsuite/pr20717.sh
@@ -3,7 +3,7 @@
# pr20717.sh -- test --gc-sections for an unused orphan section
# when the last section in the linker script has a KEEP statement.
-# Copyright (C) 2016-2017 Free Software Foundation, Inc.
+# Copyright (C) 2016-2018 Free Software Foundation, Inc.
# Written by Igor Kudrin <ikudrin@accesssoftek.com>
# This file is part of gold.
diff --git a/gold/testsuite/pr22266_a.c b/gold/testsuite/pr22266_a.c
new file mode 100644
index 0000000..7c773db
--- /dev/null
+++ b/gold/testsuite/pr22266_a.c
@@ -0,0 +1,13 @@
+__attribute__((section(".data.a")))
+static int int_from_a_1 = 0x11223344;
+
+__attribute__((section(".data.rel.ro.a")))
+int *p_int_from_a_2 = &int_from_a_1;
+
+const char *hello (void);
+
+const char *
+hello (void)
+{
+ return "XXXHello, world!" + 3;
+}
diff --git a/gold/testsuite/pr22266_main.c b/gold/testsuite/pr22266_main.c
new file mode 100644
index 0000000..b49b5e1
--- /dev/null
+++ b/gold/testsuite/pr22266_main.c
@@ -0,0 +1,13 @@
+#include <stdlib.h>
+#include <string.h>
+
+extern int *p_int_from_a_2;
+extern const char *hello (void);
+
+int main (void) {
+ if (*p_int_from_a_2 != 0x11223344)
+ abort ();
+ if (strcmp(hello(), "Hello, world!") != 0)
+ abort ();
+ return 0;
+}
diff --git a/gold/testsuite/pr22266_script.t b/gold/testsuite/pr22266_script.t
new file mode 100644
index 0000000..7b49988
--- /dev/null
+++ b/gold/testsuite/pr22266_script.t
@@ -0,0 +1,24 @@
+/* Linker script to undo -split-sections and merge all sections together when
+ * linking relocatable object files for GHCi.
+ * ld -r normally retains the individual sections, which is what you would want
+ * if the intention is to eventually link into a binary with --gc-sections, but
+ * it doesn't have a flag for directly doing what we want. */
+SECTIONS
+{
+ .text : {
+ *(.text*)
+ }
+ .rodata :
+ {
+ *(.rodata .rodata.* .gnu.linkonce.r.*)
+ }
+ .data.rel.ro : {
+ *(.data.rel.ro*)
+ }
+ .data : {
+ *(.data*)
+ }
+ .bss : {
+ *(.bss*)
+ }
+}
diff --git a/gold/testsuite/relro_test.sh b/gold/testsuite/relro_test.sh
index 89d3bfa..75853d8 100755
--- a/gold/testsuite/relro_test.sh
+++ b/gold/testsuite/relro_test.sh
@@ -2,7 +2,7 @@
# relro_test.sh -- test -z relro
-# Copyright (C) 2010-2017 Free Software Foundation, Inc.
+# Copyright (C) 2010-2018 Free Software Foundation, Inc.
# Written by Cary Coutant <ccoutant@google.com>.
# This file is part of gold.
diff --git a/gold/testsuite/relro_test_main.cc b/gold/testsuite/relro_test_main.cc
index 2d2980e..98941ef 100644
--- a/gold/testsuite/relro_test_main.cc
+++ b/gold/testsuite/relro_test_main.cc
@@ -1,6 +1,6 @@
// relro_test_main.cc -- test -z relro for gold, main function
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/script_test_14.sh b/gold/testsuite/script_test_14.sh
index b707449..a154be1 100755
--- a/gold/testsuite/script_test_14.sh
+++ b/gold/testsuite/script_test_14.sh
@@ -2,7 +2,7 @@
# script_test_14.sh -- test SORT_BY_INIT_PRIORITY
-# Copyright (C) 2016-2017 Free Software Foundation, Inc.
+# Copyright (C) 2016-2018 Free Software Foundation, Inc.
# Written by Igor Kudrin <ikudrin@accesssoftek.com>.
# This file is part of gold.
diff --git a/gold/testsuite/script_test_4.sh b/gold/testsuite/script_test_4.sh
index 776cf4d..b1e58ef 100755
--- a/gold/testsuite/script_test_4.sh
+++ b/gold/testsuite/script_test_4.sh
@@ -2,7 +2,7 @@
# script_test_4.sh -- test load segment
-# Copyright (C) 2008-2017 Free Software Foundation, Inc.
+# Copyright (C) 2008-2018 Free Software Foundation, Inc.
# Written by Ian Lance Taylor <iant@google.com>.
# This file is part of gold.
diff --git a/gold/testsuite/script_test_5.cc b/gold/testsuite/script_test_5.cc
index b74095b..788ceda 100644
--- a/gold/testsuite/script_test_5.cc
+++ b/gold/testsuite/script_test_5.cc
@@ -1,6 +1,6 @@
// script_test_5.cc -- a test case for gold
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/script_test_5.t b/gold/testsuite/script_test_5.t
index b6cf6ac..074ebc6 100644
--- a/gold/testsuite/script_test_5.t
+++ b/gold/testsuite/script_test_5.t
@@ -1,6 +1,6 @@
/* script_test_5.t -- linker script test 5 for gold
- Copyright (C) 2009-2017 Free Software Foundation, Inc.
+ Copyright (C) 2009-2018 Free Software Foundation, Inc.
Written by Cary Coutant <ccoutant@google.com>.
This file is part of gold.
diff --git a/gold/testsuite/script_test_9.sh b/gold/testsuite/script_test_9.sh
index 1aed7a0..7216c96 100755
--- a/gold/testsuite/script_test_9.sh
+++ b/gold/testsuite/script_test_9.sh
@@ -3,7 +3,7 @@
# script_test_9.sh -- Check that the script_test_9.t script has placed
# .init and .text in the same segment.
-# Copyright (C) 2010-2017 Free Software Foundation, Inc.
+# Copyright (C) 2010-2018 Free Software Foundation, Inc.
# Written by Rafael Avila de Espindola <espindola@google.com>.
# This file is part of gold.
diff --git a/gold/testsuite/section_sorting_name.cc b/gold/testsuite/section_sorting_name.cc
index 271a432..227d6a2 100644
--- a/gold/testsuite/section_sorting_name.cc
+++ b/gold/testsuite/section_sorting_name.cc
@@ -1,6 +1,6 @@
// section_sorting_name.cc -- a test case for gold
-// Copyright (C) 2013-2017 Free Software Foundation, Inc.
+// Copyright (C) 2013-2018 Free Software Foundation, Inc.
// Written by Alexander Ivchenko <alexander.ivchenko@intel.com>.
// This file is part of gold.
diff --git a/gold/testsuite/section_sorting_name.sh b/gold/testsuite/section_sorting_name.sh
index ee58f6c..8d7fc37 100755
--- a/gold/testsuite/section_sorting_name.sh
+++ b/gold/testsuite/section_sorting_name.sh
@@ -2,7 +2,7 @@
# section_sorting_name.sh -- test
-# Copyright (C) 2013-2017 Free Software Foundation, Inc.
+# Copyright (C) 2013-2018 Free Software Foundation, Inc.
# Written by Alexander Ivchenko <alexander.ivchenko@intel.com>.
# This file is part of gold.
diff --git a/gold/testsuite/split_x32.sh b/gold/testsuite/split_x32.sh
index 7c694c3..fa4e441 100755
--- a/gold/testsuite/split_x32.sh
+++ b/gold/testsuite/split_x32.sh
@@ -2,7 +2,7 @@
# split_x32.sh -- test -fstack-split for x32
-# Copyright (C) 2014-2017 Free Software Foundation, Inc.
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
# Written by Ian Lance Taylor <iant@google.com>.
# Modified by H.J. Lu <hongjiu.lu@intel.com>.
diff --git a/gold/testsuite/strong_ref_weak_def_2.c b/gold/testsuite/strong_ref_weak_def_2.c
index e1c6c88..fa96553 100644
--- a/gold/testsuite/strong_ref_weak_def_2.c
+++ b/gold/testsuite/strong_ref_weak_def_2.c
@@ -1,7 +1,7 @@
// strong_ref_weak_def_2.c -- test a strong reference to a weak definition
// in a DSO.
-// Copyright (C) 2010-2017 Free Software Foundation, Inc.
+// Copyright (C) 2010-2018 Free Software Foundation, Inc.
// Written by Doug Kwan <dougkwan@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/test.cc b/gold/testsuite/test.cc
index cedd52d..14ac3eb 100644
--- a/gold/testsuite/test.cc
+++ b/gold/testsuite/test.cc
@@ -1,6 +1,6 @@
// test.cc -- simplistic test framework for gold.
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/text_section_grouping.sh b/gold/testsuite/text_section_grouping.sh
index 360ddf6..03b4e08 100755
--- a/gold/testsuite/text_section_grouping.sh
+++ b/gold/testsuite/text_section_grouping.sh
@@ -2,7 +2,7 @@
# text_section_grouping.sh -- test
-# Copyright (C) 2012-2017 Free Software Foundation, Inc.
+# Copyright (C) 2012-2018 Free Software Foundation, Inc.
# Written by Sriraman Tallam <tmsriram@google.com>.
# This file is part of gold.
diff --git a/gold/testsuite/text_unlikely_segment.cc b/gold/testsuite/text_unlikely_segment.cc
new file mode 100644
index 0000000..f8e6dd7
--- /dev/null
+++ b/gold/testsuite/text_unlikely_segment.cc
@@ -0,0 +1,30 @@
+/* text_unlikey_segment.cc -- a test case for gold
+
+ Copyright (C) 2017 onwards Free Software Foundation, Inc.
+ Written by Sriraman Tallam <tmsriram@google.com>
+
+ This file is part of gold.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+__attribute__((section(".text.unlikely")))
+int foo(void) {
+ return 0;
+}
+
+int main(void) {
+ return 0;
+}
diff --git a/gold/testsuite/text_unlikely_segment.sh b/gold/testsuite/text_unlikely_segment.sh
new file mode 100755
index 0000000..b01fe6c
--- /dev/null
+++ b/gold/testsuite/text_unlikely_segment.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+# plugin_final_layout.sh -- test
+
+# Copyright (C) 2011-2017 Free Software Foundation, Inc.
+# Written by Sriraman Tallam <tmsriram@google.com>.
+
+# This file is part of gold.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+# The goal of this program is to verify if -z,text-unlikely-segment works as
+# intended. File text_unlikely_segment.cc is part of this test.
+
+
+set -e
+
+# With readelf -l, an ELF Section to Segment mapping is printed as :
+##############################################
+# Section to Segment mapping:
+# Segment Sections...
+# ...
+# 0x .text.unlikely
+# ...
+##############################################
+# Check if .text.unlikely is the only section in the segment.
+check_unique_segment()
+{
+ awk "
+BEGIN { saw_section = 0; saw_unique = 0; }
+/$2/ { saw_section = 1; }
+/[ ]*0[0-9][ ]*$2[ ]*\$/ { saw_unique = 1; }
+END {
+ if (!saw_section)
+ {
+ printf \"Section $2 not seen in output\\n\";
+ exit 1;
+ }
+ else if (!saw_unique)
+ {
+ printf \"Unique segment not seen for: $2\\n\";
+ exit 1;
+ }
+ }" $1
+}
+
+check_unique_segment text_unlikely_segment_readelf.stdout ".text.unlikely"
diff --git a/gold/testsuite/thin_archive_test_2.cc b/gold/testsuite/thin_archive_test_2.cc
index d72744e..8fbfcce 100644
--- a/gold/testsuite/thin_archive_test_2.cc
+++ b/gold/testsuite/thin_archive_test_2.cc
@@ -1,6 +1,6 @@
// thin_archive_test_2.cc -- part of a test case for thin archives
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/thin_archive_test_4.cc b/gold/testsuite/thin_archive_test_4.cc
index c10ca2f..f21258e 100644
--- a/gold/testsuite/thin_archive_test_4.cc
+++ b/gold/testsuite/thin_archive_test_4.cc
@@ -1,6 +1,6 @@
// thin_archive_test_4.cc -- part of a test case for thin archives
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/tls_test.cc b/gold/testsuite/tls_test.cc
index 7c21070..6495b1e 100644
--- a/gold/testsuite/tls_test.cc
+++ b/gold/testsuite/tls_test.cc
@@ -1,6 +1,6 @@
// tls_test.cc -- test TLS variables for gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/two_file_shared.sh b/gold/testsuite/two_file_shared.sh
index 2e2976b..d10443d 100755
--- a/gold/testsuite/two_file_shared.sh
+++ b/gold/testsuite/two_file_shared.sh
@@ -2,7 +2,7 @@
# two_file_shared.sh -- check that debug info gets symbol addresses
-# Copyright (C) 2009-2017 Free Software Foundation, Inc.
+# Copyright (C) 2009-2018 Free Software Foundation, Inc.
# Written by Ian Lance Taylor <iant@google.com>.
# This file is part of gold.
diff --git a/gold/testsuite/two_file_test.h b/gold/testsuite/two_file_test.h
index d2082a8..b00d682 100644
--- a/gold/testsuite/two_file_test.h
+++ b/gold/testsuite/two_file_test.h
@@ -1,6 +1,6 @@
// two_file_test.h -- a two file test case for gold, header file -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/two_file_test_1.cc b/gold/testsuite/two_file_test_1.cc
index 567409a..8c26c63 100644
--- a/gold/testsuite/two_file_test_1.cc
+++ b/gold/testsuite/two_file_test_1.cc
@@ -20,6 +20,9 @@
// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
// MA 02110-1301, USA.
+// For incremental linking tests, this file needs to be compiled with
+// -fno-exceptions -fno-asynchronous-unwind-tables.
+
// This tests references between files. This is file 1, and
// two_file_test_2.cc is file 2. We test in several different ways:
diff --git a/gold/testsuite/two_file_test_1_v1.cc b/gold/testsuite/two_file_test_1_v1.cc
index d2ea0e2..f95ee73 100644
--- a/gold/testsuite/two_file_test_1_v1.cc
+++ b/gold/testsuite/two_file_test_1_v1.cc
@@ -25,6 +25,9 @@
// source file, then do an incremental link with the primary version of
// the file.
+// For incremental linking tests, this file needs to be compiled with
+// -fno-exceptions -fno-asynchronous-unwind-tables.
+
// This tests references between files. This is file 1, and
// two_file_test_2.cc is file 2. We test in several different ways:
diff --git a/gold/testsuite/two_file_test_main.cc b/gold/testsuite/two_file_test_main.cc
index b2ae66d..2bf43a9 100644
--- a/gold/testsuite/two_file_test_main.cc
+++ b/gold/testsuite/two_file_test_main.cc
@@ -1,6 +1,6 @@
// two_file_test_main.cc -- a two file test case for gold, main function
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/two_file_test_tls.cc b/gold/testsuite/two_file_test_tls.cc
index 9d2b8c6..f3ba2d7 100644
--- a/gold/testsuite/two_file_test_tls.cc
+++ b/gold/testsuite/two_file_test_tls.cc
@@ -1,6 +1,6 @@
// two_file_test_tls.cc -- a two file test case for gold, main function, with TLS
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/ver_matching_test.sh b/gold/testsuite/ver_matching_test.sh
index 1d38d7b..b49f6a0 100755
--- a/gold/testsuite/ver_matching_test.sh
+++ b/gold/testsuite/ver_matching_test.sh
@@ -2,7 +2,7 @@
# ver_matching_test.sh -- a test case for version script matching
-# Copyright (C) 2008-2017 Free Software Foundation, Inc.
+# Copyright (C) 2008-2018 Free Software Foundation, Inc.
# Written by Ian Lance Taylor <iant@google.com>.
# This file is part of gold.
diff --git a/gold/testsuite/ver_test.h b/gold/testsuite/ver_test.h
index 0bee904..83e9690 100644
--- a/gold/testsuite/ver_test.h
+++ b/gold/testsuite/ver_test.h
@@ -1,6 +1,6 @@
// ver_test.h -- a test case for gold
-// Copyright (C) 2007-2017 Free Software Foundation, Inc.
+// Copyright (C) 2007-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/ver_test_1.sh b/gold/testsuite/ver_test_1.sh
index 847e837..e71156d 100755
--- a/gold/testsuite/ver_test_1.sh
+++ b/gold/testsuite/ver_test_1.sh
@@ -2,7 +2,7 @@
# ver_test_1.sh -- check that protected symbols are local
-# Copyright (C) 2009-2017 Free Software Foundation, Inc.
+# Copyright (C) 2009-2018 Free Software Foundation, Inc.
# Written by Ian Lance Taylor <iant@google.com>.
# This file is part of gold.
diff --git a/gold/testsuite/ver_test_10.script b/gold/testsuite/ver_test_10.script
index 86b38e8..9f5ff6f 100644
--- a/gold/testsuite/ver_test_10.script
+++ b/gold/testsuite/ver_test_10.script
@@ -1,6 +1,6 @@
## ver_test_10.script -- a test case for gold
-## Copyright (C) 2008-2017 Free Software Foundation, Inc.
+## Copyright (C) 2008-2018 Free Software Foundation, Inc.
## Written by Ian Lance Taylor <iant@google.com>.
## This file is part of gold.
diff --git a/gold/testsuite/ver_test_10.sh b/gold/testsuite/ver_test_10.sh
index cb4b7a3..7b71ab0 100755
--- a/gold/testsuite/ver_test_10.sh
+++ b/gold/testsuite/ver_test_10.sh
@@ -2,7 +2,7 @@
# ver_test_10.sh -- test global/local symbols
-# Copyright (C) 2008-2017 Free Software Foundation, Inc.
+# Copyright (C) 2008-2018 Free Software Foundation, Inc.
# Written by Ian Lance Taylor <iant@google.com>.
# This file is part of gold.
diff --git a/gold/testsuite/ver_test_4.cc b/gold/testsuite/ver_test_4.cc
index b55e934..8e2091b 100644
--- a/gold/testsuite/ver_test_4.cc
+++ b/gold/testsuite/ver_test_4.cc
@@ -1,6 +1,6 @@
// ver_test_4.cc -- a test case for gold
-// Copyright (C) 2007-2017 Free Software Foundation, Inc.
+// Copyright (C) 2007-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/ver_test_4.script b/gold/testsuite/ver_test_4.script
index e9e89c1..052e38a 100644
--- a/gold/testsuite/ver_test_4.script
+++ b/gold/testsuite/ver_test_4.script
@@ -1,6 +1,6 @@
## ver_test_4.script -- a test case for gold
-## Copyright (C) 2007-2017 Free Software Foundation, Inc.
+## Copyright (C) 2007-2018 Free Software Foundation, Inc.
## Written by Cary Coutant <ccoutant@google.com>.
## This file is part of gold.
diff --git a/gold/testsuite/ver_test_6.c b/gold/testsuite/ver_test_6.c
index cad5197..46390a6 100644
--- a/gold/testsuite/ver_test_6.c
+++ b/gold/testsuite/ver_test_6.c
@@ -1,6 +1,6 @@
/* ver_test_6.c -- test common symbol with shared library version
- Copyright (C) 2008-2017 Free Software Foundation, Inc.
+ Copyright (C) 2008-2018 Free Software Foundation, Inc.
Written by Ian Lance Taylor <iant@google.com>
This file is part of gold.
diff --git a/gold/testsuite/ver_test_8.script b/gold/testsuite/ver_test_8.script
index 3b5d57e..1714848 100644
--- a/gold/testsuite/ver_test_8.script
+++ b/gold/testsuite/ver_test_8.script
@@ -1,6 +1,6 @@
## ver_test_8.script -- a test case for gold
-## Copyright (C) 2008-2017 Free Software Foundation, Inc.
+## Copyright (C) 2008-2018 Free Software Foundation, Inc.
## Written by Ian Lance Taylor <iant@google.com>
## This file is part of gold.
diff --git a/gold/testsuite/weak_alias_test_1.cc b/gold/testsuite/weak_alias_test_1.cc
index f317433..2af33d4 100644
--- a/gold/testsuite/weak_alias_test_1.cc
+++ b/gold/testsuite/weak_alias_test_1.cc
@@ -1,6 +1,6 @@
// weak_alias_test_1.cc -- test weak aliases for gold
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/weak_plt.sh b/gold/testsuite/weak_plt.sh
index 12c812a..73c8a9a 100755
--- a/gold/testsuite/weak_plt.sh
+++ b/gold/testsuite/weak_plt.sh
@@ -2,7 +2,7 @@
# weak_plt.sh -- test calling a weak undefined function.
-# Copyright (C) 2008-2017 Free Software Foundation, Inc.
+# Copyright (C) 2008-2018 Free Software Foundation, Inc.
# Written by Ian Lance Taylor <iant@google.com>.
# This file is part of gold.
diff --git a/gold/testsuite/weak_undef_file1.cc b/gold/testsuite/weak_undef_file1.cc
index 639ad47..0187319 100644
--- a/gold/testsuite/weak_undef_file1.cc
+++ b/gold/testsuite/weak_undef_file1.cc
@@ -1,6 +1,6 @@
// weak_undef_file1.cc -- test handling of weak undefined symbols for gold
-// Copyright (C) 2008-2017 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/weak_undef_file3.cc b/gold/testsuite/weak_undef_file3.cc
index 9d65f3a..01c7730 100644
--- a/gold/testsuite/weak_undef_file3.cc
+++ b/gold/testsuite/weak_undef_file3.cc
@@ -1,6 +1,6 @@
// weak_undef_file3.cc -- test handling of weak undefined symbols for gold
-// Copyright (C) 2014-2017 Free Software Foundation, Inc.
+// Copyright (C) 2014-2018 Free Software Foundation, Inc.
// Written by Cary Coutant <ccoutant@google.com>.
// This file is part of gold.
diff --git a/gold/testsuite/x32_overflow_pc32.sh b/gold/testsuite/x32_overflow_pc32.sh
index 35b9198..c10785d 100755
--- a/gold/testsuite/x32_overflow_pc32.sh
+++ b/gold/testsuite/x32_overflow_pc32.sh
@@ -2,7 +2,7 @@
# x86_64_overflow_pc32.sh -- a test case for overflow checking.
-# Copyright (C) 2016-2017 Free Software Foundation, Inc.
+# Copyright (C) 2016-2018 Free Software Foundation, Inc.
# Written by Cary Coutant <ccoutant@gmail.com>.
# This file is part of gold.
diff --git a/gold/testsuite/x86_64_mov_to_lea.sh b/gold/testsuite/x86_64_mov_to_lea.sh
index 30b2255..0083592 100755
--- a/gold/testsuite/x86_64_mov_to_lea.sh
+++ b/gold/testsuite/x86_64_mov_to_lea.sh
@@ -2,7 +2,7 @@
# x86_64_mov_to_lea.sh -- a test for mov2lea conversion.
-# Copyright (C) 2010-2017 Free Software Foundation, Inc.
+# Copyright (C) 2010-2018 Free Software Foundation, Inc.
# Written by Tocar Ilya <ilya.tocar@intel.com>
# This file is part of gold.
diff --git a/gold/tilegx.cc b/gold/tilegx.cc
index 07c03fc..595c9e6 100644
--- a/gold/tilegx.cc
+++ b/gold/tilegx.cc
@@ -1,6 +1,6 @@
// tilegx.cc -- tilegx target support for gold.
-// Copyright (C) 2012-2017 Free Software Foundation, Inc.
+// Copyright (C) 2012-2018 Free Software Foundation, Inc.
// Written by Jiong Wang (jiwang@tilera.com)
// This file is part of gold.
diff --git a/gold/timer.cc b/gold/timer.cc
index 91eb67b..ac8f3c5 100644
--- a/gold/timer.cc
+++ b/gold/timer.cc
@@ -1,6 +1,6 @@
// timer.cc -- helper class for time accounting
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Rafael Avila de Espindola <espindola@google.com>.
// This file is part of gold.
diff --git a/gold/timer.h b/gold/timer.h
index faad28f..deab052 100644
--- a/gold/timer.h
+++ b/gold/timer.h
@@ -1,6 +1,6 @@
// timer.h -- helper class for time accounting -*- C++ -*-
-// Copyright (C) 2009-2017 Free Software Foundation, Inc.
+// Copyright (C) 2009-2018 Free Software Foundation, Inc.
// Written by Rafael Avila de Espindola <espindola@google.com>.
// This file is part of gold.
diff --git a/gold/tls.h b/gold/tls.h
index e91610f..262a893 100644
--- a/gold/tls.h
+++ b/gold/tls.h
@@ -1,6 +1,6 @@
// tls.h -- Thread-Local Storage utility routines for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/token.h b/gold/token.h
index e6598e6..5cfd051 100644
--- a/gold/token.h
+++ b/gold/token.h
@@ -1,6 +1,6 @@
// token.h -- lock tokens for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/version.cc b/gold/version.cc
index 8b0c6a2..fd7fd9a 100644
--- a/gold/version.cc
+++ b/gold/version.cc
@@ -1,6 +1,6 @@
// version.c -- print gold version information
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -62,7 +62,7 @@ print_version(bool print_short)
if (!print_short)
{
// This output is intended to follow the GNU standards.
- printf(_("Copyright (C) 2017 Free Software Foundation, Inc.\n"));
+ printf(_("Copyright (C) 2018 Free Software Foundation, Inc.\n"));
printf(_("\
This program is free software; you may redistribute it under the terms of\n\
the GNU General Public License version 3 or (at your option) a later version.\n\
diff --git a/gold/workqueue-internal.h b/gold/workqueue-internal.h
index 1460357..3cde16a 100644
--- a/gold/workqueue-internal.h
+++ b/gold/workqueue-internal.h
@@ -1,6 +1,6 @@
// workqueue-internal.h -- internal work queue header for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/workqueue-threads.cc b/gold/workqueue-threads.cc
index f4fa370..f8e652c 100644
--- a/gold/workqueue-threads.cc
+++ b/gold/workqueue-threads.cc
@@ -1,6 +1,6 @@
// workqueue-threads.cc -- the threaded workqueue for gold
-// Copyright (C) 2007-2017 Free Software Foundation, Inc.
+// Copyright (C) 2007-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/workqueue.cc b/gold/workqueue.cc
index e8a62f7..93d5236 100644
--- a/gold/workqueue.cc
+++ b/gold/workqueue.cc
@@ -1,6 +1,6 @@
// workqueue.cc -- the workqueue for gold
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/workqueue.h b/gold/workqueue.h
index 306c7a3..07e108e 100644
--- a/gold/workqueue.h
+++ b/gold/workqueue.h
@@ -1,6 +1,6 @@
// workqueue.h -- the work queue for gold -*- C++ -*-
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
diff --git a/gold/x86_64.cc b/gold/x86_64.cc
index 7f1742d..a814060 100644
--- a/gold/x86_64.cc
+++ b/gold/x86_64.cc
@@ -1,6 +1,6 @@
// x86_64.cc -- x86_64 target support for gold.
-// Copyright (C) 2006-2017 Free Software Foundation, Inc.
+// Copyright (C) 2006-2018 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -3066,9 +3066,10 @@ Target_x86_64<size>::Scan::local(Symbol_table* symtab,
// mov foo@GOTPCREL(%rip), %reg
// to lea foo(%rip), %reg.
// in Relocate::relocate.
- if ((r_type == elfcpp::R_X86_64_GOTPCREL
- || r_type == elfcpp::R_X86_64_GOTPCRELX
- || r_type == elfcpp::R_X86_64_REX_GOTPCRELX)
+ if (!parameters->incremental()
+ && (r_type == elfcpp::R_X86_64_GOTPCREL
+ || r_type == elfcpp::R_X86_64_GOTPCRELX
+ || r_type == elfcpp::R_X86_64_REX_GOTPCRELX)
&& reloc.get_r_offset() >= 2
&& !is_ifunc)
{
@@ -3079,7 +3080,6 @@ Target_x86_64<size>::Scan::local(Symbol_table* symtab,
break;
}
-
// The symbol requires a GOT entry.
unsigned int r_sym = elfcpp::elf_r_sym<size>(reloc.get_r_info());
@@ -3546,15 +3546,21 @@ Target_x86_64<size>::Scan::global(Symbol_table* symtab,
// (callq|jmpq) *foo@GOTPCRELX(%rip) to
// (callq|jmpq) foo
// in Relocate::relocate, then there is nothing to do here.
+ // We cannot make these optimizations in incremental linking mode,
+ // because we look at the opcode to decide whether or not to make
+ // change, and during an incremental update, the change may have
+ // already been applied.
Lazy_view<size> view(object, data_shndx);
size_t r_offset = reloc.get_r_offset();
- if (r_offset >= 2
+ if (!parameters->incremental()
+ && r_offset >= 2
&& Target_x86_64<size>::can_convert_mov_to_lea(gsym, r_type,
r_offset, &view))
break;
- if (r_offset >= 2
+ if (!parameters->incremental()
+ && r_offset >= 2
&& Target_x86_64<size>::can_convert_callq_to_direct(gsym, r_type,
r_offset,
&view))
@@ -4211,7 +4217,7 @@ Target_x86_64<size>::Relocate::relocate(
case elfcpp::R_X86_64_GOT64:
case elfcpp::R_X86_64_GOTPLT64:
- // R_X86_64_GOTPLT64 is obsolete and treated the the same as
+ // R_X86_64_GOTPLT64 is obsolete and treated the same as
// GOT64.
gold_assert(have_got_offset);
Reloc_funcs::rela64(view, got_offset, addend);
@@ -4243,14 +4249,15 @@ Target_x86_64<size>::Relocate::relocate(
// mov foo@GOTPCREL(%rip), %reg
// to lea foo(%rip), %reg.
// if possible.
- if ((gsym == NULL
- && rela.get_r_offset() >= 2
- && view[-2] == 0x8b
- && !psymval->is_ifunc_symbol())
- || (gsym != NULL
- && rela.get_r_offset() >= 2
- && Target_x86_64<size>::can_convert_mov_to_lea(gsym, r_type,
- 0, &view)))
+ if (!parameters->incremental()
+ && ((gsym == NULL
+ && rela.get_r_offset() >= 2
+ && view[-2] == 0x8b
+ && !psymval->is_ifunc_symbol())
+ || (gsym != NULL
+ && rela.get_r_offset() >= 2
+ && Target_x86_64<size>::can_convert_mov_to_lea(gsym, r_type,
+ 0, &view))))
{
view[-2] = 0x8d;
Reloc_funcs::pcrela32(view, object, psymval, addend, address);
@@ -4261,7 +4268,8 @@ Target_x86_64<size>::Relocate::relocate(
// and jmpq *foo@GOTPCRELX(%rip) to
// jmpq foo
// nop
- else if (gsym != NULL
+ else if (!parameters->incremental()
+ && gsym != NULL
&& rela.get_r_offset() >= 2
&& Target_x86_64<size>::can_convert_callq_to_direct(gsym,
r_type,
diff --git a/gold/yyscript.y b/gold/yyscript.y
index e533cd3..b2a57c4 100644
--- a/gold/yyscript.y
+++ b/gold/yyscript.y
@@ -1,6 +1,6 @@
/* yyscript.y -- linker script grammar for gold. */
-/* Copyright (C) 2006-2017 Free Software Foundation, Inc.
+/* Copyright (C) 2006-2018 Free Software Foundation, Inc.
Written by Ian Lance Taylor <iant@google.com>.
This file is part of gold.