This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
gdb and binutils branch master updated. b4f7960d5307fe4aad2126382df78f63696e96b3
- From: amodra at sourceware dot org
- To: binutils-cvs at sourceware dot org
- Date: 30 Oct 2013 03:16:25 -0000
- Subject: gdb and binutils branch master updated. b4f7960d5307fe4aad2126382df78f63696e96b3
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gdb and binutils".
The branch, master has been updated
via b4f7960d5307fe4aad2126382df78f63696e96b3 (commit)
via d4a95d4999e7fe0d868254bec76722b35f064184 (commit)
via e8910a83af41c3dbfd00191b2720d4094f8d9532 (commit)
via a078d95abc554b6c2572fcab5550591639b1c871 (commit)
via b9e5796b0d6ebc355e4a6d06791b7366939d10f2 (commit)
via 6911b7dcb8ea17f8b811578dd4ac1ab7bb675e7b (commit)
via ee67d69a3ff0eed25d98c5e97ed6c3ede8069edc (commit)
via 71a39c98f8bedad54818c62ab2d567b0e2de546b (commit)
via f9c6b9078c54ea0f018b673e2ff128e61a0aa666 (commit)
from e17aaa33b10ed1d047a01cefb5547844c0597836 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=b4f7960d5307fe4aad2126382df78f63696e96b3
commit b4f7960d5307fe4aad2126382df78f63696e96b3
Author: Alan Modra <amodra@gmail.com>
Date: Tue Oct 29 17:45:48 2013 +1030
PowerPC64 ELFv2 support for gold.
elfcpp/
* powerpc.h (EF_PPC64_ABI): New enum constant.
(STO_PPC64_LOCAL_BIT, STO_PPC64_LOCAL_MASK): Likewise.
(ppc64_decode_local_entry): New function.
(ppc64_encode_local_entry): Likewise.
gold/
* powerpc.cc (Powerpc_relobj::abiversion, set_abiversion,
ppc64_local_entry_offset, ppc64_local_entry_offset,
do_read_symbols): New functions.
(Powerpc_relobj::e_flags_, st_other_): New vars.
(Powerpc_relobj::Powerpc_relobj): Call set_abiversion.
(Powerpc_dynobj::abiversion, set_abiversion): New functions.
(Powerpc_relobj::e_flags_): New var.
(Target_powerpc::first_plt_entry_offset, plt_entry_size): Inline
and adjust for ELFv2.
(Target_powerpc::abiversion, set_abiversion, stk_toc): New functions.
(Powerpc_relobj::do_find_special_sections): Check no .opd in ELFv2.
(Powerpc_dynobj::do_find_special_sections): Likewise.
(Target_powerpc::do_define_standard_symbols): Define ".TOC.".
(Target_powerpc::Branch_info::make_stub): Adjust stub destination
to ELFv2 local entry.
(Target_powerpc::do_relax): No thread safe barriers needed for
ELFv2.
(Output_data_plt_powerpc::initial_plt_entry_size_,
plt_entry_size): Delete. Replace all uses with
first_plt_entry_offset() and plt_entry_size().
(Output_data_plt_powerpc::Output_data_plt_powerpc): Remove
reserved_size parm. Update callers.
(Output_data_plt_powerpc::entry_count): Update.
(Output_data_plt_powerpc::first_plt_entry_offset): Make private
and use Target_powerpc::first_plt_entry_offset().
(Output_data_plt_powerpc::get_plt_entry_size): Similarly and
rename to plt_entry_size.
(Output_data_plt_powerpc::add_ifunc_entry,
add_local_ifunc_entry): Adjust reloc for ELFv2.
(glink_eh_frame_fde_64): Rename to glink_eh_frame_fde_64v1.
(glink_eh_frame_fde_64v2): New.
(Stub_table::plt_call_size): Support ELFv2 sizing.
(Output_data_glink::add_eh_frame): Use the new FDE.
(Output_data_glink::set_final_data_size): Adjust for ELFv2 glink.
(Stub_table::do_write): Write ELFv2 stubs and glink.
(Target_powerpc::Relocate::relocate): Replaces nop after call
with ld 2,24(1) and adjust local offset destination for ELFv2.
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=d4a95d4999e7fe0d868254bec76722b35f064184
commit d4a95d4999e7fe0d868254bec76722b35f064184
Author: Alan Modra <amodra@gmail.com>
Date: Tue Oct 29 16:40:34 2013 +1030
Add PowerPC64 ELFv2 tests.
* ld-powerpc/elfv2.s,
* ld-powerpc/elfv2so.d,
* ld-powerpc/elfv2exe.d: New tests.
* ld-powerpc/powerpc.exp: Run them.
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e8910a83af41c3dbfd00191b2720d4094f8d9532
commit e8910a83af41c3dbfd00191b2720d4094f8d9532
Author: Alan Modra <amodra@gmail.com>
Date: Tue Oct 29 16:34:35 2013 +1030
Replace DT_PPC_TLSOPT with DT_PPC_OPT.
This removes the DT_PPC_TLSOPT/DT_PPC64_TLSOPT dynamic tag and replaces
it with DT_PPC_OPT/DT_PPC64_OPT tag to provide the same functionality
and more. This isn't backwards compatible, but the TLSOPT tag hasn't
been used since the tls optimisation support was never submitted to
glibc.
/include/elf/
* ppc.h (DT_PPC_TLSOPT): Delete.
(DT_PPC_OPT, PPC_OPT_TLS): Define.
* ppc64.h (DT_PPC64_TLSOPT): Delete.
(DT_PPC64_OPT, PPC64_OPT_TLS, PPC64_OPT_MULTI_TOC): Define.
bfd/
* elf32-ppc.c (ppc_elf_size_dynamic_sections): Use new DT_PPC_OPT
tag to specify tls optimisation.
* elf64-ppc.c (ppc64_elf_size_dynamic_sections): Likewise.
(ppc64_elf_finish_dynamic_sections): Specify whether multiple
toc pointers are used via DT_PPC64_OPT.
binutils/
* readelf.c (get_ppc_dynamic_type): Replace PPC_TLSOPT with PPC_OPT.
(get_ppc64_dynamic_type): Replace PPC64_TLSOPT with PPC64_OPT.
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=a078d95abc554b6c2572fcab5550591639b1c871
commit a078d95abc554b6c2572fcab5550591639b1c871
Author: Alan Modra <amodra@gmail.com>
Date: Tue Oct 29 16:17:22 2013 +1030
Support ELFv2 stack frame.
The toc pointer save slot changes on ELFv2 from 40(1) to 24(1).
* elf64-ppc.c (STK_LR, STK_TOC, STK_LINKER): Define.
(savegpr0_tail, restgpr0_tail, savefpr0_tail, restfpr0_tail)
build_plt_stub, build_tls_get_addr_stub, ppc_build_one_stub,
ppc64_elf_relocate_section): Use new defines.
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=b9e5796b0d6ebc355e4a6d06791b7366939d10f2
commit b9e5796b0d6ebc355e4a6d06791b7366939d10f2
Author: Alan Modra <amodra@gmail.com>
Date: Tue Oct 29 15:58:05 2013 +1030
ELFv2 stub, plt and glink changes
An ELFv2 PLT entry is simply the address of the target function rather
than three (or two) words to specify entry, toc and static chain. PLT
call stubs are correspondingly simpler and need no thread safety
barrier. The glink resolver stub and branch table also is simplified,
a change that could be applied to ELFv1 too, but isn't as yet.
* elf64-ppc.c (PLT_ENTRY_SIZE, PLT_INITIAL_ENTRY_SIZE): Add htab
parameter and adjust for ELFv2. Update all uses.
(PLT_CALL_STUB_SIZE): Delete.
(ppc64_elf_get_synthetic_symtab): Support new glink layout.
(allocate_dynrelocs): Likewise.
(plt_stub_size, build_plt_stub): Adjust for ELFv2.
(get_r2off): Return 0 for ELFv2 -R.
(ppc_build_one_stub, ppc_size_one_stub): Adjust for ELFv2.
(ppc64_elf_size_stubs): Likewise.
(ppc64_elf_build_stubs): Add new ELFv2 glink.
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=6911b7dcb8ea17f8b811578dd4ac1ab7bb675e7b
commit 6911b7dcb8ea17f8b811578dd4ac1ab7bb675e7b
Author: Alan Modra <amodra@gmail.com>
Date: Tue Oct 29 15:37:43 2013 +1030
Add ELFv2 .localentry support.
This defines the ELF symbol st_other field used to encode the number
of instructions between a function "global entry" and its "local entry",
and adds support related to the local entry offset.
include/elf/
* ppc64.h (STO_PPC64_LOCAL_BIT, STO_PPC64_LOCAL_MASK): Define.
(ppc64_decode_local_entry, ppc64_encode_local_entry): New functions.
(PPC64_LOCAL_ENTRY_OFFSET, PPC64_SET_LOCAL_ENTRY_OFFSET): Define.
bfd/
* elf64-ppc.c (struct ppc_stub_hash_entry): Add "other".
(stub_hash_newfunc): Init new ppc_stub_hash_entry field, and one
we forgot, "plt_ent".
(ppc64_elf_add_symbol_hook): Check ELFv1 objects don't have
st_other bits only valid in ELFv2.
(ppc64_elf_merge_symbol_attribute): New function.
(ppc_type_of_stub): Add local_off param to test branch range.
(ppc_build_one_stub): Adjust destinations for ELFv2 locals.
(ppc_size_one_stub, toc_adjusting_stub_needed): Similarly.
(ppc64_elf_size_stubs): Pass local_off to ppc_type_of_stub.
Set "other" field.
(ppc64_elf_relocate_section): Adjust destination for ELFv2 local
calls.
gas/
* config/tc-ppc.c (md_pseudo_table): Add .localentry.
(ppc_elf_localentry): New function.
(ppc_force_relocation): Force relocs on all branches to localenty
symbols.
(ppc_fix_adjustable): Don't reduce such symbols to section+offset.
binutils/
* readelf.c (get_ppc64_symbol_other): New function.
(get_symbol_other): Use it for EM_PPC64.
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ee67d69a3ff0eed25d98c5e97ed6c3ede8069edc
commit ee67d69a3ff0eed25d98c5e97ed6c3ede8069edc
Author: Alan Modra <amodra@gmail.com>
Date: Tue Oct 29 15:06:09 2013 +1030
Add .abiversion related support for ELFv2
Defines bits in ELF e_flags to differentiate ELFv2 objects from ELFv2,
adds .abiversion directive to explicitly choose the ABI, and code to
check and automatically select ABI.
include/elf/
* ppc64.h (EF_PPC64_ABI): Define.
bfd/
* elf64-ppc.c (abiversion, set_abiversion): New functions.
(ppc64_elf_get_synthetic_symtab): Handle ELFv2 objects without .opd.
(struct ppc_link_hash_table): Add opd_abi.
(ppc64_elf_check_relocs): Check no .opd with ELFv2.
(ppc64_elf_merge_private_bfd_data): New function.
(ppc64_elf_print_private_bfd_data): New function.
(ppc64_elf_tls_setup): Set htab->opd_abi.
(ppc64_elf_size_dynamic_sections): Don't emit OPD related dynamic
tags for ELFv2.
(ppc_build_one_stub): Use R_PPC64_IRELATIVE for ELFv2 ifunc.
(ppc64_elf_finish_dynamic_symbol): Likewise
binutils/
* readelf.c (get_machine_flags): Display ABI version for EM_PPC64.
gas/
* config/tc-ppc.c: Include elf/ppc64.h.
(ppc_abiversion): New variable.
(md_pseudo_table): Add .abiversion.
(ppc_elf_abiversion, ppc_elf_end): New functions.
* config/tc-ppc.h (md_end): Define.
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=71a39c98f8bedad54818c62ab2d567b0e2de546b
commit 71a39c98f8bedad54818c62ab2d567b0e2de546b
Author: Alan Modra <amodra@gmail.com>
Date: Tue Oct 29 12:39:30 2013 +1030
Change plt stubs to have destination in r12.
This change is to support the new ELFv2 ABI, which uses the value in
r12 on function entry to calculate the got/toc pointer.
bfd/
* elf64-ppc.c (build_plt_stub): Switch stubs to use r11 as base
reg and r12 as destination.
(ppc_build_one_stub): Likewise.
(ppc64_elf_build_stubs): Likewise for glink.
ld/testsuite/
* ld-powerpc/tls.s: Add proper .opd entry for _start.
* ld-powerpc/tlstoc.s: Likewise.
* ld-powerpc/relbrlt.d: Update for changed stubs.
* ld-powerpc/tls.d: Update for changed stubs and _start .opd entry.
* ld-powerpc/tls.g: Likewise.
* ld-powerpc/tlsexe.d: Likewise.
* ld-powerpc/tlsexe.g: Likewise.
* ld-powerpc/tlsexe.r: Likewise.
* ld-powerpc/tlsexetoc.d: Likewise.
* ld-powerpc/tlsexetoc.g: Likewise.
* ld-powerpc/tlsexetoc.r: Likewise.
* ld-powerpc/tlsso.d: Likewise.
* ld-powerpc/tlsso.g: Likewise.
* ld-powerpc/tlsso.r: Likewise.
* ld-powerpc/tlstoc.d: Likewise.
* ld-powerpc/tlstoc.g: Likewise.
* ld-powerpc/tlstocso.d: Likewise.
* ld-powerpc/tlstocso.g: Likewise.
* ld-powerpc/tlstocso.r: Likewise.
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=f9c6b9078c54ea0f018b673e2ff128e61a0aa666
commit f9c6b9078c54ea0f018b673e2ff128e61a0aa666
Author: Alan Modra <amodra@gmail.com>
Date: Tue Oct 29 16:53:25 2013 +1030
Report overflow on PowerPC64 @h and @ha relocations.
This changes the behaviour of @h and @ha on PowerPC64 to report errors
on 32-bit overflow. The motivation for this change is that on
PowerPC64, most uses of @h and @ha modifiers and their corresponding
relocations are to build up 32-bit offsets. We'd like to know when
such offsets overflow. Only rarely do people use @h or @ha with the
high 32-bit modifiers to build a 64-bit constant. Those uses will now
need to use two new modifiers, @high and @higha, if the constant isn't
known at assembly time. For now, we won't report overflow at assembly
time..
This also fixes an error when applying some of the HIGHER and HIGHEST
relocations.
include/elf/
* ppc64.h (R_PPC64_ADDR16_HIGH, R_PPC64_ADDR16_HIGHA,
R_PPC64_TPREL16_HIGH, R_PPC64_TPREL16_HIGHA,
R_PPC64_DTPREL16_HIGH, R_PPC64_DTPREL16_HIGHA): New.
(IS_PPC64_TLS_RELOC): Match new tls relocs.
bfd/
* reloc.c (BFD_RELOC_PPC64_ADDR16_HIGH, BFD_RELOC_PPC64_ADDR16_HIGHA,
BFD_RELOC_PPC64_TPREL16_HIGH, BFD_RELOC_PPC64_TPREL16_HIGHA,
BFD_RELOC_PPC64_DTPREL16_HIGH, BFD_RELOC_PPC64_DTPREL16_HIGHA): New.
* elf64-ppc.c (ppc64_elf_howto_raw): Add entries for new relocs.
Make all _HA and _HI relocs report signed overflow.
(ppc64_elf_reloc_type_lookup): Handle new relocs.
(must_be_dyn_reloc, ppc64_elf_check_relocs): Likewise.
(dec_dynrel_count, ppc64_elf_relocate_section): Likewise.
(ppc64_elf_relocate_section): Don't apply 0x8000 adjust to
R_PPC64_TPREL16_HIGHER, R_PPC64_TPREL16_HIGHEST,
R_PPC64_DTPREL16_HIGHER, and R_PPC64_DTPREL16_HIGHEST.
* libbfd.h: Regenerate.
* bfd-in2.h: Regenerate.
gas/
* config/tc-ppc.c (SEX16): Don't mask.
(REPORT_OVERFLOW_HI): Define as zero.
(ppc_elf_suffix): Support @high, @higha, @dtprel@high, @dtprel@higha,
@tprel@high, and @tprel@higha modifiers.
(md_assemble): Ignore X_unsigned when applying 16-bit insn fields.
Add (disabled) code to check @h and @ha reloc overflow for powerpc64.
Handle new relocs.
(md_apply_fix): Similarly.
elfcpp/
* powerpc.h (R_PPC64_ADDR16_HIGH, R_PPC64_ADDR16_HIGHA,
R_PPC64_TPREL16_HIGH, R_PPC64_TPREL16_HIGHA,
R_PPC64_DTPREL16_HIGH, R_PPC64_DTPREL16_HIGHA): Define.
gold/
* powerpc.cc (Target_powerpc::Scan::check_non_pic): Handle new relocs.
(Target_powerpc::Scan::global, local): Likewise.
(Target_powerpc::Relocate::relocate): Likewise. Check for overflow
on all ppc64 @h and @ha relocs.
-----------------------------------------------------------------------
Summary of changes:
bfd/ChangeLog | 82 ++++
bfd/bfd-in2.h | 6 +
bfd/elf32-ppc.c | 2 +-
bfd/elf64-ppc.c | 884 +++++++++++++++++++++++++----------
bfd/libbfd.h | 6 +
bfd/reloc.c | 12 +
binutils/ChangeLog | 14 +
binutils/readelf.c | 30 ++-
elfcpp/ChangeLog | 13 +
elfcpp/powerpc.h | 61 +++-
gas/ChangeLog | 27 ++
gas/config/tc-ppc.c | 284 ++++++++++--
gas/config/tc-ppc.h | 3 +
gold/ChangeLog | 47 ++
gold/powerpc.cc | 668 ++++++++++++++++++++-------
include/elf/ChangeLog | 24 +
include/elf/ppc.h | 3 +-
include/elf/ppc64.h | 73 +++-
ld/testsuite/ChangeLog | 29 ++
ld/testsuite/ld-powerpc/elfv2.s | 32 ++
ld/testsuite/ld-powerpc/elfv2exe.d | 40 ++
ld/testsuite/ld-powerpc/elfv2so.d | 82 ++++
ld/testsuite/ld-powerpc/powerpc.exp | 2 +
ld/testsuite/ld-powerpc/relbrlt.d | 8 +-
ld/testsuite/ld-powerpc/tls.d | 4 +-
ld/testsuite/ld-powerpc/tls.g | 6 +-
ld/testsuite/ld-powerpc/tls.s | 7 +-
ld/testsuite/ld-powerpc/tlsexe.d | 23 +-
ld/testsuite/ld-powerpc/tlsexe.g | 2 +-
ld/testsuite/ld-powerpc/tlsexe.r | 56 ++--
ld/testsuite/ld-powerpc/tlsexetoc.d | 23 +-
ld/testsuite/ld-powerpc/tlsexetoc.g | 2 +-
ld/testsuite/ld-powerpc/tlsexetoc.r | 58 ++--
ld/testsuite/ld-powerpc/tlsso.d | 25 +-
ld/testsuite/ld-powerpc/tlsso.g | 2 +-
ld/testsuite/ld-powerpc/tlsso.r | 60 ++--
ld/testsuite/ld-powerpc/tlstoc.d | 4 +-
ld/testsuite/ld-powerpc/tlstoc.g | 12 +-
ld/testsuite/ld-powerpc/tlstoc.s | 7 +-
ld/testsuite/ld-powerpc/tlstocso.d | 25 +-
ld/testsuite/ld-powerpc/tlstocso.g | 2 +-
ld/testsuite/ld-powerpc/tlstocso.r | 62 ++--
42 files changed, 2166 insertions(+), 646 deletions(-)
create mode 100644 ld/testsuite/ld-powerpc/elfv2.s
create mode 100644 ld/testsuite/ld-powerpc/elfv2exe.d
create mode 100644 ld/testsuite/ld-powerpc/elfv2so.d
hooks/post-receive
--
gdb and binutils