From 1b467695d9ac67f21f38223cc33ea90a0f0aff04 Mon Sep 17 00:00:00 2001 From: Wentao Guan Date: Sun, 25 Aug 2024 15:41:11 +0800 Subject: [PATCH] elf: Add LoongArch definitions Add ELF e_machine ID [1] and relocations types [2] for LoongArch to the current in-repo definitions. [1] https://loongson.github.io/LoongArch-Documentation/LoongArch-ELF-ABI-EN.html#_e_machine_identifies_the_machine [2] https://loongson.github.io/LoongArch-Documentation/LoongArch-ELF-ABI-EN.html#_relocations Signed-off-by: Zhou Yang Signed-off-by: Xiaotian Wu Reviewed-by: Daniel Kiper Signed-off-by: Wentao Guan --- GRUB2/MOD_SRC/grub-2.04/include/grub/elf.h | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/GRUB2/MOD_SRC/grub-2.04/include/grub/elf.h b/GRUB2/MOD_SRC/grub-2.04/include/grub/elf.h index 1fc10425..134c5d22 100644 --- a/GRUB2/MOD_SRC/grub-2.04/include/grub/elf.h +++ b/GRUB2/MOD_SRC/grub-2.04/include/grub/elf.h @@ -248,6 +248,7 @@ typedef struct #define EM_NUM 95 #define EM_AARCH64 183 /* ARM 64-bit architecture */ #define EM_RISCV 243 /* RISC-V */ +#define EM_LOONGARCH 258 /* LoongArch */ /* If it is necessary to assign new unofficial EM_* values, please pick large random numbers (0x8523, 0xa7f2, etc.) to minimize the @@ -2531,6 +2532,28 @@ typedef Elf32_Addr Elf32_Conflict; #define R_RISCV_SET32 56 #define R_RISCV_32_PCREL 57 +/* LoongArch relocations */ +#define R_LARCH_NONE 0 +#define R_LARCH_64 2 +#define R_LARCH_MARK_LA 20 +#define R_LARCH_SOP_PUSH_PCREL 22 +#define R_LARCH_SOP_PUSH_ABSOLUTE 23 +#define R_LARCH_SOP_PUSH_PLT_PCREL 29 +#define R_LARCH_SOP_SUB 32 +#define R_LARCH_SOP_SL 33 +#define R_LARCH_SOP_SR 34 +#define R_LARCH_SOP_ADD 35 +#define R_LARCH_SOP_AND 36 +#define R_LARCH_SOP_IF_ELSE 37 +#define R_LARCH_SOP_POP_32_S_10_5 38 +#define R_LARCH_SOP_POP_32_U_10_12 39 +#define R_LARCH_SOP_POP_32_S_10_12 40 +#define R_LARCH_SOP_POP_32_S_10_16 41 +#define R_LARCH_SOP_POP_32_S_10_16_S2 42 +#define R_LARCH_SOP_POP_32_S_5_20 43 +#define R_LARCH_SOP_POP_32_S_0_5_10_16_S2 44 +#define R_LARCH_SOP_POP_32_S_0_10_10_16_S2 45 + #ifdef GRUB_TARGET_WORDSIZE #if GRUB_TARGET_WORDSIZE == 32