2018-03-24 14:33:47 +08:00
|
|
|
|
2018-03-23 Cary Coutant <ccoutant@gmail.com>
|
|
|
|
|
|
|
|
|
|
* plugin.cc (link_or_copy_file): Remove newlines from warning messages.
|
|
|
|
|
Add pedantic check for return value from ::write.
|
|
|
|
|
|
2018-03-24 14:29:43 +08:00
|
|
|
|
2018-03-23 Cary Coutant <ccoutant@gmail.com>
|
|
|
|
|
|
|
|
|
|
* debug.h (DEBUG_PLUGIN): New constant.
|
|
|
|
|
(DEBUG_ALL): Add DEBUG_PLUGIN.
|
|
|
|
|
(debug_string_to_enum): Likewise.
|
|
|
|
|
* plugin.cc (make_sized_plugin_object): Add filename parameter.
|
|
|
|
|
(Plugin_recorder): New class.
|
|
|
|
|
(Plugin_manager::~Plugin_manager): Delete recorder_.
|
|
|
|
|
(Plugin_manager::load_plugins): Create and initialize recorder_.
|
|
|
|
|
(Plugin_manager::claim_file): Record claimed and unclaimed files.
|
|
|
|
|
(Plugin_manager::make_plugin_object): Use object name as name for
|
|
|
|
|
plugin object, if available.
|
|
|
|
|
(Plugin_manager::add_input_file): Record replacement files.
|
|
|
|
|
(Sized_pluginobj::do_add_symbols): Record plugin symbols.
|
|
|
|
|
(Plugin_finish::run): Call Plugin_recorder::finish().
|
|
|
|
|
(make_sized_plugin_object): Add filename parameter and pass to
|
|
|
|
|
Sized_pluginobj constructor.
|
|
|
|
|
* plugin.h (Plugin::filename): New method.
|
|
|
|
|
(Plugin::recorder): New method.
|
|
|
|
|
(Plugin::recorder_): New data member.
|
|
|
|
|
|
2018-03-08 04:15:49 +08:00
|
|
|
|
2018-03-07 Sriraman Tallam <tmsriram@google.com>
|
|
|
|
|
|
|
|
|
|
* layout.cc (Layout::default_section_order): Check for text section
|
|
|
|
|
prefixes.
|
|
|
|
|
(Layout::text_section_name_mapping): New static member.
|
|
|
|
|
(Layout::text_section_name_mapping_count): New static member.
|
|
|
|
|
(Layout::match_section_name): New static function.
|
|
|
|
|
(Layout::output_section_name): Check for text section prefixes.
|
|
|
|
|
* layout.h (Output_section_order::ORDER_TEXT_HOT): New enum value.
|
|
|
|
|
(Output_section_order::ORDER_TEXT_STARTUP): New enum value.
|
|
|
|
|
(Output_section_order::ORDER_TEXT_EXIT): New enum value.
|
|
|
|
|
(Output_section_order::ORDER_TEXT_UNLIKELY): New enum value.
|
|
|
|
|
(Layout::text_section_name_mapping): New static member.
|
|
|
|
|
(Layout::text_section_name_mapping_count): New static member.
|
|
|
|
|
(Layout::match_section_name): New static function.
|
|
|
|
|
* options.h (keep_text_section_prefix): New -z option.
|
|
|
|
|
* testsuite/Makefile.am (keep_text_section_prefix): New test.
|
|
|
|
|
* testsuite/Makefile.in: Regenerate.
|
|
|
|
|
* testsuite/keep_text_section_prefix.cc: New test source.
|
|
|
|
|
* testsuite/keep_text_section_prefix.sh: New test script.
|
|
|
|
|
|
2018-02-23 05:56:46 +08:00
|
|
|
|
2018-02-22 Sriraman Tallam <tmsriram@google.com>
|
|
|
|
|
|
|
|
|
|
* plugin.cc (get_wrap_symbols): New plugin interface.
|
|
|
|
|
(load): Add get_wrap_symbols to transfer vector.
|
|
|
|
|
* plugin-api.h (ld_plugin_get_wrap_symbols): New plugin interface.
|
|
|
|
|
* testsuite/plugin_test.c (onload): Call and check get_wrap_symbols
|
|
|
|
|
interface.
|
|
|
|
|
* testsuite/plugin_test_wrap_symbols.sh: New test script.
|
|
|
|
|
* testsuite/plugin_test_wrap_symbols_1.cc: New file.
|
|
|
|
|
* testsuite/plugin_test_wrap_symbols_2.cc: New file.
|
|
|
|
|
* testsuite/Makefile.am (plugin_test_wrap_symbols): New test.
|
|
|
|
|
* testsuite/Makefile.in: Regenerate.
|
|
|
|
|
|
2018-02-16 09:35:16 +08:00
|
|
|
|
2018-02-07 Sriraman Tallam <tmsriram@google.com>
|
|
|
|
|
|
|
|
|
|
* expression.cc (Symbol_expression::set_expr_sym_in_real_elf):
|
|
|
|
|
New method.
|
|
|
|
|
(Unary_expression::set_expr_sym_in_real_elf): New method.
|
|
|
|
|
(Binary_expression::set_expr_sym_in_real_elf): New method.
|
|
|
|
|
(Trinary_expression::set_expr_sym_in_real_elf): New method.
|
|
|
|
|
* plugin.cc (get_symbol_resolution_info): Fix symbol resolution if
|
|
|
|
|
defined or used in defsyms.
|
|
|
|
|
* plugin.h (Plugin_manager::is_defsym_def): New method.
|
|
|
|
|
(Plugin_manager::Plugin_manager): Initialize defsym_defines_set_.
|
|
|
|
|
(Plugin_manager::defsym_defines_set_): New member.
|
|
|
|
|
(Plugin_manager::Defsym_defines_set): New typedef.
|
|
|
|
|
* script.cc (Script_options::set_defsym_uses_in_real_elf): New method.
|
|
|
|
|
(Script_options::find_defsym_defs): New method.
|
|
|
|
|
* script.h (Expression::set_expr_sym_in_real_elf): New method.
|
|
|
|
|
(Symbol_assignment::is_defsym): New method.
|
|
|
|
|
(Symbol_assignment::value): New method.
|
|
|
|
|
(Script_options::find_defsym_defs): New method.
|
|
|
|
|
(Script_options::set_defsym_uses_in_real_elf): New method.
|
|
|
|
|
* testsuite/Makefile.am (plugin_test_defsym): New test.
|
|
|
|
|
* testsuite/Makefile.in: Regenerate.
|
|
|
|
|
* testsuite/plugin_test.c: Check for new symbol resolution.
|
|
|
|
|
* testsuite/plugin_test_defsym.sh: New script.
|
|
|
|
|
* testsuite/plugin_test_defsym.c: New test source.
|
|
|
|
|
|
2018-02-05 10:47:52 +08:00
|
|
|
|
2018-02-07 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
Revert 2018-01-17 Alan Modra <amodra@gmail.com>
|
|
|
|
|
* options.h: Remove --speculate-indirect-jumps support.
|
|
|
|
|
* powerpc.cc: Likewise.
|
|
|
|
|
|
2018-02-03 09:44:27 +08:00
|
|
|
|
2018-02-02 Cary Coutant <ccoutant@gmail.com>
|
|
|
|
|
|
|
|
|
|
* PR gold/22776
|
|
|
|
|
* dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog): Add
|
|
|
|
|
support for DWARF-4 line number tables.
|
|
|
|
|
* dwarf_reader.h (Sized_dwarf_line_info::max_ops_per_insn): New field.
|
|
|
|
|
|
2018-01-18 19:36:40 +08:00
|
|
|
|
2018-01-18 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
* powerpc.cc (param_plt_align): New function supplying default
|
|
|
|
|
--plt-align values. Use it..
|
|
|
|
|
(Stub_table::plt_call_align): ..here, and..
|
|
|
|
|
(Output_data_glink::global_entry_align): ..here.
|
|
|
|
|
(Stub_table::stub_align): Correct 32-bit minimum alignment.
|
|
|
|
|
|
2018-01-17 11:49:08 +08:00
|
|
|
|
2018-01-17 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
* options.h (speculate_indirect_jumps): New option.
|
|
|
|
|
* powerpc.cc (beqctrm, beqctrlm, crseteq): New insn constants.
|
|
|
|
|
(output_bctr): New function.
|
|
|
|
|
(Stub_table::plt_call_size): Add space for speculation barrier.
|
|
|
|
|
(Stub_table::branch_stub_size): Likewise.
|
|
|
|
|
(Output_data_glink::pltresolve_size): Likewise.
|
|
|
|
|
(Stub_table::do_write): Output speculation barriers.
|
|
|
|
|
|
PowerPC PLT stub tidy
This is in preparation for the next patch adding Spectre variant 2
mitigation for PowerPC and PowerPC64. Besides tidying code involved
in stub output (to reduce the number of places where bctr is output),
the patch adds some user visible features:
1) PowerPC64 ELFv2 global entry stubs now are aligned under the
control of --plt-align, with a default alignment of 32 bytes.
2) PowerPC64 __glink_PLTresolve is no longer padded out with nops.
3) PowerPC32 PLT stubs are aligned under the control of --plt-align,
with the default alignment being 16 bytes as before.
4) The PowerPC32 branch/nop table emitted before __glink_PLTresolve
is now smaller in many cases. It was sized incorrectly when the
__tls_get_addr_opt stub was used, and unnecessarily included space
for local ifuncs.
bfd/
* elf32-ppc.c (GLINK_ENTRY_SIZE): Add parameters, handle
__tls_get_addr_opt, and alignment sizing.
(TLS_GET_ADDR_GLINK_SIZE): Delete.
(is_nonpic_glink_stub): Don't use GLINK_ENTRY_SIZE.
(ppc_elf_get_synthetic_symtab): Recognize stubs spaced at 4, 6,
or 8 insns.
(ppc_elf_link_hash_table_create): Init new ppc_elf_params field.
(allocate_dynrelocs): Use new GLINK_ENTRY_SIZE.
(ppc_elf_size_dynamic_sections): Likewise. Size branch table
by PLT reloc count.
(write_glink_stub): Handle __tls_get_addr_opt stub.
Pad out to size given by GLINK_ENTRY_SIZE.
(ppc_elf_relocate_section): Adjust write_glink_stub call.
(ppc_elf_finish_dynamic_symbol): Likewise.
(ppc_elf_finish_dynamic_sections): Write PLTresolve without using
insn array since so many need rewriting.
* elf32-ppc.h (struct ppc_elf_params): Add plt_stub_align.
* elf64-ppc.c (GLINK_PLTRESOLVE_SIZE): Rename from
GLINK_CALL_STUB_SIZE. Add htab param and evaluate to size without
nops. Adjust all uses.
(ppc64_elf_get_synthetic_symtab): Don't use GLINK_CALL_STUB_SIZE
in glink_vma calculation.
(struct ppc_link_hash_table): Add global_entry section pointer.
(create_linkage_sections): Create separate section for global
entry stubs.
(PPC_LO, PPC_HI, PPC_HA): Move earlier.
(size_global_entry_stubs): Handle sizing for aligned stubs.
(ppc64_elf_size_dynamic_sections): Handle global_entry alloc,
and don't stash end of glink branch table in rawsize.
(ppc_build_one_stub): Rewrite stub size calculations.
(build_global_entry_stubs): Use new section.
(ppc64_elf_build_stubs): Don't pad __glink_PLTresolve with nops.
Build lazy link stubs out to end of section. Build global entry
stubs in new section.
gold/
* options.h (plt_align): Support for PowerPC32 too.
* powerpc.cc (Stub_table::stub_align): Heed --plt-align for 32-bit.
(Stub_table::plt_call_size, branch_stub_size): Tidy.
(Stub_table::plt_call_align): Implement using stub_align.
(Output_data_glink::global_entry_align): New function.
(Output_data_glink::global_entry_off): New function.
(Output_data_glink::global_entry_address): Use global_entry_off.
(Output_data_glink::pltresolve_size): New function, replacing
pltresolve_size_ constant. Update all uses.
(Output_data_glink::add_global_entry): Align offset.
(Output_data_glink::set_final_data_size): Use global_entry_align.
(Stub_table::do_write): Don't pad __glink_PLTrelsolve with nops.
Tidy stub output. Use global_entry_off.
ld/
* emultempl/ppc32elf.em (params): Init new field.
(enum ppc32_opt): New enum to define OPTION_* values. Add
OPTION_PLT_ALIGN and OPTION_NO_PLT_ALIGN.
(PARSE_AND_LIST_LONGOPTS): Handle new options.
(PARSE_AND_LIST_ARGS_CASES): Likewise.
(PARSE_AND_LIST_OPTIONS): Likewise. Break up help output.
* emultempl/ppc64elf.em (ppc_add_stub_section): Init alignment
correctly for negative --plt-stub-align.
* testsuite/ld-powerpc/elfv2exe.d,
* testsuite/ld-powerpc/elfv2so.d,
* testsuite/ld-powerpc/relbrlt.d,
* testsuite/ld-powerpc/relbrlt.s,
* testsuite/ld-powerpc/tlsexe.d,
* testsuite/ld-powerpc/tlsexe.r,
* testsuite/ld-powerpc/tlsexe32.d,
* testsuite/ld-powerpc/tlsexe32.g,
* testsuite/ld-powerpc/tlsexe32.r,
* testsuite/ld-powerpc/tlsexetoc.d,
* testsuite/ld-powerpc/tlsexetoc.r,
* testsuite/ld-powerpc/tlsopt5_32.d,
* testsuite/ld-powerpc/tlsso.d,
* testsuite/ld-powerpc/tlstocso.d: Update for changed stub order.
2018-01-13 16:23:41 +08:00
|
|
|
|
2018-01-17 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
* options.h (plt_align): Support for PowerPC32 too.
|
|
|
|
|
* powerpc.cc (Stub_table::stub_align): Heed --plt-align for 32-bit.
|
|
|
|
|
(Stub_table::plt_call_size, branch_stub_size): Tidy.
|
|
|
|
|
(Stub_table::plt_call_align): Implement using stub_align.
|
|
|
|
|
(Output_data_glink::global_entry_align): New function.
|
|
|
|
|
(Output_data_glink::global_entry_off): New function.
|
|
|
|
|
(Output_data_glink::global_entry_address): Use global_entry_off.
|
|
|
|
|
(Output_data_glink::pltresolve_size): New function, replacing
|
|
|
|
|
pltresolve_size_ constant. Update all uses.
|
|
|
|
|
(Output_data_glink::add_global_entry): Align offset.
|
|
|
|
|
(Output_data_glink::set_final_data_size): Use global_entry_align.
|
|
|
|
|
(Stub_table::do_write): Don't pad __glink_PLTrelsolve with nops.
|
|
|
|
|
Tidy stub output. Use global_entry_off.
|
|
|
|
|
|
2018-01-16 02:05:54 +08:00
|
|
|
|
2018-01-15 Cary Coutant <ccoutant@gmail.com>
|
|
|
|
|
|
|
|
|
|
PR gold/22694
|
|
|
|
|
* options.h (-fuse-ld): Add correct helparg.
|
|
|
|
|
|
2018-01-15 20:09:11 +08:00
|
|
|
|
2018-01-15 Nick Clifton <nickc@redhat.com>
|
|
|
|
|
|
|
|
|
|
* po/uk.po: Updated Ukranian translation.
|
|
|
|
|
|
2018-01-13 21:56:48 +08:00
|
|
|
|
2018-01-13 Nick Clifton <nickc@redhat.com>
|
|
|
|
|
|
|
|
|
|
* po/gold.pot: Regenerated.
|
|
|
|
|
|
2018-01-13 21:26:38 +08:00
|
|
|
|
2018-01-13 Nick Clifton <nickc@redhat.com>
|
|
|
|
|
|
|
|
|
|
2.30 branch created.
|
|
|
|
|
|
2018-01-13 10:38:11 +08:00
|
|
|
|
2018-01-12 Cary Coutant <ccoutant@gmail.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Add new features in 1.15.
|
|
|
|
|
* version.cc (version_string): Bump to 1.15.
|
|
|
|
|
|
|
|
|
|
2018-01-12 Sterling Augustine <saugustine@google.com>
|
2018-01-13 03:05:58 +08:00
|
|
|
|
|
|
|
|
|
* cref.cc (Cref_inputs::Cref_table_compare::operator): Add
|
|
|
|
|
conditionals and calls to is_forwarder.
|
|
|
|
|
|
2018-01-03 13:17:27 +08:00
|
|
|
|
2018-01-03 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
Update year range in copyright notice of all files.
|
|
|
|
|
|
2018-01-03 13:15:17 +08:00
|
|
|
|
For older changes see ChangeLog-2017
|
2016-01-01 18:44:31 +08:00
|
|
|
|
|
2018-01-03 13:15:17 +08:00
|
|
|
|
Copyright (C) 2018 Free Software Foundation, Inc.
|
2016-01-01 18:44:31 +08:00
|
|
|
|
|
|
|
|
|
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:
|