/* PPC ELF support for BFD.
- Copyright (C) 1995-2015 Free Software Foundation, Inc.
+ Copyright (C) 1995-2021 Free Software Foundation, Inc.
By Michael Meissner, Cygnus Support, <meissner@cygnus.com>,
from information in the System V Application Binary Interface,
RELOC_NUMBER (R_PPC_ADDR30, 37)
#ifndef RELOC_MACROS_GEN_FUNC
-/* Fake relocations for branch stubs, only used internally by ld. */
+/* Relocations only used internally by ld. If you need to use these
+ reloc numbers, you can change them to some other unused value
+ without affecting the ABI. They will never appear in object files. */
RELOC_NUMBER (R_PPC_RELAX, 48)
RELOC_NUMBER (R_PPC_RELAX_PLT, 49)
RELOC_NUMBER (R_PPC_RELAX_PLTREL24, 50)
+/* Reloc only used internally by gas. As above, value is unimportant. */
+ RELOC_NUMBER (R_PPC_16DX_HA, 51)
#endif
/* Relocs added to support TLS. */
RELOC_NUMBER (R_PPC_EMB_BIT_FLD, 115)
RELOC_NUMBER (R_PPC_EMB_RELSDA, 116)
+/* Marker reloc for inline plt call insns. */
+ RELOC_NUMBER (R_PPC_PLTSEQ, 119)
+ RELOC_NUMBER (R_PPC_PLTCALL, 120)
+
/* PowerPC VLE relocations. */
RELOC_NUMBER (R_PPC_VLE_REL8, 216)
RELOC_NUMBER (R_PPC_VLE_REL15, 217)
RELOC_NUMBER (R_PPC_VLE_SDAREL_HI16D, 230)
RELOC_NUMBER (R_PPC_VLE_SDAREL_HA16A, 231)
RELOC_NUMBER (R_PPC_VLE_SDAREL_HA16D, 232)
+ RELOC_NUMBER (R_PPC_VLE_ADDR20, 233)
/* Power9 split rel16 for addpcis. */
RELOC_NUMBER (R_PPC_REL16DX_HA, 246)
specified in the associated \
symbol table entry. */
+/* APUinfo note section. */
+#define APUINFO_SECTION_NAME ".PPC.EMB.apuinfo"
+#define APUINFO_LABEL "APUinfo"
+
+#define PPC_APUINFO_ISEL 0x40
+#define PPC_APUINFO_PMR 0x41
+#define PPC_APUINFO_RFMCI 0x42
+#define PPC_APUINFO_CACHELCK 0x43
+#define PPC_APUINFO_SPE 0x100
+#define PPC_APUINFO_EFS 0x101
+#define PPC_APUINFO_BRLOCK 0x102
+#define PPC_APUINFO_VLE 0x104
+
/* Object attribute tags. */
enum
{
/* 0-3 are generic. */
- Tag_GNU_Power_ABI_FP = 4, /* Value 1 for hard-float, 2 for
- soft-float, 3 for single=precision
- hard-float; 0 for not tagged or not
- using any ABIs affected by the
- differences. */
+
+ /* FP ABI, low 2 bits:
+ 1 for double precision hard-float,
+ 2 for soft-float,
+ 3 for single precision hard-float.
+ 0 for not tagged or not using any ABIs affected by the differences.
+ Next 2 bits:
+ 1 for ibm long double
+ 2 for 64-bit long double
+ 3 for IEEE long double.
+ 0 for not tagged or not using any ABIs affected by the differences. */
+ Tag_GNU_Power_ABI_FP = 4,
/* Value 1 for general purpose registers only, 2 for AltiVec
registers, 3 for SPE registers; 0 for not tagged or not using any