15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- MipsRelocationFunction.h -------------------------------------------===//
25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//                     The MCLinker Project
45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// This file is distributed under the University of Illinois Open Source
65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// License. See LICENSE.TXT for details.
75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===----------------------------------------------------------------------===//
95460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#define DECL_MIPS_APPLY_RELOC_FUNC(Name) \
115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaostatic MipsRelocationFactory::Result Name(Relocation& pEntry, \
125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao                                          const MCLDInfo& pLDInfo, \
135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao                                          MipsRelocationFactory& pParent);
145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#define DECL_MIPS_APPLY_RELOC_FUNCS \
165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoDECL_MIPS_APPLY_RELOC_FUNC(none) \
175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoDECL_MIPS_APPLY_RELOC_FUNC(abs32) \
185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoDECL_MIPS_APPLY_RELOC_FUNC(hi16) \
195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoDECL_MIPS_APPLY_RELOC_FUNC(lo16) \
205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoDECL_MIPS_APPLY_RELOC_FUNC(got16) \
215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoDECL_MIPS_APPLY_RELOC_FUNC(call16) \
225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoDECL_MIPS_APPLY_RELOC_FUNC(gprel32)
235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#define DECL_MIPS_APPLY_RELOC_FUNC_PTRS \
255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,     0, "R_MIPS_NONE"            }, \
265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,     1, "R_MIPS_16"              }, \
275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &abs32,    2, "R_MIPS_32"              }, \
285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,     3, "R_MIPS_REL32"           }, \
295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,     4, "R_MIPS_26"              }, \
305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &hi16,     5, "R_MIPS_HI16"            }, \
315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &lo16,     6, "R_MIPS_LO16"            }, \
325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,     7, "R_MIPS_GPREL16"         }, \
335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,     8, "R_MIPS_LITERAL"         }, \
345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &got16,    9, "R_MIPS_GOT16"           }, \
355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    10, "R_MIPS_PC16"            }, \
365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &call16,  11, "R_MIPS_CALL16"          }, \
375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &gprel32, 12, "R_MIPS_GPREL32"         }, \
385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    13, "R_MIPS_UNUSED1"         }, \
395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    14, "R_MIPS_UNUSED2"         }, \
405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    15, "R_MIPS_UNUSED3"         }, \
415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    16, "R_MIPS_SHIFT5"          }, \
425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    17, "R_MIPS_SHIFT6"          }, \
435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    18, "R_MIPS_64"              }, \
445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    19, "R_MIPS_GOT_DISP"        }, \
455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    20, "R_MIPS_GOT_PAGE"        }, \
465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    21, "R_MIPS_GOT_OFST"        }, \
475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    22, "R_MIPS_GOT_HI16"        }, \
485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    23, "R_MIPS_GOT_LO16"        }, \
495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    24, "R_MIPS_SUB"             }, \
505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    25, "R_MIPS_INSERT_A"        }, \
515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    26, "R_MIPS_INSERT_B"        }, \
525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    27, "R_MIPS_DELETE"          }, \
535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    28, "R_MIPS_HIGHER"          }, \
545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    29, "R_MIPS_HIGHEST"         }, \
555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    30, "R_MIPS_CALL_HI16"       }, \
565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    31, "R_MIPS_CALL_LO16"       }, \
575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    32, "R_MIPS_SCN_DISP"        }, \
585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    33, "R_MIPS_REL16"           }, \
595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    34, "R_MIPS_ADD_IMMEDIATE"   }, \
605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    35, "R_MIPS_PJUMP"           }, \
615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    36, "R_MIPS_RELGOT"          }, \
625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    37, "R_MIPS_JALR"            }, \
635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    38, "R_MIPS_TLS_DTPMOD32"    }, \
645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    39, "R_MIPS_TLS_DTPREL32"    }, \
655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    40, "R_MIPS_TLS_DTPMOD64"    }, \
665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    41, "R_MIPS_TLS_DTPREL64"    }, \
675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    42, "R_MIPS_TLS_GD"          }, \
685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    43, "R_MIPS_TLS_LDM"         }, \
695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    44, "R_MIPS_TLS_DTPREL_HI16" }, \
705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    45, "R_MIPS_TLS_DTPREL_LO16" }, \
715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    46, "R_MIPS_TLS_GOTTPREL"    }, \
725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    47, "R_MIPS_TLS_TPREL32"     }, \
735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    48, "R_MIPS_TLS_TPREL64"     }, \
745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    49, "R_MIPS_TLS_TPREL_HI16"  }, \
755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    50, "R_MIPS_TLS_TPREL_LO16"  }, \
765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { &none,    51, "R_MIPS_GLOB_DAT"        }
77