Add .abiversion related support for ELFv2
authorAlan Modra <amodra@gmail.com>
Tue, 29 Oct 2013 04:36:09 +0000 (15:06 +1030)
committerAlan Modra <amodra@gmail.com>
Wed, 30 Oct 2013 03:07:47 +0000 (13:37 +1030)
commitee67d69a3ff0eed25d98c5e97ed6c3ede8069edc
treefe01ce8627a4436bea7d77485a61c01462a6d557
parent71a39c98f8bedad54818c62ab2d567b0e2de546b
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.
bfd/ChangeLog
bfd/elf64-ppc.c
binutils/ChangeLog
binutils/readelf.c
gas/ChangeLog
gas/config/tc-ppc.c
gas/config/tc-ppc.h
include/elf/ChangeLog
include/elf/ppc64.h