[PATCH v5 05/24] powerpc/elf: Move relocation constants to UAPI
Christophe Leroy (CS GROUP)
chleroy at kernel.org
Tue Sep 8 02:02:37 PDT 2026
Le 08/09/2026 à 08:33, Thomas Weißschuh a écrit :
> These constants are useful for cross-platform userspace, for example to
> process ELF files during kernel cross-compilation.
>
> Move them from the kernel-private architecture-specific header to the UAPI.
>
> Signed-off-by: Thomas Weißschuh <thomas.weissschuh at linutronix.de>
Reviewed-by: Christophe Leroy (CS GROUP) <chleroy at kernel.org>
> ---
> arch/powerpc/include/uapi/asm/elf.h | 201 ------------------------------------
> include/uapi/linux/elf-r.h | 201 ++++++++++++++++++++++++++++++++++++
> 2 files changed, 201 insertions(+), 201 deletions(-)
>
> diff --git a/arch/powerpc/include/uapi/asm/elf.h b/arch/powerpc/include/uapi/asm/elf.h
> index a5377f494fa3..aba921b8249a 100644
> --- a/arch/powerpc/include/uapi/asm/elf.h
> +++ b/arch/powerpc/include/uapi/asm/elf.h
> @@ -17,78 +17,6 @@
> #include <asm/cputable.h>
> #include <asm/auxvec.h>
>
> -/* PowerPC relocations defined by the ABIs */
> -#define R_PPC_NONE 0
> -#define R_PPC_ADDR32 1 /* 32bit absolute address */
> -#define R_PPC_ADDR24 2 /* 26bit address, 2 bits ignored. */
> -#define R_PPC_ADDR16 3 /* 16bit absolute address */
> -#define R_PPC_ADDR16_LO 4 /* lower 16bit of absolute address */
> -#define R_PPC_ADDR16_HI 5 /* high 16bit of absolute address */
> -#define R_PPC_ADDR16_HA 6 /* adjusted high 16bit */
> -#define R_PPC_ADDR14 7 /* 16bit address, 2 bits ignored */
> -#define R_PPC_ADDR14_BRTAKEN 8
> -#define R_PPC_ADDR14_BRNTAKEN 9
> -#define R_PPC_REL24 10 /* PC relative 26 bit */
> -#define R_PPC_REL14 11 /* PC relative 16 bit */
> -#define R_PPC_REL14_BRTAKEN 12
> -#define R_PPC_REL14_BRNTAKEN 13
> -#define R_PPC_GOT16 14
> -#define R_PPC_GOT16_LO 15
> -#define R_PPC_GOT16_HI 16
> -#define R_PPC_GOT16_HA 17
> -#define R_PPC_PLTREL24 18
> -#define R_PPC_COPY 19
> -#define R_PPC_GLOB_DAT 20
> -#define R_PPC_JMP_SLOT 21
> -#define R_PPC_RELATIVE 22
> -#define R_PPC_LOCAL24PC 23
> -#define R_PPC_UADDR32 24
> -#define R_PPC_UADDR16 25
> -#define R_PPC_REL32 26
> -#define R_PPC_PLT32 27
> -#define R_PPC_PLTREL32 28
> -#define R_PPC_PLT16_LO 29
> -#define R_PPC_PLT16_HI 30
> -#define R_PPC_PLT16_HA 31
> -#define R_PPC_SDAREL16 32
> -#define R_PPC_SECTOFF 33
> -#define R_PPC_SECTOFF_LO 34
> -#define R_PPC_SECTOFF_HI 35
> -#define R_PPC_SECTOFF_HA 36
> -
> -/* PowerPC relocations defined for the TLS access ABI. */
> -#define R_PPC_TLS 67 /* none (sym+add)@tls */
> -#define R_PPC_DTPMOD32 68 /* word32 (sym+add)@dtpmod */
> -#define R_PPC_TPREL16 69 /* half16* (sym+add)@tprel */
> -#define R_PPC_TPREL16_LO 70 /* half16 (sym+add)@tprel at l */
> -#define R_PPC_TPREL16_HI 71 /* half16 (sym+add)@tprel at h */
> -#define R_PPC_TPREL16_HA 72 /* half16 (sym+add)@tprel at ha */
> -#define R_PPC_TPREL32 73 /* word32 (sym+add)@tprel */
> -#define R_PPC_DTPREL16 74 /* half16* (sym+add)@dtprel */
> -#define R_PPC_DTPREL16_LO 75 /* half16 (sym+add)@dtprel at l */
> -#define R_PPC_DTPREL16_HI 76 /* half16 (sym+add)@dtprel at h */
> -#define R_PPC_DTPREL16_HA 77 /* half16 (sym+add)@dtprel at ha */
> -#define R_PPC_DTPREL32 78 /* word32 (sym+add)@dtprel */
> -#define R_PPC_GOT_TLSGD16 79 /* half16* (sym+add)@got at tlsgd */
> -#define R_PPC_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got at tlsgd@l */
> -#define R_PPC_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got at tlsgd@h */
> -#define R_PPC_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got at tlsgd@ha */
> -#define R_PPC_GOT_TLSLD16 83 /* half16* (sym+add)@got at tlsld */
> -#define R_PPC_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got at tlsld@l */
> -#define R_PPC_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got at tlsld@h */
> -#define R_PPC_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got at tlsld@ha */
> -#define R_PPC_GOT_TPREL16 87 /* half16* (sym+add)@got at tprel */
> -#define R_PPC_GOT_TPREL16_LO 88 /* half16 (sym+add)@got at tprel@l */
> -#define R_PPC_GOT_TPREL16_HI 89 /* half16 (sym+add)@got at tprel@h */
> -#define R_PPC_GOT_TPREL16_HA 90 /* half16 (sym+add)@got at tprel@ha */
> -#define R_PPC_GOT_DTPREL16 91 /* half16* (sym+add)@got at dtprel */
> -#define R_PPC_GOT_DTPREL16_LO 92 /* half16* (sym+add)@got at dtprel@l */
> -#define R_PPC_GOT_DTPREL16_HI 93 /* half16* (sym+add)@got at dtprel@h */
> -#define R_PPC_GOT_DTPREL16_HA 94 /* half16* (sym+add)@got at dtprel@ha */
> -
> -/* keep this the last entry. */
> -#define R_PPC_NUM 95
> -
>
> #define ELF_NGREG 48 /* includes nip, msr, lr, etc. */
> #define ELF_NFPREG 33 /* includes fpscr */
> @@ -166,133 +94,4 @@ typedef elf_vrreg_t elf_vrregset_t32[ELF_NVRREG32];
> typedef elf_fpreg_t elf_vsrreghalf_t32[ELF_NVSRHALFREG];
> #endif
>
> -/* PowerPC64 relocations defined by the ABIs */
> -#define R_PPC64_NONE R_PPC_NONE
> -#define R_PPC64_ADDR32 R_PPC_ADDR32 /* 32bit absolute address. */
> -#define R_PPC64_ADDR24 R_PPC_ADDR24 /* 26bit address, word aligned. */
> -#define R_PPC64_ADDR16 R_PPC_ADDR16 /* 16bit absolute address. */
> -#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO /* lower 16bits of abs. address. */
> -#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI /* high 16bits of abs. address. */
> -#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA /* adjusted high 16bits. */
> -#define R_PPC64_ADDR14 R_PPC_ADDR14 /* 16bit address, word aligned. */
> -#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN
> -#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN
> -#define R_PPC64_REL24 R_PPC_REL24 /* PC relative 26 bit, word aligned. */
> -#define R_PPC64_REL14 R_PPC_REL14 /* PC relative 16 bit. */
> -#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN
> -#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN
> -#define R_PPC64_GOT16 R_PPC_GOT16
> -#define R_PPC64_GOT16_LO R_PPC_GOT16_LO
> -#define R_PPC64_GOT16_HI R_PPC_GOT16_HI
> -#define R_PPC64_GOT16_HA R_PPC_GOT16_HA
> -
> -#define R_PPC64_COPY R_PPC_COPY
> -#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT
> -#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT
> -#define R_PPC64_RELATIVE R_PPC_RELATIVE
> -
> -#define R_PPC64_UADDR32 R_PPC_UADDR32
> -#define R_PPC64_UADDR16 R_PPC_UADDR16
> -#define R_PPC64_REL32 R_PPC_REL32
> -#define R_PPC64_PLT32 R_PPC_PLT32
> -#define R_PPC64_PLTREL32 R_PPC_PLTREL32
> -#define R_PPC64_PLT16_LO R_PPC_PLT16_LO
> -#define R_PPC64_PLT16_HI R_PPC_PLT16_HI
> -#define R_PPC64_PLT16_HA R_PPC_PLT16_HA
> -
> -#define R_PPC64_SECTOFF R_PPC_SECTOFF
> -#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO
> -#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI
> -#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA
> -#define R_PPC64_ADDR30 37 /* word30 (S + A - P) >> 2. */
> -#define R_PPC64_ADDR64 38 /* doubleword64 S + A. */
> -#define R_PPC64_ADDR16_HIGHER 39 /* half16 #higher(S + A). */
> -#define R_PPC64_ADDR16_HIGHERA 40 /* half16 #highera(S + A). */
> -#define R_PPC64_ADDR16_HIGHEST 41 /* half16 #highest(S + A). */
> -#define R_PPC64_ADDR16_HIGHESTA 42 /* half16 #highesta(S + A). */
> -#define R_PPC64_UADDR64 43 /* doubleword64 S + A. */
> -#define R_PPC64_REL64 44 /* doubleword64 S + A - P. */
> -#define R_PPC64_PLT64 45 /* doubleword64 L + A. */
> -#define R_PPC64_PLTREL64 46 /* doubleword64 L + A - P. */
> -#define R_PPC64_TOC16 47 /* half16* S + A - .TOC. */
> -#define R_PPC64_TOC16_LO 48 /* half16 #lo(S + A - .TOC.). */
> -#define R_PPC64_TOC16_HI 49 /* half16 #hi(S + A - .TOC.). */
> -#define R_PPC64_TOC16_HA 50 /* half16 #ha(S + A - .TOC.). */
> -#define R_PPC64_TOC 51 /* doubleword64 .TOC. */
> -#define R_PPC64_PLTGOT16 52 /* half16* M + A. */
> -#define R_PPC64_PLTGOT16_LO 53 /* half16 #lo(M + A). */
> -#define R_PPC64_PLTGOT16_HI 54 /* half16 #hi(M + A). */
> -#define R_PPC64_PLTGOT16_HA 55 /* half16 #ha(M + A). */
> -
> -#define R_PPC64_ADDR16_DS 56 /* half16ds* (S + A) >> 2. */
> -#define R_PPC64_ADDR16_LO_DS 57 /* half16ds #lo(S + A) >> 2. */
> -#define R_PPC64_GOT16_DS 58 /* half16ds* (G + A) >> 2. */
> -#define R_PPC64_GOT16_LO_DS 59 /* half16ds #lo(G + A) >> 2. */
> -#define R_PPC64_PLT16_LO_DS 60 /* half16ds #lo(L + A) >> 2. */
> -#define R_PPC64_SECTOFF_DS 61 /* half16ds* (R + A) >> 2. */
> -#define R_PPC64_SECTOFF_LO_DS 62 /* half16ds #lo(R + A) >> 2. */
> -#define R_PPC64_TOC16_DS 63 /* half16ds* (S + A - .TOC.) >> 2. */
> -#define R_PPC64_TOC16_LO_DS 64 /* half16ds #lo(S + A - .TOC.) >> 2. */
> -#define R_PPC64_PLTGOT16_DS 65 /* half16ds* (M + A) >> 2. */
> -#define R_PPC64_PLTGOT16_LO_DS 66 /* half16ds #lo(M + A) >> 2. */
> -
> -/* PowerPC64 relocations defined for the TLS access ABI. */
> -#define R_PPC64_TLS 67 /* none (sym+add)@tls */
> -#define R_PPC64_DTPMOD64 68 /* doubleword64 (sym+add)@dtpmod */
> -#define R_PPC64_TPREL16 69 /* half16* (sym+add)@tprel */
> -#define R_PPC64_TPREL16_LO 70 /* half16 (sym+add)@tprel at l */
> -#define R_PPC64_TPREL16_HI 71 /* half16 (sym+add)@tprel at h */
> -#define R_PPC64_TPREL16_HA 72 /* half16 (sym+add)@tprel at ha */
> -#define R_PPC64_TPREL64 73 /* doubleword64 (sym+add)@tprel */
> -#define R_PPC64_DTPREL16 74 /* half16* (sym+add)@dtprel */
> -#define R_PPC64_DTPREL16_LO 75 /* half16 (sym+add)@dtprel at l */
> -#define R_PPC64_DTPREL16_HI 76 /* half16 (sym+add)@dtprel at h */
> -#define R_PPC64_DTPREL16_HA 77 /* half16 (sym+add)@dtprel at ha */
> -#define R_PPC64_DTPREL64 78 /* doubleword64 (sym+add)@dtprel */
> -#define R_PPC64_GOT_TLSGD16 79 /* half16* (sym+add)@got at tlsgd */
> -#define R_PPC64_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got at tlsgd@l */
> -#define R_PPC64_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got at tlsgd@h */
> -#define R_PPC64_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got at tlsgd@ha */
> -#define R_PPC64_GOT_TLSLD16 83 /* half16* (sym+add)@got at tlsld */
> -#define R_PPC64_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got at tlsld@l */
> -#define R_PPC64_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got at tlsld@h */
> -#define R_PPC64_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got at tlsld@ha */
> -#define R_PPC64_GOT_TPREL16_DS 87 /* half16ds* (sym+add)@got at tprel */
> -#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got at tprel@l */
> -#define R_PPC64_GOT_TPREL16_HI 89 /* half16 (sym+add)@got at tprel@h */
> -#define R_PPC64_GOT_TPREL16_HA 90 /* half16 (sym+add)@got at tprel@ha */
> -#define R_PPC64_GOT_DTPREL16_DS 91 /* half16ds* (sym+add)@got at dtprel */
> -#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got at dtprel@l */
> -#define R_PPC64_GOT_DTPREL16_HI 93 /* half16 (sym+add)@got at dtprel@h */
> -#define R_PPC64_GOT_DTPREL16_HA 94 /* half16 (sym+add)@got at dtprel@ha */
> -#define R_PPC64_TPREL16_DS 95 /* half16ds* (sym+add)@tprel */
> -#define R_PPC64_TPREL16_LO_DS 96 /* half16ds (sym+add)@tprel at l */
> -#define R_PPC64_TPREL16_HIGHER 97 /* half16 (sym+add)@tprel at higher */
> -#define R_PPC64_TPREL16_HIGHERA 98 /* half16 (sym+add)@tprel at highera */
> -#define R_PPC64_TPREL16_HIGHEST 99 /* half16 (sym+add)@tprel at highest */
> -#define R_PPC64_TPREL16_HIGHESTA 100 /* half16 (sym+add)@tprel at highesta */
> -#define R_PPC64_DTPREL16_DS 101 /* half16ds* (sym+add)@dtprel */
> -#define R_PPC64_DTPREL16_LO_DS 102 /* half16ds (sym+add)@dtprel at l */
> -#define R_PPC64_DTPREL16_HIGHER 103 /* half16 (sym+add)@dtprel at higher */
> -#define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel at highera */
> -#define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel at highest */
> -#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel at highesta */
> -#define R_PPC64_TLSGD 107
> -#define R_PPC64_TLSLD 108
> -#define R_PPC64_TOCSAVE 109
> -
> -#define R_PPC64_REL24_NOTOC 116
> -#define R_PPC64_ENTRY 118
> -
> -#define R_PPC64_PCREL34 132
> -#define R_PPC64_GOT_PCREL34 133
> -
> -#define R_PPC64_REL16 249
> -#define R_PPC64_REL16_LO 250
> -#define R_PPC64_REL16_HI 251
> -#define R_PPC64_REL16_HA 252
> -
> -/* Keep this the last entry. */
> -#define R_PPC64_NUM 253
> -
> #endif /* _UAPI_ASM_POWERPC_ELF_H */
> diff --git a/include/uapi/linux/elf-r.h b/include/uapi/linux/elf-r.h
> index cf931fc05afa..0d0dfaa7c724 100644
> --- a/include/uapi/linux/elf-r.h
> +++ b/include/uapi/linux/elf-r.h
> @@ -113,4 +113,205 @@
>
> #define R_AARCH64_RELATIVE 1027
>
> +/* PowerPC relocations defined by the ABIs */
> +#define R_PPC_NONE 0
> +#define R_PPC_ADDR32 1 /* 32bit absolute address */
> +#define R_PPC_ADDR24 2 /* 26bit address, 2 bits ignored. */
> +#define R_PPC_ADDR16 3 /* 16bit absolute address */
> +#define R_PPC_ADDR16_LO 4 /* lower 16bit of absolute address */
> +#define R_PPC_ADDR16_HI 5 /* high 16bit of absolute address */
> +#define R_PPC_ADDR16_HA 6 /* adjusted high 16bit */
> +#define R_PPC_ADDR14 7 /* 16bit address, 2 bits ignored */
> +#define R_PPC_ADDR14_BRTAKEN 8
> +#define R_PPC_ADDR14_BRNTAKEN 9
> +#define R_PPC_REL24 10 /* PC relative 26 bit */
> +#define R_PPC_REL14 11 /* PC relative 16 bit */
> +#define R_PPC_REL14_BRTAKEN 12
> +#define R_PPC_REL14_BRNTAKEN 13
> +#define R_PPC_GOT16 14
> +#define R_PPC_GOT16_LO 15
> +#define R_PPC_GOT16_HI 16
> +#define R_PPC_GOT16_HA 17
> +#define R_PPC_PLTREL24 18
> +#define R_PPC_COPY 19
> +#define R_PPC_GLOB_DAT 20
> +#define R_PPC_JMP_SLOT 21
> +#define R_PPC_RELATIVE 22
> +#define R_PPC_LOCAL24PC 23
> +#define R_PPC_UADDR32 24
> +#define R_PPC_UADDR16 25
> +#define R_PPC_REL32 26
> +#define R_PPC_PLT32 27
> +#define R_PPC_PLTREL32 28
> +#define R_PPC_PLT16_LO 29
> +#define R_PPC_PLT16_HI 30
> +#define R_PPC_PLT16_HA 31
> +#define R_PPC_SDAREL16 32
> +#define R_PPC_SECTOFF 33
> +#define R_PPC_SECTOFF_LO 34
> +#define R_PPC_SECTOFF_HI 35
> +#define R_PPC_SECTOFF_HA 36
> +
> +/* PowerPC relocations defined for the TLS access ABI. */
> +#define R_PPC_TLS 67 /* none (sym+add)@tls */
> +#define R_PPC_DTPMOD32 68 /* word32 (sym+add)@dtpmod */
> +#define R_PPC_TPREL16 69 /* half16* (sym+add)@tprel */
> +#define R_PPC_TPREL16_LO 70 /* half16 (sym+add)@tprel at l */
> +#define R_PPC_TPREL16_HI 71 /* half16 (sym+add)@tprel at h */
> +#define R_PPC_TPREL16_HA 72 /* half16 (sym+add)@tprel at ha */
> +#define R_PPC_TPREL32 73 /* word32 (sym+add)@tprel */
> +#define R_PPC_DTPREL16 74 /* half16* (sym+add)@dtprel */
> +#define R_PPC_DTPREL16_LO 75 /* half16 (sym+add)@dtprel at l */
> +#define R_PPC_DTPREL16_HI 76 /* half16 (sym+add)@dtprel at h */
> +#define R_PPC_DTPREL16_HA 77 /* half16 (sym+add)@dtprel at ha */
> +#define R_PPC_DTPREL32 78 /* word32 (sym+add)@dtprel */
> +#define R_PPC_GOT_TLSGD16 79 /* half16* (sym+add)@got at tlsgd */
> +#define R_PPC_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got at tlsgd@l */
> +#define R_PPC_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got at tlsgd@h */
> +#define R_PPC_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got at tlsgd@ha */
> +#define R_PPC_GOT_TLSLD16 83 /* half16* (sym+add)@got at tlsld */
> +#define R_PPC_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got at tlsld@l */
> +#define R_PPC_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got at tlsld@h */
> +#define R_PPC_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got at tlsld@ha */
> +#define R_PPC_GOT_TPREL16 87 /* half16* (sym+add)@got at tprel */
> +#define R_PPC_GOT_TPREL16_LO 88 /* half16 (sym+add)@got at tprel@l */
> +#define R_PPC_GOT_TPREL16_HI 89 /* half16 (sym+add)@got at tprel@h */
> +#define R_PPC_GOT_TPREL16_HA 90 /* half16 (sym+add)@got at tprel@ha */
> +#define R_PPC_GOT_DTPREL16 91 /* half16* (sym+add)@got at dtprel */
> +#define R_PPC_GOT_DTPREL16_LO 92 /* half16* (sym+add)@got at dtprel@l */
> +#define R_PPC_GOT_DTPREL16_HI 93 /* half16* (sym+add)@got at dtprel@h */
> +#define R_PPC_GOT_DTPREL16_HA 94 /* half16* (sym+add)@got at dtprel@ha */
> +
> +/* keep this the last entry. */
> +#define R_PPC_NUM 95
> +
> +/* PowerPC64 relocations defined by the ABIs */
> +#define R_PPC64_NONE R_PPC_NONE
> +#define R_PPC64_ADDR32 R_PPC_ADDR32 /* 32bit absolute address. */
> +#define R_PPC64_ADDR24 R_PPC_ADDR24 /* 26bit address, word aligned. */
> +#define R_PPC64_ADDR16 R_PPC_ADDR16 /* 16bit absolute address. */
> +#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO /* lower 16bits of abs. address. */
> +#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI /* high 16bits of abs. address. */
> +#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA /* adjusted high 16bits. */
> +#define R_PPC64_ADDR14 R_PPC_ADDR14 /* 16bit address, word aligned. */
> +#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN
> +#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN
> +#define R_PPC64_REL24 R_PPC_REL24 /* PC relative 26 bit, word aligned. */
> +#define R_PPC64_REL14 R_PPC_REL14 /* PC relative 16 bit. */
> +#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN
> +#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN
> +#define R_PPC64_GOT16 R_PPC_GOT16
> +#define R_PPC64_GOT16_LO R_PPC_GOT16_LO
> +#define R_PPC64_GOT16_HI R_PPC_GOT16_HI
> +#define R_PPC64_GOT16_HA R_PPC_GOT16_HA
> +
> +#define R_PPC64_COPY R_PPC_COPY
> +#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT
> +#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT
> +#define R_PPC64_RELATIVE R_PPC_RELATIVE
> +
> +#define R_PPC64_UADDR32 R_PPC_UADDR32
> +#define R_PPC64_UADDR16 R_PPC_UADDR16
> +#define R_PPC64_REL32 R_PPC_REL32
> +#define R_PPC64_PLT32 R_PPC_PLT32
> +#define R_PPC64_PLTREL32 R_PPC_PLTREL32
> +#define R_PPC64_PLT16_LO R_PPC_PLT16_LO
> +#define R_PPC64_PLT16_HI R_PPC_PLT16_HI
> +#define R_PPC64_PLT16_HA R_PPC_PLT16_HA
> +
> +#define R_PPC64_SECTOFF R_PPC_SECTOFF
> +#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO
> +#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI
> +#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA
> +#define R_PPC64_ADDR30 37 /* word30 (S + A - P) >> 2. */
> +#define R_PPC64_ADDR64 38 /* doubleword64 S + A. */
> +#define R_PPC64_ADDR16_HIGHER 39 /* half16 #higher(S + A). */
> +#define R_PPC64_ADDR16_HIGHERA 40 /* half16 #highera(S + A). */
> +#define R_PPC64_ADDR16_HIGHEST 41 /* half16 #highest(S + A). */
> +#define R_PPC64_ADDR16_HIGHESTA 42 /* half16 #highesta(S + A). */
> +#define R_PPC64_UADDR64 43 /* doubleword64 S + A. */
> +#define R_PPC64_REL64 44 /* doubleword64 S + A - P. */
> +#define R_PPC64_PLT64 45 /* doubleword64 L + A. */
> +#define R_PPC64_PLTREL64 46 /* doubleword64 L + A - P. */
> +#define R_PPC64_TOC16 47 /* half16* S + A - .TOC. */
> +#define R_PPC64_TOC16_LO 48 /* half16 #lo(S + A - .TOC.). */
> +#define R_PPC64_TOC16_HI 49 /* half16 #hi(S + A - .TOC.). */
> +#define R_PPC64_TOC16_HA 50 /* half16 #ha(S + A - .TOC.). */
> +#define R_PPC64_TOC 51 /* doubleword64 .TOC. */
> +#define R_PPC64_PLTGOT16 52 /* half16* M + A. */
> +#define R_PPC64_PLTGOT16_LO 53 /* half16 #lo(M + A). */
> +#define R_PPC64_PLTGOT16_HI 54 /* half16 #hi(M + A). */
> +#define R_PPC64_PLTGOT16_HA 55 /* half16 #ha(M + A). */
> +
> +#define R_PPC64_ADDR16_DS 56 /* half16ds* (S + A) >> 2. */
> +#define R_PPC64_ADDR16_LO_DS 57 /* half16ds #lo(S + A) >> 2. */
> +#define R_PPC64_GOT16_DS 58 /* half16ds* (G + A) >> 2. */
> +#define R_PPC64_GOT16_LO_DS 59 /* half16ds #lo(G + A) >> 2. */
> +#define R_PPC64_PLT16_LO_DS 60 /* half16ds #lo(L + A) >> 2. */
> +#define R_PPC64_SECTOFF_DS 61 /* half16ds* (R + A) >> 2. */
> +#define R_PPC64_SECTOFF_LO_DS 62 /* half16ds #lo(R + A) >> 2. */
> +#define R_PPC64_TOC16_DS 63 /* half16ds* (S + A - .TOC.) >> 2. */
> +#define R_PPC64_TOC16_LO_DS 64 /* half16ds #lo(S + A - .TOC.) >> 2. */
> +#define R_PPC64_PLTGOT16_DS 65 /* half16ds* (M + A) >> 2. */
> +#define R_PPC64_PLTGOT16_LO_DS 66 /* half16ds #lo(M + A) >> 2. */
> +
> +/* PowerPC64 relocations defined for the TLS access ABI. */
> +#define R_PPC64_TLS 67 /* none (sym+add)@tls */
> +#define R_PPC64_DTPMOD64 68 /* doubleword64 (sym+add)@dtpmod */
> +#define R_PPC64_TPREL16 69 /* half16* (sym+add)@tprel */
> +#define R_PPC64_TPREL16_LO 70 /* half16 (sym+add)@tprel at l */
> +#define R_PPC64_TPREL16_HI 71 /* half16 (sym+add)@tprel at h */
> +#define R_PPC64_TPREL16_HA 72 /* half16 (sym+add)@tprel at ha */
> +#define R_PPC64_TPREL64 73 /* doubleword64 (sym+add)@tprel */
> +#define R_PPC64_DTPREL16 74 /* half16* (sym+add)@dtprel */
> +#define R_PPC64_DTPREL16_LO 75 /* half16 (sym+add)@dtprel at l */
> +#define R_PPC64_DTPREL16_HI 76 /* half16 (sym+add)@dtprel at h */
> +#define R_PPC64_DTPREL16_HA 77 /* half16 (sym+add)@dtprel at ha */
> +#define R_PPC64_DTPREL64 78 /* doubleword64 (sym+add)@dtprel */
> +#define R_PPC64_GOT_TLSGD16 79 /* half16* (sym+add)@got at tlsgd */
> +#define R_PPC64_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got at tlsgd@l */
> +#define R_PPC64_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got at tlsgd@h */
> +#define R_PPC64_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got at tlsgd@ha */
> +#define R_PPC64_GOT_TLSLD16 83 /* half16* (sym+add)@got at tlsld */
> +#define R_PPC64_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got at tlsld@l */
> +#define R_PPC64_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got at tlsld@h */
> +#define R_PPC64_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got at tlsld@ha */
> +#define R_PPC64_GOT_TPREL16_DS 87 /* half16ds* (sym+add)@got at tprel */
> +#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got at tprel@l */
> +#define R_PPC64_GOT_TPREL16_HI 89 /* half16 (sym+add)@got at tprel@h */
> +#define R_PPC64_GOT_TPREL16_HA 90 /* half16 (sym+add)@got at tprel@ha */
> +#define R_PPC64_GOT_DTPREL16_DS 91 /* half16ds* (sym+add)@got at dtprel */
> +#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got at dtprel@l */
> +#define R_PPC64_GOT_DTPREL16_HI 93 /* half16 (sym+add)@got at dtprel@h */
> +#define R_PPC64_GOT_DTPREL16_HA 94 /* half16 (sym+add)@got at dtprel@ha */
> +#define R_PPC64_TPREL16_DS 95 /* half16ds* (sym+add)@tprel */
> +#define R_PPC64_TPREL16_LO_DS 96 /* half16ds (sym+add)@tprel at l */
> +#define R_PPC64_TPREL16_HIGHER 97 /* half16 (sym+add)@tprel at higher */
> +#define R_PPC64_TPREL16_HIGHERA 98 /* half16 (sym+add)@tprel at highera */
> +#define R_PPC64_TPREL16_HIGHEST 99 /* half16 (sym+add)@tprel at highest */
> +#define R_PPC64_TPREL16_HIGHESTA 100 /* half16 (sym+add)@tprel at highesta */
> +#define R_PPC64_DTPREL16_DS 101 /* half16ds* (sym+add)@dtprel */
> +#define R_PPC64_DTPREL16_LO_DS 102 /* half16ds (sym+add)@dtprel at l */
> +#define R_PPC64_DTPREL16_HIGHER 103 /* half16 (sym+add)@dtprel at higher */
> +#define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel at highera */
> +#define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel at highest */
> +#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel at highesta */
> +#define R_PPC64_TLSGD 107
> +#define R_PPC64_TLSLD 108
> +#define R_PPC64_TOCSAVE 109
> +
> +#define R_PPC64_REL24_NOTOC 116
> +#define R_PPC64_ENTRY 118
> +
> +#define R_PPC64_PCREL34 132
> +#define R_PPC64_GOT_PCREL34 133
> +
> +#define R_PPC64_REL16 249
> +#define R_PPC64_REL16_LO 250
> +#define R_PPC64_REL16_HI 251
> +#define R_PPC64_REL16_HA 252
> +
> +/* Keep this the last entry. */
> +#define R_PPC64_NUM 253
> +
> #endif /* _UAPI_LINUX_ELF_R_H */
>
More information about the linux-riscv
mailing list