diff options
author | Alan Modra <amodra@gmail.com> | 2013-10-29 15:37:43 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2013-10-30 13:40:21 +1030 |
commit | 6911b7dcb8ea17f8b811578dd4ac1ab7bb675e7b (patch) | |
tree | 0181671770254c68868ad161b4f207805969ef25 /bfd/aout-cris.c | |
parent | ee67d69a3ff0eed25d98c5e97ed6c3ede8069edc (diff) | |
download | gdb-6911b7dcb8ea17f8b811578dd4ac1ab7bb675e7b.zip gdb-6911b7dcb8ea17f8b811578dd4ac1ab7bb675e7b.tar.gz gdb-6911b7dcb8ea17f8b811578dd4ac1ab7bb675e7b.tar.bz2 |
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.
Diffstat (limited to 'bfd/aout-cris.c')
0 files changed, 0 insertions, 0 deletions