Home | History | Annotate | Download | only in Mips
      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 #ifndef TARGET_MIPS_MIPSRELOCATIONFUNCTIONS_H_
     10 #define TARGET_MIPS_MIPSRELOCATIONFUNCTIONS_H_
     11 
     12 #define DECL_MIPS_APPLY_RELOC_FUNC(Name)                        \
     13   static MipsRelocator::Result Name(MipsRelocationInfo& pReloc, \
     14                                     MipsRelocator& pParent);
     15 
     16 #define DECL_MIPS_APPLY_RELOC_FUNCS   \
     17   DECL_MIPS_APPLY_RELOC_FUNC(none)    \
     18   DECL_MIPS_APPLY_RELOC_FUNC(abs32)   \
     19   DECL_MIPS_APPLY_RELOC_FUNC(rel26)   \
     20   DECL_MIPS_APPLY_RELOC_FUNC(hi16)    \
     21   DECL_MIPS_APPLY_RELOC_FUNC(lo16)    \
     22   DECL_MIPS_APPLY_RELOC_FUNC(gprel16) \
     23   DECL_MIPS_APPLY_RELOC_FUNC(got16)   \
     24   DECL_MIPS_APPLY_RELOC_FUNC(pc16)    \
     25   DECL_MIPS_APPLY_RELOC_FUNC(call16)  \
     26   DECL_MIPS_APPLY_RELOC_FUNC(gprel32) \
     27   DECL_MIPS_APPLY_RELOC_FUNC(abs64)   \
     28   DECL_MIPS_APPLY_RELOC_FUNC(gotdisp) \
     29   DECL_MIPS_APPLY_RELOC_FUNC(gotoff)  \
     30   DECL_MIPS_APPLY_RELOC_FUNC(gothi16) \
     31   DECL_MIPS_APPLY_RELOC_FUNC(gotlo16) \
     32   DECL_MIPS_APPLY_RELOC_FUNC(sub)     \
     33   DECL_MIPS_APPLY_RELOC_FUNC(jalr)    \
     34   DECL_MIPS_APPLY_RELOC_FUNC(pc32)    \
     35   DECL_MIPS_APPLY_RELOC_FUNC(pc18_s3) \
     36   DECL_MIPS_APPLY_RELOC_FUNC(pc21_s2) \
     37   DECL_MIPS_APPLY_RELOC_FUNC(pc19_s2) \
     38   DECL_MIPS_APPLY_RELOC_FUNC(pc26_s2) \
     39   DECL_MIPS_APPLY_RELOC_FUNC(pchi16) \
     40   DECL_MIPS_APPLY_RELOC_FUNC(pclo16) \
     41   DECL_MIPS_APPLY_RELOC_FUNC(tlshi16) \
     42   DECL_MIPS_APPLY_RELOC_FUNC(tlslo16) \
     43   DECL_MIPS_APPLY_RELOC_FUNC(tlsgot)  \
     44   DECL_MIPS_APPLY_RELOC_FUNC(unsupported)
     45 
     46 #define DECL_MIPS_APPLY_RELOC_FUNC_PTRS \
     47   { &none,          0, "R_MIPS_NONE",                  0}, \
     48   { &unsupported,   1, "R_MIPS_16",                   16}, \
     49   { &abs32,         2, "R_MIPS_32",                   32}, \
     50   { &unsupported,   3, "R_MIPS_REL32",                32}, \
     51   { &rel26,         4, "R_MIPS_26",                   26}, \
     52   { &hi16,          5, "R_MIPS_HI16",                 16}, \
     53   { &lo16,          6, "R_MIPS_LO16",                 16}, \
     54   { &gprel16,       7, "R_MIPS_GPREL16",              16}, \
     55   { &unsupported,   8, "R_MIPS_LITERAL",              16}, \
     56   { &got16,         9, "R_MIPS_GOT16",                16}, \
     57   { &pc16,         10, "R_MIPS_PC16",                 16}, \
     58   { &call16,       11, "R_MIPS_CALL16",               16}, \
     59   { &gprel32,      12, "R_MIPS_GPREL32",              32}, \
     60   { &none,         13, "R_MIPS_UNUSED1",               0}, \
     61   { &none,         14, "R_MIPS_UNUSED2",               0}, \
     62   { &none,         15, "R_MIPS_UNUSED3",               0}, \
     63   { &unsupported,  16, "R_MIPS_SHIFT5",               32}, \
     64   { &unsupported,  17, "R_MIPS_SHIFT6",               32}, \
     65   { &abs64,        18, "R_MIPS_64",                   64}, \
     66   { &gotdisp,      19, "R_MIPS_GOT_DISP",             16}, \
     67   { &gotdisp,      20, "R_MIPS_GOT_PAGE",             16}, \
     68   { &gotoff,       21, "R_MIPS_GOT_OFST",             16}, \
     69   { &gothi16,      22, "R_MIPS_GOT_HI16",             16}, \
     70   { &gotlo16,      23, "R_MIPS_GOT_LO16",             16}, \
     71   { &sub,          24, "R_MIPS_SUB",                  64}, \
     72   { &unsupported,  25, "R_MIPS_INSERT_A",              0}, \
     73   { &unsupported,  26, "R_MIPS_INSERT_B",              0}, \
     74   { &unsupported,  27, "R_MIPS_DELETE",                0}, \
     75   { &unsupported,  28, "R_MIPS_HIGHER",               16}, \
     76   { &unsupported,  29, "R_MIPS_HIGHEST",              16}, \
     77   { &gothi16,      30, "R_MIPS_CALL_HI16",            16}, \
     78   { &gotlo16,      31, "R_MIPS_CALL_LO16",            16}, \
     79   { &unsupported,  32, "R_MIPS_SCN_DISP",             32}, \
     80   { &unsupported,  33, "R_MIPS_REL16",                 0}, \
     81   { &unsupported,  34, "R_MIPS_ADD_IMMEDIATE",         0}, \
     82   { &unsupported,  35, "R_MIPS_PJUMP",                 0}, \
     83   { &unsupported,  36, "R_MIPS_RELGOT",                0}, \
     84   { &jalr,         37, "R_MIPS_JALR",                 32}, \
     85   { &unsupported,  38, "R_MIPS_TLS_DTPMOD32",         32}, \
     86   { &unsupported,  39, "R_MIPS_TLS_DTPREL32",         32}, \
     87   { &unsupported,  40, "R_MIPS_TLS_DTPMOD64",          0}, \
     88   { &unsupported,  41, "R_MIPS_TLS_DTPREL64",          0}, \
     89   { &tlsgot,       42, "R_MIPS_TLS_GD",               16}, \
     90   { &tlsgot,       43, "R_MIPS_TLS_LDM",              16}, \
     91   { &tlshi16,      44, "R_MIPS_TLS_DTPREL_HI16",      16}, \
     92   { &tlslo16,      45, "R_MIPS_TLS_DTPREL_LO16",      16}, \
     93   { &tlsgot,       46, "R_MIPS_TLS_GOTTPREL",         16}, \
     94   { &unsupported,  47, "R_MIPS_TLS_TPREL32",          32}, \
     95   { &unsupported,  48, "R_MIPS_TLS_TPREL64",           0}, \
     96   { &tlshi16,      49, "R_MIPS_TLS_TPREL_HI16",       16}, \
     97   { &tlslo16,      50, "R_MIPS_TLS_TPREL_LO16",       16}, \
     98   { &unsupported,  51, "R_MIPS_GLOB_DAT",              0}, \
     99   { &unsupported,  52, "",                             0}, \
    100   { &unsupported,  53, "",                             0}, \
    101   { &unsupported,  54, "",                             0}, \
    102   { &unsupported,  55, "",                             0}, \
    103   { &unsupported,  56, "",                             0}, \
    104   { &unsupported,  57, "",                             0}, \
    105   { &unsupported,  58, "",                             0}, \
    106   { &unsupported,  59, "",                             0}, \
    107   { &pc21_s2,      60, "R_MIPS_PC21_S2",              21}, \
    108   { &pc26_s2,      61, "R_MIPS_PC26_S2",              26}, \
    109   { &pc18_s3,      62, "R_MIPS_PC18_S3",              18}, \
    110   { &pc19_s2,      63, "R_MIPS_PC19_S2",              19}, \
    111   { &pchi16,       64, "R_MIPS_PCHI16",               16}, \
    112   { &pclo16,       65, "R_MIPS_PCLO16",               16}, \
    113   { &unsupported,  66, "",                             0}, \
    114   { &unsupported,  67, "",                             0}, \
    115   { &unsupported,  68, "",                             0}, \
    116   { &unsupported,  69, "",                             0}, \
    117   { &unsupported,  70, "",                             0}, \
    118   { &unsupported,  71, "",                             0}, \
    119   { &unsupported,  72, "",                             0}, \
    120   { &unsupported,  73, "",                             0}, \
    121   { &unsupported,  74, "",                             0}, \
    122   { &unsupported,  75, "",                             0}, \
    123   { &unsupported,  76, "",                             0}, \
    124   { &unsupported,  77, "",                             0}, \
    125   { &unsupported,  78, "",                             0}, \
    126   { &unsupported,  79, "",                             0}, \
    127   { &unsupported,  80, "",                             0}, \
    128   { &unsupported,  81, "",                             0}, \
    129   { &unsupported,  82, "",                             0}, \
    130   { &unsupported,  83, "",                             0}, \
    131   { &unsupported,  84, "",                             0}, \
    132   { &unsupported,  85, "",                             0}, \
    133   { &unsupported,  86, "",                             0}, \
    134   { &unsupported,  87, "",                             0}, \
    135   { &unsupported,  88, "",                             0}, \
    136   { &unsupported,  89, "",                             0}, \
    137   { &unsupported,  90, "",                             0}, \
    138   { &unsupported,  91, "",                             0}, \
    139   { &unsupported,  92, "",                             0}, \
    140   { &unsupported,  93, "",                             0}, \
    141   { &unsupported,  94, "",                             0}, \
    142   { &unsupported,  95, "",                             0}, \
    143   { &unsupported,  96, "",                             0}, \
    144   { &unsupported,  97, "",                             0}, \
    145   { &unsupported,  98, "",                             0}, \
    146   { &unsupported,  99, "",                             0}, \
    147   { &unsupported, 100, "R_MIPS16_26",                  0}, \
    148   { &unsupported, 101, "R_MIPS16_GPREL",               0}, \
    149   { &unsupported, 102, "R_MIPS16_GOT16",               0}, \
    150   { &unsupported, 103, "R_MIPS16_CALL16",              0}, \
    151   { &unsupported, 104, "R_MIPS16_HI16",                0}, \
    152   { &unsupported, 105, "R_MIPS16_LO16",                0}, \
    153   { &unsupported, 106, "R_MIPS16_TLS_GD",              0}, \
    154   { &unsupported, 107, "R_MIPS16_TLS_LDM",             0}, \
    155   { &unsupported, 108, "R_MIPS16_TLS_DTPREL_HI16",     0}, \
    156   { &unsupported, 109, "R_MIPS16_TLS_DTPREL_LO16",     0}, \
    157   { &unsupported, 110, "R_MIPS16_TLS_GOTTPREL",        0}, \
    158   { &unsupported, 111, "R_MIPS16_TLS_TPREL_HI16",      0}, \
    159   { &unsupported, 112, "R_MIPS16_TLS_TPREL_LO16",      0}, \
    160   { &unsupported, 113, "",                             0}, \
    161   { &unsupported, 114, "",                             0}, \
    162   { &unsupported, 115, "",                             0}, \
    163   { &unsupported, 116, "",                             0}, \
    164   { &unsupported, 117, "",                             0}, \
    165   { &unsupported, 118, "",                             0}, \
    166   { &unsupported, 119, "",                             0}, \
    167   { &unsupported, 120, "",                             0}, \
    168   { &unsupported, 121, "",                             0}, \
    169   { &unsupported, 122, "",                             0}, \
    170   { &unsupported, 123, "",                             0}, \
    171   { &unsupported, 124, "",                             0}, \
    172   { &unsupported, 125, "",                             0}, \
    173   { &unsupported, 126, "R_MIPS_COPY",                  0}, \
    174   { &unsupported, 127, "R_MIPS_JUMP_SLOT",             0}, \
    175   { &unsupported, 128, "",                             0}, \
    176   { &unsupported, 129, "",                             0}, \
    177   { &unsupported, 130, "",                             0}, \
    178   { &unsupported, 131, "",                             0}, \
    179   { &unsupported, 132, "",                             0}, \
    180   { &unsupported, 133, "R_MICROMIPS_26_S1",            0}, \
    181   { &unsupported, 134, "R_MICROMIPS_HI16",             0}, \
    182   { &unsupported, 135, "R_MICROMIPS_LO16",             0}, \
    183   { &unsupported, 136, "R_MICROMIPS_GPREL16",          0}, \
    184   { &unsupported, 137, "R_MICROMIPS_LITERAL",          0}, \
    185   { &unsupported, 138, "R_MICROMIPS_GOT16",            0}, \
    186   { &unsupported, 139, "R_MICROMIPS_PC7_S1",           0}, \
    187   { &unsupported, 140, "R_MICROMIPS_PC10_S1",          0}, \
    188   { &unsupported, 141, "R_MICROMIPS_PC16_S1",          0}, \
    189   { &unsupported, 142, "R_MICROMIPS_CALL16",           0}, \
    190   { &unsupported, 143, "R_MICROMIPS_GOT_DISP",         0}, \
    191   { &unsupported, 144, "R_MICROMIPS_GOT_PAGE",         0}, \
    192   { &unsupported, 145, "R_MICROMIPS_GOT_OFST",         0}, \
    193   { &unsupported, 146, "R_MICROMIPS_GOT_HI16",         0}, \
    194   { &unsupported, 147, "R_MICROMIPS_GOT_LO16",         0}, \
    195   { &unsupported, 148, "R_MICROMIPS_SUB",              0}, \
    196   { &unsupported, 149, "R_MICROMIPS_HIGHER",           0}, \
    197   { &unsupported, 150, "R_MICROMIPS_HIGHEST",          0}, \
    198   { &unsupported, 151, "R_MICROMIPS_CALL_HI16",        0}, \
    199   { &unsupported, 152, "R_MICROMIPS_CALL_LO16",        0}, \
    200   { &unsupported, 153, "R_MICROMIPS_SCN_DISP",         0}, \
    201   { &unsupported, 154, "R_MICROMIPS_JALR",             0}, \
    202   { &unsupported, 155, "R_MICROMIPS_HI0_LO16",         0}, \
    203   { &unsupported, 156, "",                             0}, \
    204   { &unsupported, 157, "",                             0}, \
    205   { &unsupported, 158, "",                             0}, \
    206   { &unsupported, 159, "",                             0}, \
    207   { &unsupported, 160, "",                             0}, \
    208   { &unsupported, 161, "",                             0}, \
    209   { &unsupported, 162, "R_MICROMIPS_TLS_GD",           0}, \
    210   { &unsupported, 163, "R_MICROMIPS_TLS_LDM",          0}, \
    211   { &unsupported, 164, "R_MICROMIPS_TLS_DTPREL_HI16",  0}, \
    212   { &unsupported, 165, "R_MICROMIPS_TLS_DTPREL_LO16",  0}, \
    213   { &unsupported, 166, "R_MICROMIPS_TLS_GOTTPREL",     0}, \
    214   { &unsupported, 167, "",                             0}, \
    215   { &unsupported, 168, "",                             0}, \
    216   { &unsupported, 169, "R_MICROMIPS_TLS_TPREL_HI16",   0}, \
    217   { &unsupported, 170, "R_MICROMIPS_TLS_TPREL_LO16",   0}, \
    218   { &unsupported, 171, "",                             0}, \
    219   { &unsupported, 172, "R_MICROMIPS_GPREL7_S2",        0}, \
    220   { &unsupported, 173, "R_MICROMIPS_PC23_S2",          0}, \
    221   { &unsupported, 174, "",                             0}, \
    222   { &unsupported, 175, "",                             0}, \
    223   { &unsupported, 176, "",                             0}, \
    224   { &unsupported, 177, "",                             0}, \
    225   { &unsupported, 178, "",                             0}, \
    226   { &unsupported, 179, "",                             0}, \
    227   { &unsupported, 180, "",                             0}, \
    228   { &unsupported, 181, "",                             0}, \
    229   { &unsupported, 182, "",                             0}, \
    230   { &unsupported, 183, "",                             0}, \
    231   { &unsupported, 184, "",                             0}, \
    232   { &unsupported, 185, "",                             0}, \
    233   { &unsupported, 186, "",                             0}, \
    234   { &unsupported, 187, "",                             0}, \
    235   { &unsupported, 188, "",                             0}, \
    236   { &unsupported, 189, "",                             0}, \
    237   { &unsupported, 190, "",                             0}, \
    238   { &unsupported, 191, "",                             0}, \
    239   { &unsupported, 192, "",                             0}, \
    240   { &unsupported, 193, "",                             0}, \
    241   { &unsupported, 194, "",                             0}, \
    242   { &unsupported, 195, "",                             0}, \
    243   { &unsupported, 196, "",                             0}, \
    244   { &unsupported, 197, "",                             0}, \
    245   { &unsupported, 198, "",                             0}, \
    246   { &unsupported, 199, "",                             0}, \
    247   { &unsupported, 200, "",                             0}, \
    248   { &unsupported, 201, "",                             0}, \
    249   { &unsupported, 202, "",                             0}, \
    250   { &unsupported, 203, "",                             0}, \
    251   { &unsupported, 204, "",                             0}, \
    252   { &unsupported, 205, "",                             0}, \
    253   { &unsupported, 206, "",                             0}, \
    254   { &unsupported, 207, "",                             0}, \
    255   { &unsupported, 208, "",                             0}, \
    256   { &unsupported, 209, "",                             0}, \
    257   { &unsupported, 210, "",                             0}, \
    258   { &unsupported, 211, "",                             0}, \
    259   { &unsupported, 212, "",                             0}, \
    260   { &unsupported, 213, "",                             0}, \
    261   { &unsupported, 214, "",                             0}, \
    262   { &unsupported, 215, "",                             0}, \
    263   { &unsupported, 216, "",                             0}, \
    264   { &unsupported, 217, "",                             0}, \
    265   { &unsupported, 218, "",                             0}, \
    266   { &unsupported, 219, "",                             0}, \
    267   { &unsupported, 220, "",                             0}, \
    268   { &unsupported, 221, "",                             0}, \
    269   { &unsupported, 222, "",                             0}, \
    270   { &unsupported, 223, "",                             0}, \
    271   { &unsupported, 224, "",                             0}, \
    272   { &unsupported, 225, "",                             0}, \
    273   { &unsupported, 226, "",                             0}, \
    274   { &unsupported, 227, "",                             0}, \
    275   { &unsupported, 228, "",                             0}, \
    276   { &unsupported, 229, "",                             0}, \
    277   { &unsupported, 230, "",                             0}, \
    278   { &unsupported, 231, "",                             0}, \
    279   { &unsupported, 232, "",                             0}, \
    280   { &unsupported, 233, "",                             0}, \
    281   { &unsupported, 234, "",                             0}, \
    282   { &unsupported, 235, "",                             0}, \
    283   { &unsupported, 236, "",                             0}, \
    284   { &unsupported, 237, "",                             0}, \
    285   { &unsupported, 238, "",                             0}, \
    286   { &unsupported, 239, "",                             0}, \
    287   { &unsupported, 240, "",                             0}, \
    288   { &unsupported, 241, "",                             0}, \
    289   { &unsupported, 242, "",                             0}, \
    290   { &unsupported, 243, "",                             0}, \
    291   { &unsupported, 244, "",                             0}, \
    292   { &unsupported, 245, "",                             0}, \
    293   { &unsupported, 246, "",                             0}, \
    294   { &unsupported, 247, "",                             0}, \
    295   { &pc32,        248, "R_MIPS_PC32",                 32}, \
    296   { &unsupported, 249, "",                             0}, \
    297   { &unsupported, 250, "R_MIPS_GNU_REL16_S2",          0}, \
    298   { &unsupported, 251, "",                             0}, \
    299   { &unsupported, 252, "",                             0}, \
    300   { &unsupported, 253, "R_MIPS_GNU_VTINHERIT",         0}, \
    301   { &unsupported, 254, "R_MIPS_GNU_VTENTRY",           0}
    302 
    303 #endif  // TARGET_MIPS_MIPSRELOCATIONFUNCTIONS_H_
    304