/* PPC64 ELF support for BFD.
- Copyright (C) 2003-2018 Free Software Foundation, Inc.
+ Copyright (C) 2003-2023 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
RELOC_NUMBER (R_PPC64_PLTSEQ, 119)
RELOC_NUMBER (R_PPC64_PLTCALL, 120)
+/* Power10 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_REL24_P9NOTOC, 124)
+
+ 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_TLSGD_PCREL34, 148)
+ RELOC_NUMBER (R_PPC64_GOT_TLSLD_PCREL34, 149)
+ RELOC_NUMBER (R_PPC64_GOT_TPREL_PCREL34, 150)
+ RELOC_NUMBER (R_PPC64_GOT_DTPREL_PCREL34, 151)
+
#ifndef RELOC_MACROS_GEN_FUNC
-/* Relocation only used internally by ld. If you need to use these
- reloc numbers, you can change them to some other unused value
+/* Relocation only used internally by gas or 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_PPC64_LO_DS_OPT, 128)
-/* Reloc only used internally by gas. As above, value is unimportant. */
- RELOC_NUMBER (R_PPC64_16DX_HA, 129)
+ RELOC_NUMBER (R_PPC64_LO_DS_OPT, 200)
+ RELOC_NUMBER (R_PPC64_16DX_HA, 201)
#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. */
RELOC_NUMBER (R_PPC64_REL16DX_HA, 246)
#define IS_PPC64_TLS_RELOC(R) \
(((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_DTPREL_PCREL34))
/* e_flags bits specifying ABI.
1 for original function descriptor using ABI,
#define STO_PPC64_LOCAL_BIT 5
#define STO_PPC64_LOCAL_MASK (7 << STO_PPC64_LOCAL_BIT)
-// 3 bit other field to bytes.
+/* 3 bit other field to bytes. */
static inline unsigned int
ppc64_decode_local_entry(unsigned int other)
{
return ((1 << other) >> 2) << 2;
}
-// bytes to field value.
+/* bytes to field value. */
static inline unsigned int
ppc64_encode_local_entry(unsigned int val)
{