diff --git a/headers/private/system/arch/arm/arch_elf.h b/headers/private/system/arch/arm/arch_elf.h index 1654c93601..c389118260 100644 --- a/headers/private/system/arch/arm/arch_elf.h +++ b/headers/private/system/arch/arm/arch_elf.h @@ -25,6 +25,9 @@ #define R_ARM_THM_SWI8 14 #define R_ARM_XPC25 15 #define R_ARM_THM_XPC22 16 +#define R_ARM_TLS_DTPMOD32 17 /* ID of module containing symbol */ +#define R_ARM_TLS_DTPOFF32 18 /* Offset in TLS block */ +#define R_ARM_TLS_TPOFF32 19 /* Offset in static TLS block */ #define R_ARM_COPY 20 /* Copy symbol at runtime */ #define R_ARM_GLOB_DAT 21 /* Create GOT entry */ #define R_ARM_JMP_SLOT 22 /* Create PLT entry */ diff --git a/headers/private/system/arch/arm64/arch_elf.h b/headers/private/system/arch/arm64/arch_elf.h index 73d5c3dab3..3142e69b4d 100644 --- a/headers/private/system/arch/arm64/arch_elf.h +++ b/headers/private/system/arch/arm64/arch_elf.h @@ -5,21 +5,25 @@ #ifndef _KERNEL_ARCH_ARM64_ELF_H #define _KERNEL_ARCH_ARM64_ELF_H -#define R_AARCH64_NONE 0 /* No relocation */ -#define R_AARCH64_ABS64 257 /* Absolute offset */ -#define R_AARCH64_ABS32 258 /* Absolute, 32-bit overflow check */ -#define R_AARCH64_ABS16 259 /* Absolute, 16-bit overflow check */ -#define R_AARCH64_PREL64 260 /* PC relative */ -#define R_AARCH64_PREL32 261 /* PC relative, 32-bit overflow check */ -#define R_AARCH64_PREL16 262 /* PC relative, 16-bit overflow check */ -#define R_AARCH64_COPY 1024 /* Copy data from shared object */ -#define R_AARCH64_GLOB_DAT 1025 /* Set GOT entry to data address */ -#define R_AARCH64_JUMP_SLOT 1026 /* Set GOT entry to code address */ -#define R_AARCH64_RELATIVE 1027 /* Add load address of shared object */ -#define R_AARCH64_TLS_DTPREL64 1028 -#define R_AARCH64_TLS_DTPMOD64 1029 -#define R_AARCH64_TLS_TPREL64 1030 -#define R_AARCH64_TLSDESC 1031 /* Identify the TLS descriptor */ -#define R_AARCH64_IRELATIVE 1032 +#define R_AARCH64_NONE 0 /* No relocation */ +#define R_AARCH64_ABS64 257 /* Absolute offset */ +#define R_AARCH64_ABS32 258 /* Absolute, 32-bit overflow check */ +#define R_AARCH64_ABS16 259 /* Absolute, 16-bit overflow check */ +#define R_AARCH64_PREL64 260 /* PC relative */ +#define R_AARCH64_PREL32 261 /* PC relative, 32-bit overflow check */ +#define R_AARCH64_PREL16 262 /* PC relative, 16-bit overflow check */ +#define R_AARCH64_TSTBR14 279 /* TBZ/TBNZ immediate */ +#define R_AARCH64_CONDBR19 280 /* Conditional branch immediate */ +#define R_AARCH64_JUMP26 282 /* Branch immediate */ +#define R_AARCH64_CALL26 283 /* Call immediate */ +#define R_AARCH64_COPY 1024 /* Copy data from shared object */ +#define R_AARCH64_GLOB_DAT 1025 /* Set GOT entry to data address */ +#define R_AARCH64_JUMP_SLOT 1026 /* Set GOT entry to code address */ +#define R_AARCH64_RELATIVE 1027 /* Add load address of shared object */ +#define R_AARCH64_TLS_DTPREL64 1028 /* Module-relative offset, 64 bit. */ +#define R_AARCH64_TLS_DTPMOD64 1029 /* Module number, 64 bit. */ +#define R_AARCH64_TLS_TPREL64 1030 /* TP-relative offset, 64 bit. */ +#define R_AARCH64_TLSDESC 1031 /* Identify the TLS descriptor */ +#define R_AARCH64_IRELATIVE 1032 /* STT_GNU_IFUNC relocation. */ #endif /* _KERNEL_ARCH_ARM64_ELF_H */ diff --git a/headers/private/system/arch/riscv64/arch_elf.h b/headers/private/system/arch/riscv64/arch_elf.h index c6b79cd3e8..4d08358210 100644 --- a/headers/private/system/arch/riscv64/arch_elf.h +++ b/headers/private/system/arch/riscv64/arch_elf.h @@ -7,33 +7,33 @@ #define R_RISCV_NONE 0 -#define R_RISCV_32 1 -#define R_RISCV_64 2 +#define R_RISCV_32 1 +#define R_RISCV_64 2 #define R_RISCV_RELATIVE 3 #define R_RISCV_COPY 4 #define R_RISCV_JUMP_SLOT 5 -#define R_RISCV_TLS_DTPMOD32 6 -#define R_RISCV_TLS_DTPMOD64 7 -#define R_RISCV_TLS_DTPREL32 8 -#define R_RISCV_TLS_DTPREL64 9 +#define R_RISCV_TLS_DTPMOD32 6 +#define R_RISCV_TLS_DTPMOD64 7 +#define R_RISCV_TLS_DTPREL32 8 +#define R_RISCV_TLS_DTPREL64 9 #define R_RISCV_TLS_TPREL32 10 #define R_RISCV_TLS_TPREL64 11 #define R_RISCV_BRANCH 16 -#define R_RISCV_JAL 17 +#define R_RISCV_JAL 17 #define R_RISCV_CALL 18 #define R_RISCV_CALL_PLT 19 #define R_RISCV_GOT_HI20 20 -#define R_RISCV_TLS_GOT_HI20 21 +#define R_RISCV_TLS_GOT_HI20 21 #define R_RISCV_TLS_GD_HI20 22 #define R_RISCV_PCREL_HI20 23 -#define R_RISCV_PCREL_LO12_I 24 -#define R_RISCV_PCREL_LO12_S 25 +#define R_RISCV_PCREL_LO12_I 24 +#define R_RISCV_PCREL_LO12_S 25 #define R_RISCV_HI20 26 #define R_RISCV_LO12_I 27 #define R_RISCV_LO12_S 28 #define R_RISCV_TPREL_HI20 29 -#define R_RISCV_TPREL_LO12_I 30 -#define R_RISCV_TPREL_LO12_S 31 +#define R_RISCV_TPREL_LO12_I 30 +#define R_RISCV_TPREL_LO12_S 31 #define R_RISCV_TPREL_ADD 32 #define R_RISCV_ADD8 33 #define R_RISCV_ADD16 34 @@ -43,12 +43,12 @@ #define R_RISCV_SUB16 38 #define R_RISCV_SUB32 39 #define R_RISCV_SUB64 40 -#define R_RISCV_GNU_VTINHERIT 41 +#define R_RISCV_GNU_VTINHERIT 41 #define R_RISCV_GNU_VTENTRY 42 #define R_RISCV_ALIGN 43 #define R_RISCV_RVC_BRANCH 44 #define R_RISCV_RVC_JUMP 45 -#define R_RISCV_LUI 46 +#define R_RISCV_LUI 46 #define R_RISCV_GPREL_I 47 #define R_RISCV_GPREL_S 48 #define R_RISCV_TPREL_I 49 @@ -60,6 +60,6 @@ #define R_RISCV_SET16 55 #define R_RISCV_SET32 56 #define R_RISCV_32_PCREL 57 - +#define R_RISCV_IRELATIVE 58 #endif /* _SYSTEM_ARCH_RISCV64_ELF_H */ diff --git a/headers/private/system/arch/x86/arch_elf.h b/headers/private/system/arch/x86/arch_elf.h index c93ebd3d24..acb0756fa6 100644 --- a/headers/private/system/arch/x86/arch_elf.h +++ b/headers/private/system/arch/x86/arch_elf.h @@ -7,19 +7,48 @@ /* relocation types */ -#define R_386_NONE 0 -#define R_386_32 1 /* add symbol value */ -#define R_386_PC32 2 /* add PC relative symbol value */ -#define R_386_GOT32 3 /* add PC relative GOT offset */ -#define R_386_PLT32 4 /* add PC relative PLT offset */ -#define R_386_COPY 5 /* copy data from shared object */ -#define R_386_GLOB_DAT 6 /* set GOT entry to data address */ -#define R_386_JMP_SLOT 7 /* set GOT entry to code address */ -#define R_386_RELATIVE 8 /* add load address of shared object */ -#define R_386_GOTOFF 9 /* add GOT relative symbol address */ -#define R_386_GOTPC 10 /* add PC relative GOT table address */ -#define R_386_TLS_DTPMOD32 35 -#define R_386_TLS_DTPOFF32 36 +#define R_386_NONE 0 /* No relocation. */ +#define R_386_32 1 /* Add symbol value. */ +#define R_386_PC32 2 /* Add PC-relative symbol value. */ +#define R_386_GOT32 3 /* Add PC-relative GOT offset. */ +#define R_386_PLT32 4 /* Add PC-relative PLT offset. */ +#define R_386_COPY 5 /* Copy data from shared object. */ +#define R_386_GLOB_DAT 6 /* Set GOT entry to data address. */ +#define R_386_JMP_SLOT 7 /* Set GOT entry to code address. */ +#define R_386_RELATIVE 8 /* Add load address of shared object. */ +#define R_386_GOTOFF 9 /* Add GOT-relative symbol address. */ +#define R_386_GOTPC 10 /* Add PC-relative GOT table address. */ +#define R_386_32PLT 11 +#define R_386_TLS_TPOFF 14 /* Negative offset in static TLS block */ +#define R_386_TLS_IE 15 /* Absolute address of GOT for -ve static TLS */ +#define R_386_TLS_GOTIE 16 /* GOT entry for negative static TLS block */ +#define R_386_TLS_LE 17 /* Negative offset relative to static TLS */ +#define R_386_TLS_GD 18 /* 32 bit offset to GOT (index,off) pair */ +#define R_386_TLS_LDM 19 /* 32 bit offset to GOT (index,zero) pair */ +#define R_386_16 20 +#define R_386_PC16 21 +#define R_386_8 22 +#define R_386_PC8 23 +#define R_386_TLS_GD_32 24 /* 32 bit offset to GOT (index,off) pair */ +#define R_386_TLS_GD_PUSH 25 /* pushl instruction for Sun ABI GD sequence */ +#define R_386_TLS_GD_CALL 26 /* call instruction for Sun ABI GD sequence */ +#define R_386_TLS_GD_POP 27 /* popl instruction for Sun ABI GD sequence */ +#define R_386_TLS_LDM_32 28 /* 32 bit offset to GOT (index,zero) pair */ +#define R_386_TLS_LDM_PUSH 29 /* pushl instruction for Sun ABI LD sequence */ +#define R_386_TLS_LDM_CALL 30 /* call instruction for Sun ABI LD sequence */ +#define R_386_TLS_LDM_POP 31 /* popl instruction for Sun ABI LD sequence */ +#define R_386_TLS_LDO_32 32 /* 32 bit offset from start of TLS block */ +#define R_386_TLS_IE_32 33 /* 32 bit offset to GOT static TLS offset entry */ +#define R_386_TLS_LE_32 34 /* 32 bit offset within static TLS block */ +#define R_386_TLS_DTPMOD32 35 /* GOT entry containing TLS index */ +#define R_386_TLS_DTPOFF32 36 /* GOT entry containing TLS offset */ +#define R_386_TLS_TPOFF32 37 /* GOT entry of -ve static TLS offset */ +#define R_386_SIZE32 38 +#define R_386_TLS_GOTDESC 39 +#define R_386_TLS_DESC_CALL 40 +#define R_386_TLS_DESC 41 +#define R_386_IRELATIVE 42 /* PLT entry resolved indirectly at runtime */ +#define R_386_GOT32X 43 #ifdef _BOOT_MODE # include "../x86_64/arch_elf.h" diff --git a/headers/private/system/arch/x86_64/arch_elf.h b/headers/private/system/arch/x86_64/arch_elf.h index b75648df16..257131cbf8 100644 --- a/headers/private/system/arch/x86_64/arch_elf.h +++ b/headers/private/system/arch/x86_64/arch_elf.h @@ -45,6 +45,12 @@ #define R_X86_64_TLSDESC_CALL 35 /* Marker for call through TLS descriptor. */ #define R_X86_64_TLSDESC 36 /* TLS descriptor. */ #define R_X86_64_IRELATIVE 37 /* Adjust indirectly by program base. */ +#define R_X86_64_RELATIVE64 38 /* 64-bit adjust by program base */ +/* 39 and 40 were BND-related, already decomissioned */ +#define R_X86_64_GOTPCRELX 40 /* Load from 32 bit signed pc relative offset to GOT entry + without REX prefix, relaxable. */ +#define R_X86_64_REX_GOTPCRELX 41 /* Load from 32 bit signed pc relative offset to GOT entry + with REX prefix, relaxable. */ #if defined(_BOOT_MODE) || defined(ELF32_COMPAT)