version 1.1.1.6, 2018/04/14 22:18:50 |
version 1.1.1.6.2.2, 2020/04/08 14:04:44 |
|
|
/* PPC64 ELF support for BFD. |
/* PPC64 ELF support for BFD. |
Copyright (C) 2003-2018 Free Software Foundation, Inc. |
Copyright (C) 2003-2020 Free Software Foundation, Inc. |
|
|
This file is part of BFD, the Binary File Descriptor library. |
This file is part of BFD, the Binary File Descriptor library. |
|
|
Line 154 START_RELOC_NUMBERS (elf_ppc64_reloc_typ |
|
Line 154 START_RELOC_NUMBERS (elf_ppc64_reloc_typ |
|
RELOC_NUMBER (R_PPC64_ADDR64_LOCAL, 117) |
RELOC_NUMBER (R_PPC64_ADDR64_LOCAL, 117) |
RELOC_NUMBER (R_PPC64_ENTRY, 118) |
RELOC_NUMBER (R_PPC64_ENTRY, 118) |
|
|
|
/* Marker reloc for inline plt call insns. */ |
|
RELOC_NUMBER (R_PPC64_PLTSEQ, 119) |
|
RELOC_NUMBER (R_PPC64_PLTCALL, 120) |
|
|
|
/* Powerxx support. */ |
|
RELOC_NUMBER (R_PPC64_PLTSEQ_NOTOC, 121) |
|
RELOC_NUMBER (R_PPC64_PLTCALL_NOTOC, 122) |
|
RELOC_NUMBER (R_PPC64_PCREL_OPT, 123) |
|
|
|
RELOC_NUMBER (R_PPC64_D34, 128) |
|
RELOC_NUMBER (R_PPC64_D34_LO, 129) |
|
RELOC_NUMBER (R_PPC64_D34_HI30, 130) |
|
RELOC_NUMBER (R_PPC64_D34_HA30, 131) |
|
RELOC_NUMBER (R_PPC64_PCREL34, 132) |
|
RELOC_NUMBER (R_PPC64_GOT_PCREL34, 133) |
|
RELOC_NUMBER (R_PPC64_PLT_PCREL34, 134) |
|
RELOC_NUMBER (R_PPC64_PLT_PCREL34_NOTOC, 135) |
|
RELOC_NUMBER (R_PPC64_ADDR16_HIGHER34, 136) |
|
RELOC_NUMBER (R_PPC64_ADDR16_HIGHERA34, 137) |
|
RELOC_NUMBER (R_PPC64_ADDR16_HIGHEST34, 138) |
|
RELOC_NUMBER (R_PPC64_ADDR16_HIGHESTA34, 139) |
|
RELOC_NUMBER (R_PPC64_REL16_HIGHER34, 140) |
|
RELOC_NUMBER (R_PPC64_REL16_HIGHERA34, 141) |
|
RELOC_NUMBER (R_PPC64_REL16_HIGHEST34, 142) |
|
RELOC_NUMBER (R_PPC64_REL16_HIGHESTA34, 143) |
|
RELOC_NUMBER (R_PPC64_D28, 144) |
|
RELOC_NUMBER (R_PPC64_PCREL28, 145) |
|
RELOC_NUMBER (R_PPC64_TPREL34, 146) |
|
RELOC_NUMBER (R_PPC64_DTPREL34, 147) |
|
RELOC_NUMBER (R_PPC64_GOT_TLSGD34, 148) |
|
RELOC_NUMBER (R_PPC64_GOT_TLSLD34, 149) |
|
RELOC_NUMBER (R_PPC64_GOT_TPREL34, 150) |
|
RELOC_NUMBER (R_PPC64_GOT_DTPREL34, 151) |
|
|
#ifndef RELOC_MACROS_GEN_FUNC |
#ifndef RELOC_MACROS_GEN_FUNC |
/* Relocation only used internally by ld. If you need to use these |
/* Relocation only used internally by gas or ld. If you need to use |
reloc numbers, you can change them to some other unused value |
these reloc numbers, you can change them to some other unused value |
without affecting the ABI. They will never appear in object files. */ |
without affecting the ABI. They will never appear in object files. */ |
RELOC_NUMBER (R_PPC64_LO_DS_OPT, 128) |
RELOC_NUMBER (R_PPC64_LO_DS_OPT, 200) |
/* Reloc only used internally by gas. As above, value is unimportant. */ |
RELOC_NUMBER (R_PPC64_16DX_HA, 201) |
RELOC_NUMBER (R_PPC64_16DX_HA, 129) |
|
#endif |
#endif |
|
|
|
RELOC_NUMBER (R_PPC64_REL16_HIGH, 240) |
|
RELOC_NUMBER (R_PPC64_REL16_HIGHA, 241) |
|
RELOC_NUMBER (R_PPC64_REL16_HIGHER, 242) |
|
RELOC_NUMBER (R_PPC64_REL16_HIGHERA, 243) |
|
RELOC_NUMBER (R_PPC64_REL16_HIGHEST, 244) |
|
RELOC_NUMBER (R_PPC64_REL16_HIGHESTA, 245) |
|
|
/* Power9 split rel16 for addpcis. */ |
/* Power9 split rel16 for addpcis. */ |
RELOC_NUMBER (R_PPC64_REL16DX_HA, 246) |
RELOC_NUMBER (R_PPC64_REL16DX_HA, 246) |
|
|
Line 184 END_RELOC_NUMBERS (R_PPC64_max) |
|
Line 224 END_RELOC_NUMBERS (R_PPC64_max) |
|
|
|
#define IS_PPC64_TLS_RELOC(R) \ |
#define IS_PPC64_TLS_RELOC(R) \ |
(((R) >= R_PPC64_TLS && (R) <= R_PPC64_DTPREL16_HIGHESTA) \ |
(((R) >= R_PPC64_TLS && (R) <= R_PPC64_DTPREL16_HIGHESTA) \ |
|| ((R) >= R_PPC64_TPREL16_HIGH && (R) <= R_PPC64_DTPREL16_HIGHA)) |
|| ((R) >= R_PPC64_TPREL16_HIGH && (R) <= R_PPC64_DTPREL16_HIGHA) \ |
|
|| ((R) >= R_PPC64_TPREL34 && (R) <= R_PPC64_GOT_DTPREL34)) |
|
|
/* e_flags bits specifying ABI. |
/* e_flags bits specifying ABI. |
1 for original function descriptor using ABI, |
1 for original function descriptor using ABI, |
Line 194 END_RELOC_NUMBERS (R_PPC64_max) |
|
Line 234 END_RELOC_NUMBERS (R_PPC64_max) |
|
#define EF_PPC64_ABI 3 |
#define EF_PPC64_ABI 3 |
|
|
/* The ELFv2 ABI uses three bits in the symbol st_other field of a |
/* The ELFv2 ABI uses three bits in the symbol st_other field of a |
function definition to specify the number of instructions between a |
function definition to specify the number of bytes between a |
function's global entry point and local entry point. |
function's global entry point and local entry point. |
|
Values of two to six specify powers of two from four to sixty four |
|
bytes. For such functions: |
The global entry point is used when it is necessary to set up the |
The global entry point is used when it is necessary to set up the |
toc pointer (r2) for the function. Callers must enter the global |
toc pointer (r2) for the function. Callers must enter the global |
entry point with r12 set to the global entry point address. On |
entry point with r12 set to the global entry point address. On |
return from the function, r2 may have a different value to that |
return from the function r2 will contain the toc pointer for the |
which it had on entry. |
function. |
The local entry point is used when r2 is known to already be valid |
The local entry point is used when r2 is known to already be valid |
for the function. There is no requirement on r12 when using the |
for the function. There is no requirement on r12 when using the |
local entry point, and on return r2 will contain the same value as |
local entry point, and on return r2 will contain the same value as |
Line 208 END_RELOC_NUMBERS (R_PPC64_max) |
|
Line 250 END_RELOC_NUMBERS (R_PPC64_max) |
|
A value of zero in these bits means that the function has a single |
A value of zero in these bits means that the function has a single |
entry point with no requirement on r12 or r2, and that on return r2 |
entry point with no requirement on r12 or r2, and that on return r2 |
will contain the same value as at entry. |
will contain the same value as at entry. |
Values of one and seven are reserved. */ |
A value of one means that the function has a single entry point |
|
with no requirement on r12 or r2, and that r2 is *not* preserved. |
|
A value of seven is reserved. */ |
#define STO_PPC64_LOCAL_BIT 5 |
#define STO_PPC64_LOCAL_BIT 5 |
#define STO_PPC64_LOCAL_MASK (7 << STO_PPC64_LOCAL_BIT) |
#define STO_PPC64_LOCAL_MASK (7 << STO_PPC64_LOCAL_BIT) |
|
|