1#ifndef ELF_RELOC
2#error "ELF_RELOC must be defined"
3#endif
4
5// These types and values are from the LoongArch ELF psABI which can be found at
6// https://github.com/loongson/LoongArch-Documentation
7// and these definitions has been adopted by binutils (include/elf/loongarch.h).
8// The commit hash (main branch) we reference is:
9// 9b3bd9f4a497115913c22f1a2a47863798fbc02a
10
11ELF_RELOC(R_LARCH_NONE,                        0)
12ELF_RELOC(R_LARCH_32,                          1)
13ELF_RELOC(R_LARCH_64,                          2)
14ELF_RELOC(R_LARCH_RELATIVE,                    3)
15ELF_RELOC(R_LARCH_COPY,                        4)
16ELF_RELOC(R_LARCH_JUMP_SLOT,                   5)
17ELF_RELOC(R_LARCH_TLS_DTPMOD32,                6)
18ELF_RELOC(R_LARCH_TLS_DTPMOD64,                7)
19ELF_RELOC(R_LARCH_TLS_DTPREL32,                8)
20ELF_RELOC(R_LARCH_TLS_DTPREL64,                9)
21ELF_RELOC(R_LARCH_TLS_TPREL32,                10)
22ELF_RELOC(R_LARCH_TLS_TPREL64,                11)
23ELF_RELOC(R_LARCH_IRELATIVE,                  12)
24ELF_RELOC(R_LARCH_MARK_LA,                    20)
25ELF_RELOC(R_LARCH_MARK_PCREL,                 21)
26ELF_RELOC(R_LARCH_SOP_PUSH_PCREL,             22)
27ELF_RELOC(R_LARCH_SOP_PUSH_ABSOLUTE,          23)
28ELF_RELOC(R_LARCH_SOP_PUSH_DUP,               24)
29ELF_RELOC(R_LARCH_SOP_PUSH_GPREL,             25)
30ELF_RELOC(R_LARCH_SOP_PUSH_TLS_TPREL,         26)
31ELF_RELOC(R_LARCH_SOP_PUSH_TLS_GOT,           27)
32ELF_RELOC(R_LARCH_SOP_PUSH_TLS_GD,            28)
33ELF_RELOC(R_LARCH_SOP_PUSH_PLT_PCREL,         29)
34ELF_RELOC(R_LARCH_SOP_ASSERT,                 30)
35ELF_RELOC(R_LARCH_SOP_NOT,                    31)
36ELF_RELOC(R_LARCH_SOP_SUB,                    32)
37ELF_RELOC(R_LARCH_SOP_SL,                     33)
38ELF_RELOC(R_LARCH_SOP_SR,                     34)
39ELF_RELOC(R_LARCH_SOP_ADD,                    35)
40ELF_RELOC(R_LARCH_SOP_AND,                    36)
41ELF_RELOC(R_LARCH_SOP_IF_ELSE,                37)
42ELF_RELOC(R_LARCH_SOP_POP_32_S_10_5,          38)
43ELF_RELOC(R_LARCH_SOP_POP_32_U_10_12,         39)
44ELF_RELOC(R_LARCH_SOP_POP_32_S_10_12,         40)
45ELF_RELOC(R_LARCH_SOP_POP_32_S_10_16,         41)
46ELF_RELOC(R_LARCH_SOP_POP_32_S_10_16_S2,      42)
47ELF_RELOC(R_LARCH_SOP_POP_32_S_5_20,          43)
48ELF_RELOC(R_LARCH_SOP_POP_32_S_0_5_10_16_S2,  44)
49ELF_RELOC(R_LARCH_SOP_POP_32_S_0_10_10_16_S2, 45)
50ELF_RELOC(R_LARCH_SOP_POP_32_U,               46)
51ELF_RELOC(R_LARCH_ADD8,                       47)
52ELF_RELOC(R_LARCH_ADD16,                      48)
53ELF_RELOC(R_LARCH_ADD24,                      49)
54ELF_RELOC(R_LARCH_ADD32,                      50)
55ELF_RELOC(R_LARCH_ADD64,                      51)
56ELF_RELOC(R_LARCH_SUB8,                       52)
57ELF_RELOC(R_LARCH_SUB16,                      53)
58ELF_RELOC(R_LARCH_SUB24,                      54)
59ELF_RELOC(R_LARCH_SUB32,                      55)
60ELF_RELOC(R_LARCH_SUB64,                      56)
61ELF_RELOC(R_LARCH_GNU_VTINHERIT,              57)
62ELF_RELOC(R_LARCH_GNU_VTENTRY,                58)
63