2018-02-05 15:00:21 +01:00
|
|
|
|
2018-02-05 Maciej W. Rozycki <macro@mips.com>
|
|
|
|
|
|
|
|
|
|
* elfxx-mips.c (_bfd_mips_elf_section_processing): For
|
|
|
|
|
SHT_MIPS_REGINFO sections don't assert the correct size and
|
|
|
|
|
report an error instead.
|
|
|
|
|
|
2018-02-05 15:00:21 +01:00
|
|
|
|
2018-02-05 Maciej W. Rozycki <macro@mips.com>
|
|
|
|
|
|
|
|
|
|
* elf.c (_bfd_elf_write_object_contents): Propagate a failure
|
|
|
|
|
status from `->elf_backend_section_processing'.
|
|
|
|
|
|
2018-02-02 21:43:09 +01:00
|
|
|
|
2018-02-02 Jim Wilson <jimw@sifive.com>
|
|
|
|
|
|
|
|
|
|
PR ld/22756
|
|
|
|
|
* elfnn-riscv.c (riscv_relax_delete_bytes): New parameter link_info.
|
|
|
|
|
If link_info->wrap_hash, check for a duplicate symbol and ignore.
|
|
|
|
|
(_bfd_riscv_relax_call, bfd_riscv_relax_lui, _bfd_riscv_relax_tls_le):
|
|
|
|
|
Pass new argument to riscv_relax_delete_bytes.
|
|
|
|
|
(_bfd_riscv_relax_align, _bfd_riscv_relax_delete): Likewise. Remove
|
|
|
|
|
ATTRIBUTE_UNUSED from link_info parameter.
|
|
|
|
|
|
2018-02-02 07:25:21 +01:00
|
|
|
|
2018-02-02 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
* elf64-ppc.c (ppc64_elf_relocate_section): Don't relocate nops
|
|
|
|
|
emitted for toc sequence optimization. Set and use "howto" later.
|
|
|
|
|
|
Fix compile time warnings building the binutils with clang.
bfdI would like to fix instances of the following warning, when building
with clang with no special CFLAGS other than -g3 -O0.
/home/emaisin/src/binutils-gdb/bfd/elflink.c:5425:45: error: performing pointer arithmetic on a null pointer has undefined behavior [-Werror,-Wnull-pointer-arithmetic]
return (struct elf_link_hash_entry *) 0 - 1;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
Replacing those with "(struct elf_link_hash_entry *) -1" gets rid of the
warning. I wanted to check that it didn't change the resulting code, so
I tried to build this:
$ cat test.c
int *before()
{
return (int *) 0 - 1;
}
int *after()
{
return (int *) - 1;
}
$ gcc -c test.c -g
$ objdump -d test.o
test.o: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <before>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 c7 c0 fc ff ff ff mov $0xfffffffffffffffc,%rax
b: 5d pop %rbp
c: c3 retq
000000000000000d <after>:
d: 55 push %rbp
e: 48 89 e5 mov %rsp,%rbp
11: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax
18: 5d pop %rbp
19: c3 retq
This shows that the previous code doesn't actually return -1 as the
function documentation says, but the new one does, so it's kind of a
bugfix.
bfd * elf64-ppc.c (ppc64_elf_archive_symbol_lookup): Avoid pointer
arithmetic on NULL pointer.
* elflink.c (_bfd_elf_archive_symbol_lookup,
elf_link_add_archive_symbols): Likewise.
ld * ldexp.c (fold_name, exp_fold_tree_1): Avoid pointer arithmetic
on NULL pointer.
2018-02-01 14:21:41 +01:00
|
|
|
|
2018-02-01 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* elf64-ppc.c (ppc64_elf_archive_symbol_lookup): Avoid pointer
|
|
|
|
|
arithmetic on NULL pointer.
|
|
|
|
|
* elflink.c (_bfd_elf_archive_symbol_lookup,
|
|
|
|
|
elf_link_add_archive_symbols): Likewise.
|
|
|
|
|
|
2018-01-31 14:26:46 +01:00
|
|
|
|
2018-01-31 Michael Matz <matz@suse.de>
|
|
|
|
|
|
|
|
|
|
* elflink.c (bfd_elf_define_start_stop): Fix check of
|
|
|
|
|
def_dynamic.
|
|
|
|
|
|
2018-01-31 14:10:40 +01:00
|
|
|
|
2018-01-31 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
|
|
|
|
|
|
PR ld/21964
|
|
|
|
|
* elflink.c (bfd_elf_define_start_stop): Check if __start and
|
|
|
|
|
__stop symbols are referenced by shared objects.
|
|
|
|
|
|
2018-01-30 06:32:32 +01:00
|
|
|
|
2018-01-30 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
PR 22758
|
|
|
|
|
* elf.c (_bfd_elf_map_sections_to_segments): Don't start a new
|
|
|
|
|
segment when demand paged with lma on the same page. Test this
|
|
|
|
|
before load/non-load, executable/non-executable,
|
|
|
|
|
writable/non-writable tests and simplify. Delete bogus relro
|
|
|
|
|
condition in writable/non-writable test. Delete outdated
|
|
|
|
|
comment. Formatting.
|
|
|
|
|
|
2018-01-29 12:15:09 +01:00
|
|
|
|
2018-01-30 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
* elflink.c (bfd_elf_define_start_stop): Make __start and __stop
|
|
|
|
|
symbols dynamic.
|
|
|
|
|
|
2018-01-26 22:49:33 +01:00
|
|
|
|
2018-01-29 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
PR 22741
|
|
|
|
|
* coffgen.c (coff_pointerize_aux): Ensure auxent tagndx is in
|
|
|
|
|
range before converting to a symbol table pointer.
|
|
|
|
|
|
2018-01-27 15:25:50 +01:00
|
|
|
|
2018-01-27 Nick Clifton <nickc@redhat.com>
|
|
|
|
|
|
|
|
|
|
* po/ru.po: Updated Russian translation.
|
|
|
|
|
|
2018-01-23 01:20:02 +01:00
|
|
|
|
2018-01-26 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
* elflink.c (bfd_elf_define_start_stop): Override symbols when
|
|
|
|
|
they are defined dynamically.
|
|
|
|
|
|
2018-01-26 02:55:09 +01:00
|
|
|
|
2018-01-26 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
* elf64-ppc.c (ppc64_elf_size_stubs): Iterate sizing when
|
|
|
|
|
.branch_lt changes size.
|
|
|
|
|
|
2018-01-25 12:17:41 +01:00
|
|
|
|
2018-01-25 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
PR 22746
|
|
|
|
|
* elfcode.h (elf_object_p): Avoid integer overflow.
|
|
|
|
|
|
2018-01-25 12:16:06 +01:00
|
|
|
|
2018-01-25 Eric Botcazou <ebotcazou@adacore.com>
|
|
|
|
|
|
|
|
|
|
PR ld/22727
|
|
|
|
|
* elfxx-sparc.c (_bfd_sparc_elf_check_relocs) <R_SPARC_TLS_GD_CALL>:
|
|
|
|
|
Do a mere lookup of the __tls_get_addr symbol instead of adding it.
|
|
|
|
|
|
|
|
|
|
Revert
|
|
|
|
|
2017-10-19 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
|
|
|
|
|
|
PR ld/22263
|
|
|
|
|
* elfxx-sparc.c (sparc_elf_tls_transition): Replace
|
|
|
|
|
bfd_link_pic with !bfd_link_executable, !bfd_link_pic with
|
|
|
|
|
bfd_link_executable for TLS check.
|
|
|
|
|
(_bfd_sparc_elf_check_relocs): Likewise.
|
|
|
|
|
(allocate_dynrelocs): Likewise.
|
|
|
|
|
(_bfd_sparc_elf_relocate_section): Likewise.
|
|
|
|
|
|
[LD][AARCH64]Add group relocations to create PC-relative offset.
This is a patch to add linker support for group relocations to create a
16, 32, 48, or 64 bit PC-relative offset inline.
The following relocations are added along with the test cases:
BFD_RELOC_AARCH64_MOVW_PREL_G0, BFD_RELOC_AARCH64_MOVW_PREL_G0_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G1, BFD_RELOC_AARCH64_MOVW_PREL_G1_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G2, BFD_RELOC_AARCH64_MOVW_PREL_G2_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G3.
bfd/
2018-01-24 Renlin Li <renlin.li@arm.com>
* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Add support for
BFD_RELOC_AARCH64_MOVW_PREL_G0, BFD_RELOC_AARCH64_MOVW_PREL_G0_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G1, BFD_RELOC_AARCH64_MOVW_PREL_G1_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G2, BFD_RELOC_AARCH64_MOVW_PREL_G2_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G3.
* elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Likewise.
(_bfd_aarch64_elf_resolve_relocation): Likewise.
ld/
2018-01-24 Renlin Li <renlin.li@arm.com>
* testsuite/ld-aarch64/aarch64-elf.exp: Run new testes.
* testsuite/ld-aarch64/emit-relocs-287.s: Fix test case.
* testsuite/ld-aarch64/emit-relocs-287.d: Fix expected output.
* testsuite/ld-aarch64/emit-relocs-287-overflow.s: New.
* testsuite/ld-aarch64/emit-relocs-287-overflow.d: New.
* testsuite/ld-aarch64/emit-relocs-288.d: New.
* testsuite/ld-aarch64/emit-relocs-288.s: New.
* testsuite/ld-aarch64/emit-relocs-289.d: New.
* testsuite/ld-aarch64/emit-relocs-289.s: New.
* testsuite/ld-aarch64/emit-relocs-289-overflow.s: New.
* testsuite/ld-aarch64/emit-relocs-289-overflow.d: New.
* testsuite/ld-aarch64/emit-relocs-290.d: New.
* testsuite/ld-aarch64/emit-relocs-290.s: New.
* testsuite/ld-aarch64/emit-relocs-291.d: New.
* testsuite/ld-aarch64/emit-relocs-291.s: New.
* testsuite/ld-aarch64/emit-relocs-291-overflow.s: New.
* testsuite/ld-aarch64/emit-relocs-291-overflow.d: New.
* testsuite/ld-aarch64/emit-relocs-292.d: New.
* testsuite/ld-aarch64/emit-relocs-292.s: New.
* testsuite/ld-aarch64/emit-relocs-293.d: New.
* testsuite/ld-aarch64/emit-relocs-293.s: New.
2018-01-18 13:17:55 +01:00
|
|
|
|
2018-01-24 Renlin Li <renlin.li@arm.com>
|
|
|
|
|
|
|
|
|
|
* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Add support for
|
|
|
|
|
BFD_RELOC_AARCH64_MOVW_PREL_G0, BFD_RELOC_AARCH64_MOVW_PREL_G0_NC,
|
|
|
|
|
BFD_RELOC_AARCH64_MOVW_PREL_G1, BFD_RELOC_AARCH64_MOVW_PREL_G1_NC,
|
|
|
|
|
BFD_RELOC_AARCH64_MOVW_PREL_G2, BFD_RELOC_AARCH64_MOVW_PREL_G2_NC,
|
|
|
|
|
BFD_RELOC_AARCH64_MOVW_PREL_G3.
|
|
|
|
|
* elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Likewise.
|
|
|
|
|
(_bfd_aarch64_elf_resolve_relocation): Likewise.
|
|
|
|
|
|
[GAS][AARCH64]Add group relocations to create PC-relative offset.
This is a patch to add the gas support for group relocations to create a
16, 32, 48, or 64 bit PC-relative offset inline.
The following relocations are added along with the test cases:
BFD_RELOC_AARCH64_MOVW_PREL_G0, BFD_RELOC_AARCH64_MOVW_PREL_G0_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G1, BFD_RELOC_AARCH64_MOVW_PREL_G1_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G2, BFD_RELOC_AARCH64_MOVW_PREL_G2_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G3.
bfd/
2018-01-24 Renlin Li <renlin.li@arm.com>
* reloc.c: Add BFD_RELOC_AARCH64_MOVW_PREL_G0,
BFD_RELOC_AARCH64_MOVW_PREL_G0_NC, BFD_RELOC_AARCH64_MOVW_PREL_G1,
BFD_RELOC_AARCH64_MOVW_PREL_G1_NC, BFD_RELOC_AARCH64_MOVW_PREL_G2,
BFD_RELOC_AARCH64_MOVW_PREL_G2_NC, BFD_RELOC_AARCH64_MOVW_PREL_G3.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
* elfnn-aarch64.c (elfNN_aarch64_howto_table): Add entries for
BFD_RELOC_AARCH64_MOVW_PREL_G0, BFD_RELOC_AARCH64_MOVW_PREL_G0_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G1, BFD_RELOC_AARCH64_MOVW_PREL_G1_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G2, BFD_RELOC_AARCH64_MOVW_PREL_G2_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G3.
gas/
2018-01-24 Renlin Li <renlin.li@arm.com>
* config/tc-aarch64.c (reloc_table): add entries for
BFD_RELOC_AARCH64_MOVW_PREL_G0, BFD_RELOC_AARCH64_MOVW_PREL_G0_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G1, BFD_RELOC_AARCH64_MOVW_PREL_G1_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G2, BFD_RELOC_AARCH64_MOVW_PREL_G2_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G3.
(process_movw_reloc_info): Supports newly added MOVW_PREL relocations.
(md_apply_fix): Likewise
* testsuite/gas/aarch64/prel_g0.s: New.
* testsuite/gas/aarch64/prel_g0.d: New.
* testsuite/gas/aarch64/prel_g0_nc.s: New.
* testsuite/gas/aarch64/prel_g0_nc.d: New.
* testsuite/gas/aarch64/prel_g1.s: New.
* testsuite/gas/aarch64/prel_g1.d: New.
* testsuite/gas/aarch64/prel_g1_nc.s: New.
* testsuite/gas/aarch64/prel_g1_nc.d: New.
* testsuite/gas/aarch64/prel_g2.s: New.
* testsuite/gas/aarch64/prel_g2.d: New.
* testsuite/gas/aarch64/prel_g2_nc.s: New.
* testsuite/gas/aarch64/prel_g2_nc.d: New.
* testsuite/gas/aarch64/prel_g3.s: New.
* testsuite/gas/aarch64/prel_g3.d: New.
2018-01-18 13:08:40 +01:00
|
|
|
|
2018-01-24 Renlin Li <renlin.li@arm.com>
|
|
|
|
|
|
|
|
|
|
* reloc.c: Add BFD_RELOC_AARCH64_MOVW_PREL_G0,
|
|
|
|
|
BFD_RELOC_AARCH64_MOVW_PREL_G0_NC, BFD_RELOC_AARCH64_MOVW_PREL_G1,
|
|
|
|
|
BFD_RELOC_AARCH64_MOVW_PREL_G1_NC, BFD_RELOC_AARCH64_MOVW_PREL_G2,
|
|
|
|
|
BFD_RELOC_AARCH64_MOVW_PREL_G2_NC, BFD_RELOC_AARCH64_MOVW_PREL_G3.
|
|
|
|
|
* elfnn-aarch64.c (elfNN_aarch64_howto_table): Add entries for
|
|
|
|
|
BFD_RELOC_AARCH64_MOVW_PREL_G0, BFD_RELOC_AARCH64_MOVW_PREL_G0_NC,
|
|
|
|
|
BFD_RELOC_AARCH64_MOVW_PREL_G1, BFD_RELOC_AARCH64_MOVW_PREL_G1_NC,
|
|
|
|
|
BFD_RELOC_AARCH64_MOVW_PREL_G2, BFD_RELOC_AARCH64_MOVW_PREL_G2_NC,
|
|
|
|
|
BFD_RELOC_AARCH64_MOVW_PREL_G3.
|
|
|
|
|
* bfd-in2.h: Regenerate.
|
|
|
|
|
* libbfd.h: Regenerate.
|
|
|
|
|
|
2018-01-23 20:01:34 +01:00
|
|
|
|
2018-01-23 Maciej W. Rozycki <macro@mips.com>
|
|
|
|
|
|
|
|
|
|
* elfxx-mips.c (_bfd_mips_elf_final_link): Update a stale
|
|
|
|
|
`mips_elf32_section_processing' comment reference.
|
|
|
|
|
|
2018-01-20 23:25:24 +01:00
|
|
|
|
2018-01-20 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
|
|
|
|
|
|
PR ld/22721
|
|
|
|
|
* elfxx-x86.c (_bfd_x86_elf_link_check_relocs): Check the
|
|
|
|
|
versioned __tls_get_addr symbol.
|
|
|
|
|
|
2018-01-19 11:50:06 +01:00
|
|
|
|
2018-01-19 Nick Clifton <nickc@redhat.com>
|
|
|
|
|
|
|
|
|
|
* po/fr.po: Updated French translation.
|
|
|
|
|
|
2018-01-18 12:36:40 +01:00
|
|
|
|
2018-01-18 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
* elf32-ppc.c (ppc_elf_create_glink): Correct alignment of .glink.
|
|
|
|
|
* elf64-ppc.c (ppc64_elf_size_stubs): Handle negative plt_stub_align.
|
|
|
|
|
(ppc64_elf_build_stubs): Likewise.
|
|
|
|
|
|
2018-01-17 16:52:37 +01:00
|
|
|
|
2018-01-17 Nick Clifton <nickc@redhat.com>
|
|
|
|
|
|
|
|
|
|
* po/ru.po: Updated Russian translation.
|
|
|
|
|
* po/uk/po: Updated Ukranian translation.
|
|
|
|
|
|
2018-01-17 11:54:32 +01:00
|
|
|
|
2018-01-17 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
* elf64-ppc.c (ppc64_elf_build_stubs): Silence gcc warning.
|
|
|
|
|
|
2018-01-17 04:49:08 +01:00
|
|
|
|
2018-01-17 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
* elf32-ppc.c (GLINK_ENTRY_SIZE): Handle speculation barrier.
|
|
|
|
|
(CRSETEQ, BEQCTRM): Define.
|
|
|
|
|
(is_nonpic_glink_stub): Don't check bctr.
|
|
|
|
|
(ppc_elf_link_hash_table_create): Init new ppc_elf_params field.
|
|
|
|
|
(ppc_elf_relax_section): Size speculation barrier.
|
|
|
|
|
(output_bctr): New function.
|
|
|
|
|
(write_glink_stub): Use output_bctr.
|
|
|
|
|
(ppc_elf_relocate_section): Use output_bctr for long branch stub.
|
|
|
|
|
(ppc_elf_finish_dynamic_symbol): Likewise.
|
|
|
|
|
(ppc_elf_finish_dynamic_sections): Use output_bctr.
|
|
|
|
|
* elf32-ppc.h (struct ppc_elf_params): Add speculate_indirect_jumps.
|
|
|
|
|
* elf64-ppc.c (CRSETEQ, BEQCTRM, BEQCTRLM): Define.
|
|
|
|
|
(GLINK_PLTRESOLVE_SIZE): Size speculation barrier.
|
|
|
|
|
(size_global_entry_stubs): Handle speculation barrier sizing.
|
|
|
|
|
(plt_stub_size): Likewise.
|
|
|
|
|
(output_bctr): New function.
|
|
|
|
|
(build_plt_stub, build_tls_get_addr_stub): Output speculation
|
|
|
|
|
barrier.
|
|
|
|
|
(ppc_build_one_stub): Likewise for ppc_stub_plt_branch.
|
|
|
|
|
(ppc_size_one_stub): Size speculation barrier in ppc_stub_plt_branch.
|
|
|
|
|
(build_global_entry_stubs): Output speculation barrier.
|
|
|
|
|
(ppc64_elf_build_stubs): Likewise in __glink_PLTresolve stub.
|
|
|
|
|
* elf64-ppc.h (struct ppc64_elf_params): Add speculate_indirect_jumps.
|
|
|
|
|
|
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 09:23:41 +01:00
|
|
|
|
2018-01-17 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
2018-01-15 13:09:11 +01:00
|
|
|
|
2018-01-15 Nick Clifton <nickc@redhat.com>
|
|
|
|
|
|
|
|
|
|
* po/uk.po: Updated Ukranian translation.
|
|
|
|
|
|
2018-01-13 14:56:48 +01:00
|
|
|
|
2018-01-13 Nick Clifton <nickc@redhat.com>
|
|
|
|
|
|
|
|
|
|
* po/bfd.pot: Regenerated.
|
|
|
|
|
|
2018-01-13 14:31:12 +01:00
|
|
|
|
2018-01-13 Nick Clifton <nickc@redhat.com>
|
|
|
|
|
|
|
|
|
|
* version.m4: Bump version to 2.30.51
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
|
2018-01-13 14:26:38 +01:00
|
|
|
|
2018-01-13 Nick Clifton <nickc@redhat.com>
|
|
|
|
|
|
|
|
|
|
2.30 branch created.
|
|
|
|
|
|
2018-01-12 14:16:17 +01:00
|
|
|
|
2018-01-12 Jens Widell <jl@opera.com>
|
|
|
|
|
|
|
|
|
|
* elf.c (setup_group): Optimize search for group by remembering
|
|
|
|
|
last found group and restarting search at that index.
|
|
|
|
|
* elf-bfd.h (struct elf_obj_tdata): Add group_search_offset field.
|
|
|
|
|
|
2018-01-12 01:07:28 +01:00
|
|
|
|
2018-01-12 Gunther Nikl <gnikl@users.sourceforge.net>
|
|
|
|
|
|
|
|
|
|
* aoutx.h (aout_link_check_ar_symbols): Remove default and handle
|
|
|
|
|
bfd_link_common_skip_none in switch.
|
|
|
|
|
|
2018-01-12 07:28:04 +01:00
|
|
|
|
2018-01-12 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
PR ld/22649
|
|
|
|
|
* elf64-ppc.c (ppc64_elf_gc_mark_dynamic_ref): Ignore dynamic
|
|
|
|
|
references on forced local symbols.
|
|
|
|
|
|
2018-01-12 10:25:11 +01:00
|
|
|
|
2018-01-12 Vlad Ivanov <vlad@ivanov.email>
|
|
|
|
|
|
|
|
|
|
* elfxx-mips.c (_bfd_mips_elf_final_link): Notify user when
|
|
|
|
|
.reginfo section has wrong size.
|
|
|
|
|
|
2018-01-12 04:04:55 +01:00
|
|
|
|
2018-01-11 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
|
|
|
|
|
|
PR ld/22393
|
|
|
|
|
* elf.c (_bfd_elf_map_sections_to_segments): When generating
|
|
|
|
|
separate code and read-only data LOAD segments, create a new
|
|
|
|
|
LOAD segment if the previous section contains text and the
|
|
|
|
|
current section doesn't or vice versa. Don't put a writable
|
|
|
|
|
section in a read-only segment if there is a RELRO segment.
|
|
|
|
|
|
2018-01-12 00:36:40 +01:00
|
|
|
|
2018-01-11 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
|
|
|
|
|
|
PR ld/22649
|
|
|
|
|
* elflink.c (bfd_elf_gc_mark_dynamic_ref_symbol): Ignore dynamic
|
|
|
|
|
references on forced local symbols.
|
|
|
|
|
|
2018-01-11 18:42:12 +01:00
|
|
|
|
2018-01-11 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
|
|
|
|
|
|
PR ld/22677
|
|
|
|
|
* elflink.c (bfd_elf_gc_sections): Keep all PREINIT_ARRAY,
|
|
|
|
|
INIT_ARRAY as well as FINI_ARRAY sections for ld -r --gc-section.
|
|
|
|
|
|
2018-01-09 09:04:58 +01:00
|
|
|
|
2017-09-27 Kuan-Lin Chen <kuanlinchentw@gmail.com>
|
|
|
|
|
|
|
|
|
|
PR 22662
|
|
|
|
|
* elf32-nds32.c (nds32_elf_relax_loadstore): Fix a typographical error.
|
|
|
|
|
|
2018-01-03 21:06:26 +01:00
|
|
|
|
2018-01-03 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* elf.c (elfcore_grok_freebsd_note): Handle
|
|
|
|
|
NT_FREEBSD_PROCSTAT_PROC, NT_FREEBSD_PROCSTAT_FILES, and
|
|
|
|
|
NT_FREEBSD_PROCSTAT_VMMAP.
|
|
|
|
|
|
2018-01-03 06:17:27 +01:00
|
|
|
|
2018-01-03 Alan Modra <amodra@gmail.com>
|
|
|
|
|
|
|
|
|
|
Update year range in copyright notice of all files.
|
|
|
|
|
|
2018-01-03 06:15:17 +01:00
|
|
|
|
For older changes see ChangeLog-2017
|
2016-01-01 11:44:31 +01:00
|
|
|
|
|
2018-01-03 06:15:17 +01:00
|
|
|
|
Copyright (C) 2018 Free Software Foundation, Inc.
|
2016-01-01 11:44:31 +01: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:
|