1//===- MipsRelocationFunction.h -------------------------------------------===//
2//
3//                     The MCLinker Project
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#define DECL_MIPS_APPLY_RELOC_FUNC(Name) \
11static MipsRelocator::Result Name(Relocation& pEntry, \
12                                  MipsRelocator& pParent);
13
14#define DECL_MIPS_APPLY_RELOC_FUNCS \
15DECL_MIPS_APPLY_RELOC_FUNC(none) \
16DECL_MIPS_APPLY_RELOC_FUNC(abs32) \
17DECL_MIPS_APPLY_RELOC_FUNC(hi16) \
18DECL_MIPS_APPLY_RELOC_FUNC(lo16) \
19DECL_MIPS_APPLY_RELOC_FUNC(got16) \
20DECL_MIPS_APPLY_RELOC_FUNC(call16) \
21DECL_MIPS_APPLY_RELOC_FUNC(gprel32) \
22DECL_MIPS_APPLY_RELOC_FUNC(gothi16) \
23DECL_MIPS_APPLY_RELOC_FUNC(gotlo16)
24
25#define DECL_MIPS_APPLY_RELOC_FUNC_PTRS \
26  { &none,     0, "R_MIPS_NONE",             0}, \
27  { &none,     1, "R_MIPS_16",              16}, \
28  { &abs32,    2, "R_MIPS_32",              32}, \
29  { &none,     3, "R_MIPS_REL32",           32}, \
30  { &none,     4, "R_MIPS_26",              64}, \
31  { &hi16,     5, "R_MIPS_HI16",            16}, \
32  { &lo16,     6, "R_MIPS_LO16",            16}, \
33  { &none,     7, "R_MIPS_GPREL16",         16}, \
34  { &none,     8, "R_MIPS_LITERAL",         16}, \
35  { &got16,    9, "R_MIPS_GOT16",           16}, \
36  { &none,    10, "R_MIPS_PC16",            16}, \
37  { &call16,  11, "R_MIPS_CALL16",          16}, \
38  { &gprel32, 12, "R_MIPS_GPREL32",         32}, \
39  { &none,    13, "R_MIPS_UNUSED1",          0}, \
40  { &none,    14, "R_MIPS_UNUSED2",          0}, \
41  { &none,    15, "R_MIPS_UNUSED3",          0}, \
42  { &none,    16, "R_MIPS_SHIFT5",          32}, \
43  { &none,    17, "R_MIPS_SHIFT6",          32}, \
44  { &none,    18, "R_MIPS_64",              64}, \
45  { &none,    19, "R_MIPS_GOT_DISP",        16}, \
46  { &none,    20, "R_MIPS_GOT_PAGE",        16}, \
47  { &none,    21, "R_MIPS_GOT_OFST",        16}, \
48  { &gothi16, 22, "R_MIPS_GOT_HI16",        16}, \
49  { &gotlo16, 23, "R_MIPS_GOT_LO16",        16}, \
50  { &none,    24, "R_MIPS_SUB",             64}, \
51  { &none,    25, "R_MIPS_INSERT_A",         0}, \
52  { &none,    26, "R_MIPS_INSERT_B",         0}, \
53  { &none,    27, "R_MIPS_DELETE",           0}, \
54  { &none,    28, "R_MIPS_HIGHER",          16}, \
55  { &none,    29, "R_MIPS_HIGHEST",         16}, \
56  { &gothi16, 30, "R_MIPS_CALL_HI16",       16}, \
57  { &gotlo16, 31, "R_MIPS_CALL_LO16",       16}, \
58  { &none,    32, "R_MIPS_SCN_DISP",        32}, \
59  { &none,    33, "R_MIPS_REL16",            0}, \
60  { &none,    34, "R_MIPS_ADD_IMMEDIATE",    0}, \
61  { &none,    35, "R_MIPS_PJUMP",            0}, \
62  { &none,    36, "R_MIPS_RELGOT",           0}, \
63  { &none,    37, "R_MIPS_JALR",            32}, \
64  { &none,    38, "R_MIPS_TLS_DTPMOD32",    32}, \
65  { &none,    39, "R_MIPS_TLS_DTPREL32",    32}, \
66  { &none,    40, "R_MIPS_TLS_DTPMOD64",     0}, \
67  { &none,    41, "R_MIPS_TLS_DTPREL64",     0}, \
68  { &none,    42, "R_MIPS_TLS_GD",          16}, \
69  { &none,    43, "R_MIPS_TLS_LDM",         16}, \
70  { &none,    44, "R_MIPS_TLS_DTPREL_HI16", 16}, \
71  { &none,    45, "R_MIPS_TLS_DTPREL_LO16", 16}, \
72  { &none,    46, "R_MIPS_TLS_GOTTPREL",    16}, \
73  { &none,    47, "R_MIPS_TLS_TPREL32",     32}, \
74  { &none,    48, "R_MIPS_TLS_TPREL64",      0}, \
75  { &none,    49, "R_MIPS_TLS_TPREL_HI16",  16}, \
76  { &none,    50, "R_MIPS_TLS_TPREL_LO16",  16}, \
77  { &none,    51, "R_MIPS_GLOB_DAT",         0}
78