From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1791) id 83BC33875A2A; Mon, 25 Jul 2022 12:58:58 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 83BC33875A2A Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Adhemerval Zanella To: glibc-cvs@sourceware.org Subject: [glibc/azanella/loongarch64] LoongArch: Add relocations and ELF flags to elf.h and scripts/glibcelf.py X-Act-Checkin: glibc X-Git-Author: caiyinyu X-Git-Refname: refs/heads/azanella/loongarch64 X-Git-Oldrev: 2fed3a2f94cc7586ce12bc3d0a3181a9e5957026 X-Git-Newrev: fe3eae157bdb070def40db947fa965e3f7f21a33 Message-Id: <20220725125858.83BC33875A2A@sourceware.org> Date: Mon, 25 Jul 2022 12:58:58 +0000 (GMT) X-BeenThere: glibc-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Glibc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jul 2022 12:58:58 -0000 https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=fe3eae157bdb070def40db947fa965e3f7f21a33 commit fe3eae157bdb070def40db947fa965e3f7f21a33 Author: caiyinyu Date: Tue Jul 19 09:20:45 2022 +0800 LoongArch: Add relocations and ELF flags to elf.h and scripts/glibcelf.py Diff: --- elf/elf.h | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++- scripts/glibcelf.py | 3 ++- 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/elf/elf.h b/elf/elf.h index 2b5c2c5fb6..02a1b3f52f 100644 --- a/elf/elf.h +++ b/elf/elf.h @@ -358,8 +358,9 @@ typedef struct #define EM_BPF 247 /* Linux BPF -- in-kernel virtual machine */ #define EM_CSKY 252 /* C-SKY */ +#define EM_LOONGARCH 258 /* LoongArch */ -#define EM_NUM 253 +#define EM_NUM 259 /* Old spellings/synonyms. */ @@ -4083,6 +4084,71 @@ enum #define R_NDS32_TLS_TPOFF 102 #define R_NDS32_TLS_DESC 119 +/* LoongArch ELF Flags */ +#define EF_LARCH_ABI 0x07 +#define EF_LARCH_ABI_LP64D 0x03 + +/* LoongArch specific dynamic relocations */ +#define R_LARCH_NONE 0 +#define R_LARCH_32 1 +#define R_LARCH_64 2 +#define R_LARCH_RELATIVE 3 +#define R_LARCH_COPY 4 +#define R_LARCH_JUMP_SLOT 5 +#define R_LARCH_TLS_DTPMOD32 6 +#define R_LARCH_TLS_DTPMOD64 7 +#define R_LARCH_TLS_DTPREL32 8 +#define R_LARCH_TLS_DTPREL64 9 +#define R_LARCH_TLS_TPREL32 10 +#define R_LARCH_TLS_TPREL64 11 +#define R_LARCH_IRELATIVE 12 + +/* Reserved for future relocs that the dynamic linker must understand. */ + +/* used by the static linker for relocating .text. */ +#define R_LARCH_MARK_LA 20 +#define R_LARCH_MARK_PCREL 21 +#define R_LARCH_SOP_PUSH_PCREL 22 +#define R_LARCH_SOP_PUSH_ABSOLUTE 23 +#define R_LARCH_SOP_PUSH_DUP 24 +#define R_LARCH_SOP_PUSH_GPREL 25 +#define R_LARCH_SOP_PUSH_TLS_TPREL 26 +#define R_LARCH_SOP_PUSH_TLS_GOT 27 +#define R_LARCH_SOP_PUSH_TLS_GD 28 +#define R_LARCH_SOP_PUSH_PLT_PCREL 29 +#define R_LARCH_SOP_ASSERT 30 +#define R_LARCH_SOP_NOT 31 +#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 +#define R_LARCH_SOP_POP_32_U 46 + +/* used by the static linker for relocating non .text. */ +#define R_LARCH_ADD8 47 +#define R_LARCH_ADD16 48 +#define R_LARCH_ADD24 49 +#define R_LARCH_ADD32 50 +#define R_LARCH_ADD64 51 +#define R_LARCH_SUB8 52 +#define R_LARCH_SUB16 53 +#define R_LARCH_SUB24 54 +#define R_LARCH_SUB32 55 +#define R_LARCH_SUB64 56 +#define R_LARCH_GNU_VTINHERIT 57 +#define R_LARCH_GNU_VTENTRY 58 + + /* ARCompact/ARCv2 specific relocs. */ #define R_ARC_NONE 0x0 #define R_ARC_8 0x1 diff --git a/scripts/glibcelf.py b/scripts/glibcelf.py index 47f95d07ba..de0509130e 100644 --- a/scripts/glibcelf.py +++ b/scripts/glibcelf.py @@ -252,7 +252,8 @@ class Machine(_OpenIntEnum): EM_RISCV = 243 EM_BPF = 247 EM_CSKY = 252 - EM_NUM = 253 + EM_LOONGARCH = 258 + EM_NUM = 259 EM_ALPHA = 0x9026 class Et(_OpenIntEnum):