2017-11-29 10:09:41 +08:00
|
|
|
|
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-29 01:00:44 +08:00
|
|
|
|
2017-11-28 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
|
|
|
|
|
|
* testsuite/pr22266_a.c: Add a newline at end of file.
|
|
|
|
|
|
Fix symbol values and relocation addends for relocatable links.
The fix for PR 19291 broke some other cases where -r is used with scripts,
as reported in PR 22266. The original fix for PR 22266 ended up breaking
many cases for REL targets, where the addends are stored in the section data,
and are not being adjusted properly.
The problem was basically that in a relocatable output file (ET_REL),
symbol values are supposed to be relative to the start address of their
section. Usually in a relocatable file, all sections start at 0, so the
failure to get this right is often irrelevant, but with a linker script,
we occasionally see an output section whose starting address is not 0,
and gold would occasionally write a symbol with its relocated value instead
of its section-relative value.
This patch reverts the recent fix for PR 22266 as well as my original fix
for PR 19291. The original fix moved the symbol value adjustment to
write_local_symbols, but neglected to undo a few places where the adjustment
was also being applied, resulting in an occasional double adjustment. The
more recent fix removed those other adjustments, but then failed to
re-account for the adjustment when rewriting the relocations on REL targets.
With the old attempts reverted, we now apply the symbol value adjustment to
the one case that had been missed (non-section symbols in merge sections).
But now we also need to account for the adjustment when rewriting the addends
for RELA relocations.
gold/
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-28 09:32:55 +08:00
|
|
|
|
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-20 09:56:30 +08:00
|
|
|
|
2017-11-19 Ian Lance Taylor <iant@google.com>
|
|
|
|
|
Cary Coutant <ccoutant@gmail.com>
|
|
|
|
|
|
2017-11-20 10:02:31 +08:00
|
|
|
|
* dwarf_reader.h (class Dwarf_info_reader): Add ref_addr_size
|
2017-11-20 09:56:30 +08:00
|
|
|
|
method.
|
2017-11-20 10:02:31 +08:00
|
|
|
|
* dwarf_reader.cc (Dwarf_die::read_attributes): Use ref_addr_size
|
2017-11-20 09:56:30 +08:00
|
|
|
|
for DW_FORM_ref_addr_size.
|
|
|
|
|
(Dwarf_die::skip_attributes): Likewise.
|
|
|
|
|
|
2017-11-09 07:56:54 +08:00
|
|
|
|
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-09 07:13:53 +08:00
|
|
|
|
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-09 06:03:55 +08:00
|
|
|
|
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.
|
|
|
|
|
|
ngettext support
binutils has lacked proper pluralization of output messages for a long
time, for example, readelf will display information about a section
that "contains 1 entries" or "There are 1 section headers". Fixing
this properly requires us to use ngettext, because other languages
have different rules to English.
This patch defines macros for ngettext and friends to handle builds
with --disable-nls, and tidies the existing nls support. I've
redefined gettext rather than just defining "_" as dgettext in bfd and
opcodes in case someone wants to use gettext there (which might
conceivably happen with generated code).
bfd/
* sysdep.h: Formatting, comment fixes.
(gettext, ngettext): Redefine when ENABLE_NLS.
(ngettext, dngettext, dcngettext): Define when !ENABLE_NLS.
(_): Define using gettext.
(textdomain, bindtextdomain): Use safer "do nothing".
* hosts/alphavms.h (textdomain, bindtextdomain): Likewise.
(ngettext, dngettext, dcngettext): Define when !ENABLE_NLS.
opcodes/
* opintl.h: Formatting, comment fixes.
(gettext, ngettext): Redefine when ENABLE_NLS.
(ngettext, dngettext, dcngettext): Define when !ENABLE_NLS.
(_): Define using gettext.
(textdomain, bindtextdomain): Use safer "do nothing".
binutils/
* sysdep.h (textdomain, bindtextdomain): Use safer "do nothing".
(ngettext, dngettext, dcngettext): Define when !ENABLE_NLS.
gas/
* asintl.h (textdomain, bindtextdomain): Use safer "do nothing".
(ngettext, dngettext, dcngettext): Define when !ENABLE_NLS.
gold/
* system.h (textdomain, bindtextdomain): Use safer "do nothing".
(ngettext, dngettext, dcngettext): Define when !ENABLE_NLS.
ld/
* ld.h (textdomain, bindtextdomain): Use safer "do nothing".
(ngettext, dngettext, dcngettext): Define when !ENABLE_NLS.
2017-11-06 12:50:00 +08:00
|
|
|
|
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 13:02:52 +08:00
|
|
|
|
2017-10-25 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
* symtab.cc (Symbol_table::add_from_relobj): Match "__gnu_lto_slim"
|
|
|
|
|
optionally prefixed with "_".
|
|
|
|
|
|
2017-10-21 02:21:45 +08:00
|
|
|
|
2017-10-20 Sriraman Tallam <tmsriram@google.com>
|
2017-10-21 02:00:28 +08:00
|
|
|
|
|
|
|
|
|
* 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-20 11:53:14 +08:00
|
|
|
|
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-17 22:03:05 +08:00
|
|
|
|
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 22:33:04 +08:00
|
|
|
|
2017-09-26 Cary Coutant <ccoutant@gmail.com>
|
|
|
|
|
|
|
|
|
|
PR gold/22213
|
|
|
|
|
* sparc.cc (Target_sparc): Fix incorrect register mask.
|
|
|
|
|
|
2017-09-22 22:58:28 +08:00
|
|
|
|
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 13:41:12 +08:00
|
|
|
|
2017-09-22 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
* resolve.cc (clone): Fix got_offset_list test.
|
|
|
|
|
|
2017-09-22 09:34:41 +08:00
|
|
|
|
2017-09-22 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
* powerpc.cc (Target_powerpc<64,*>::powerpc_info): Set
|
|
|
|
|
is_default_stack_executable false.
|
|
|
|
|
|
2017-09-21 06:43:37 +08:00
|
|
|
|
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 07:47:56 +08:00
|
|
|
|
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 10:15:51 +08:00
|
|
|
|
2017-09-19 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
* options.h (stub-group-multi): Default to true. Add
|
|
|
|
|
--no-stub-group-multi.
|
|
|
|
|
|
PowerPC TPREL16_HA/LO reloc optimization
In the TLS GD/LD to LE optimization, ld replaces a sequence like
addi 3,2,x@got@tlsgd R_PPC64_GOT_TLSGD16 x
bl __tls_get_addr(x@tlsgd) R_PPC64_TLSGD x
R_PPC64_REL24 __tls_get_addr
nop
with
addis 3,13,x@tprel@ha R_PPC64_TPREL16_HA x
addi 3,3,x@tprel@l R_PPC64_TPREL16_LO x
nop
When the tprel offset is small, this can be further optimized to
nop
addi 3,13,x@tprel
nop
bfd/
* elf64-ppc.c (struct ppc_link_hash_table): Add do_tls_opt.
(ppc64_elf_tls_optimize): Set it.
(ppc64_elf_relocate_section): Nop addis on TPREL16_HA, and convert
insn on TPREL16_LO and TPREL16_LO_DS relocs to use r13 when
addis would add zero.
* elf32-ppc.c (struct ppc_elf_link_hash_table): Add do_tls_opt.
(ppc_elf_tls_optimize): Set it.
(ppc_elf_relocate_section): Nop addis on TPREL16_HA, and convert
insn on TPREL16_LO relocs to use r2 when addis would add zero.
gold/
* 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.
ld/
* testsuite/ld-powerpc/tls.s: Add calls with tls markers.
* testsuite/ld-powerpc/tls32.s: Likewise.
* testsuite/ld-powerpc/powerpc.exp: Run tls marker tests.
* testsuite/ld-powerpc/tls.d: Adjust for TPREL16_HA/LO optimization.
* testsuite/ld-powerpc/tlsexe.d: Likewise.
* testsuite/ld-powerpc/tlsexetoc.d: Likewise.
* testsuite/ld-powerpc/tlsld.d: Likewise.
* testsuite/ld-powerpc/tlsmark.d: Likewise.
* testsuite/ld-powerpc/tlsopt4.d: Likewise.
* testsuite/ld-powerpc/tlstoc.d: Likewise.
2017-08-30 19:05:35 +08:00
|
|
|
|
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.
|
|
|
|
|
|
[GOLD] PowerPC tls_get_addr_optimize
This implements the special __tls_get_addr_opt call stub for powerpc
gold that returns __thread variable addresses without actually making
a call to __tls_get_addr in most cases. Shared libraries that are
loaded at program load time (ie. dlopen is not used) have a known
layout for their __thread variables, and thus DTPMOD64/DPTREL64 pairs
describing those variables can be set up by ld.so for the
__tls_get_addr_opt call stub fast exit.
Ref https://sourceware.org/ml/libc-alpha/2015-03/msg00626.html
I really, really wish I'd used a differently versioned __tls_get_addr
symbol than the base symbol to indicate glibc support for the
optimized call, rather than having glibc export __tls_get_addr_opt. A
lot of the messing around here, flipping symbols from __tls_get_addr
to __tls_get_addr_opt, is caused by that decision. About the only
benefit is that a user can see at a glance that their disassembled
code is calling __tls_get_addr via the fancy call stub.. Anyway, we
need references to __tls_get_addr to seem like they were to
__tls_get_addr_opt, and in cases like the tsan interceptor, a
definition of __tls_get_addr to seem like one of __tls_get_addr_opt
as well. That's the reason for Symbol::clear_in_reg and
Symbol_table::clone, and why symbols are substituted in Scan::global
and other places dealing with dynamic linking.
elfcpp/
* elfcpp.h (DT_PPC_OPT): Define.
* powerpc.h (PPC_OPT_TLS): Define.
gold/
* 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 14:25:33 +08:00
|
|
|
|
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 14:22:45 +08:00
|
|
|
|
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 23:03:00 +08:00
|
|
|
|
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 14:57:33 +08:00
|
|
|
|
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 05:55:39 +08:00
|
|
|
|
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-04 13:44:21 +08:00
|
|
|
|
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.
|
|
|
|
|
|
[GOLD] PowerPC recreate eh_frame for stubs on each relax pass
There is a very small but non-zero probability that a stub group
contains stubs on one relax pass, but does not on the next. In that
case we would get an FDE covering a zero length address range.
(Actually, it's even worse. Alignment padding for stubs can mean the
address for the non-existent stubs is past the end of the original
section to which stubs are attached, and due to the way
do_plt_fde_location calculates the length we can get a negative
length.) Fixing this properly requires removing the FDE.
Also, I have been implementing the __tls_get_addr_opt support for
gold, and that stub needs something other than the default FDE. The
necessary FDE will depend on the offset to the __tls_get_addr_opt
stub, which of course can change during relaxation. That means at the
very least, rewriting the FDE on each pass, possibly changing the FDE
size. I think that is better done by completely recreating PLT
eh_frame FDEs.
* 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-08-01 12:38:53 +08:00
|
|
|
|
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 18:23:49 +08:00
|
|
|
|
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 08:48:46 +08:00
|
|
|
|
2017-07-31 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
2017-08-28 14:57:33 +08:00
|
|
|
|
PR 21847
|
2017-07-31 08:48:46 +08:00
|
|
|
|
* powerpc.cc (Target_powerpc::scan_relocs): Warn on --plt-localentry
|
|
|
|
|
without ld.so checks.
|
|
|
|
|
|
2017-07-29 11:03:35 +08:00
|
|
|
|
2017-07-29 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
PR 21847
|
|
|
|
|
* powerpc.cc (Target_powerpc::scan_relocs): Default to
|
|
|
|
|
--no-plt-localentry.
|
|
|
|
|
|
2017-07-29 04:39:42 +08:00
|
|
|
|
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-27 01:39:20 +08:00
|
|
|
|
2017-07-26 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
|
|
|
|
|
|
* mips.cc (Mips_relocate_functions): Add "llu" suffix to
|
|
|
|
|
0x800080008000.
|
|
|
|
|
|
2017-07-23 18:33:40 +08:00
|
|
|
|
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 23:58:14 +08:00
|
|
|
|
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 20:49:58 +08:00
|
|
|
|
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-12 22:24:37 +08:00
|
|
|
|
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 19:09:43 +08:00
|
|
|
|
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 19:07:34 +08:00
|
|
|
|
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 08:40:00 +08:00
|
|
|
|
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-21 07:18:58 +08:00
|
|
|
|
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 16:31:52 +08:00
|
|
|
|
2017-06-20 James Clarke <jrtc27@jrtc27.com>
|
|
|
|
|
|
|
|
|
|
* powerpc.cc (Stub_table::define_stub_syms): Always include object's
|
|
|
|
|
uniq_ value.
|
|
|
|
|
|
2017-06-16 09:46:17 +08:00
|
|
|
|
2017-06-15 Eric Christopher <echristo@gmail.com>
|
|
|
|
|
|
|
|
|
|
* aarch64.cc: Fix a few typos and grammar-os.
|
|
|
|
|
|
2017-06-15 17:35:28 +08:00
|
|
|
|
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-08 08:49:35 +08:00
|
|
|
|
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-22 20:01:34 +08:00
|
|
|
|
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-16 06:59:52 +08:00
|
|
|
|
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 23:01:15 +08:00
|
|
|
|
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-13 06:24:32 +08:00
|
|
|
|
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 07:38:09 +08:00
|
|
|
|
2017-04-27 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
* testsuite/plugin_section_order.c (onload): Add missing break.
|
|
|
|
|
|
2017-03-16 07:49:16 +08:00
|
|
|
|
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-16 07:46:26 +08:00
|
|
|
|
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-16 07:41:48 +08:00
|
|
|
|
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-16 06:47:58 +08:00
|
|
|
|
2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
|
|
|
|
|
|
2017-03-16 06:52:12 +08:00
|
|
|
|
* mips.cc (Target_mips::Relocate::relocate): Remove redundant
|
|
|
|
|
checks for relocatable link.
|
|
|
|
|
(Mips_relocate_functions::reljalr): Likewise.
|
2017-03-16 06:47:58 +08:00
|
|
|
|
|
2017-03-16 06:43:25 +08:00
|
|
|
|
2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
|
|
|
|
|
|
2017-03-16 06:52:12 +08:00
|
|
|
|
* mips.cc (class Mips_output_section_options): New class.
|
|
|
|
|
(Target_mips::do_make_output_section): New method.
|
2017-03-16 06:43:25 +08:00
|
|
|
|
|
2017-03-16 06:35:15 +08:00
|
|
|
|
2017-03-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
|
|
|
|
|
|
2017-03-16 06:52:12 +08:00
|
|
|
|
* 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-03-16 06:35:15 +08:00
|
|
|
|
|
2017-02-22 05:40:58 +08:00
|
|
|
|
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 16:55:04 +08:00
|
|
|
|
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 16:47:36 +08:00
|
|
|
|
2017-02-15 Vladimir Radosavljevic <Vladimir.Radosavljevic@imgtec.com>
|
|
|
|
|
|
|
|
|
|
PR gold/21111
|
2017-02-15 16:55:04 +08:00
|
|
|
|
* 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-15 16:47:36 +08:00
|
|
|
|
|
2017-02-15 16:37:10 +08:00
|
|
|
|
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 16:48:37 +08:00
|
|
|
|
2017-02-03 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
* powerpc.cc (Powerpc_relobj::make_toc_relative): Don't crash
|
|
|
|
|
when no .toc section exists.
|
|
|
|
|
|
2017-02-01 08:32:59 +08:00
|
|
|
|
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-24 09:34:14 +08:00
|
|
|
|
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-24 09:18:00 +08:00
|
|
|
|
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-24 09:12:10 +08:00
|
|
|
|
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 18:21:17 +08:00
|
|
|
|
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 23:46:14 +08:00
|
|
|
|
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-13 03:51:18 +08:00
|
|
|
|
2017-01-12 Cary Coutant <ccoutant@gmail.com>
|
|
|
|
|
|
|
|
|
|
* object.cc (Sized_relobj_file): Fix byte counts for calls to memmem.
|
|
|
|
|
|
2017-01-12 05:42:24 +08:00
|
|
|
|
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-12 03:47:27 +08:00
|
|
|
|
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-12 03:26:26 +08:00
|
|
|
|
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 05:11:53 +08:00
|
|
|
|
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 23:46:30 +08:00
|
|
|
|
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 07:58:20 +08:00
|
|
|
|
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 07:54:09 +08:00
|
|
|
|
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 08:16:23 +08:00
|
|
|
|
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-06 13:17:33 +08:00
|
|
|
|
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 11:36:43 +08:00
|
|
|
|
2017-01-02 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
Update year range in copyright notice of all files.
|
|
|
|
|
|
2017-01-02 11:25:05 +08:00
|
|
|
|
For older changes see ChangeLog-2016
|
2016-01-01 18:44:31 +08:00
|
|
|
|
|
2017-01-02 11:25:05 +08:00
|
|
|
|
Copyright (C) 2017 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:
|