| 1 | //===-- MipsFixupKinds.h - Mips Specific Fixup Entries ----------*- C++ -*-===// |
| 2 | // |
| 3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| 4 | // See https://llvm.org/LICENSE.txt for license information. |
| 5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| 6 | // |
| 7 | //===----------------------------------------------------------------------===// |
| 8 | |
| 9 | #ifndef LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSFIXUPKINDS_H |
| 10 | #define LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSFIXUPKINDS_H |
| 11 | |
| 12 | #include "llvm/MC/MCFixup.h" |
| 13 | |
| 14 | namespace llvm { |
| 15 | namespace Mips { |
| 16 | // Although most of the current fixup types reflect a unique relocation |
| 17 | // one can have multiple fixup types for a given relocation and thus need |
| 18 | // to be uniquely named. |
| 19 | // |
| 20 | // This table *must* be in the same order of |
| 21 | // MCFixupKindInfo Infos[Mips::NumTargetFixupKinds] |
| 22 | // in MipsAsmBackend.cpp. |
| 23 | // |
| 24 | enum Fixups { |
| 25 | // Branch fixups resulting in R_MIPS_16. |
| 26 | fixup_Mips_16 = FirstTargetFixupKind, |
| 27 | |
| 28 | // Pure 32 bit data fixup resulting in - R_MIPS_32. |
| 29 | fixup_Mips_32, |
| 30 | |
| 31 | // Full 32 bit data relative data fixup resulting in - R_MIPS_REL32. |
| 32 | fixup_Mips_REL32, |
| 33 | |
| 34 | fixup_Mips_GPREL32, // R_MIPS_GPREL32 |
| 35 | fixup_Mips_DTPREL32, // R_MIPS_TLS_DTPREL32 |
| 36 | fixup_Mips_DTPREL64, // R_MIPS_TLS_DTPREL64 |
| 37 | fixup_Mips_TPREL32, // R_MIPS_TLS_TPREL32 |
| 38 | fixup_Mips_TPREL64, // R_MIPS_TLS_TPREL64 |
| 39 | |
| 40 | // Jump 26 bit fixup resulting in - R_MIPS_26. |
| 41 | fixup_Mips_26, |
| 42 | |
| 43 | // Pure upper 16 bit fixup resulting in - R_MIPS_HI16. |
| 44 | fixup_Mips_HI16, |
| 45 | |
| 46 | // Pure lower 16 bit fixup resulting in - R_MIPS_LO16. |
| 47 | fixup_Mips_LO16, |
| 48 | |
| 49 | // 16-bit fixup that must be resolved. |
| 50 | fixup_Mips_AnyImm16, |
| 51 | |
| 52 | // 16 bit fixup for GP offest resulting in - R_MIPS_GPREL16. |
| 53 | fixup_Mips_GPREL16, |
| 54 | |
| 55 | // 16 bit literal fixup resulting in - R_MIPS_LITERAL. |
| 56 | fixup_Mips_LITERAL, |
| 57 | |
| 58 | // Symbol fixup resulting in - R_MIPS_GOT16. |
| 59 | fixup_Mips_GOT, |
| 60 | |
| 61 | // PC relative branch fixup resulting in - R_MIPS_PC16. |
| 62 | fixup_Mips_PC16, |
| 63 | |
| 64 | // resulting in - R_MIPS_CALL16. |
| 65 | fixup_Mips_CALL16, |
| 66 | |
| 67 | // resulting in - R_MIPS_SHIFT5. |
| 68 | fixup_Mips_SHIFT5, |
| 69 | |
| 70 | // resulting in - R_MIPS_SHIFT6. |
| 71 | fixup_Mips_SHIFT6, |
| 72 | |
| 73 | // Pure 64 bit data fixup resulting in - R_MIPS_64. |
| 74 | fixup_Mips_64, |
| 75 | |
| 76 | // resulting in - R_MIPS_TLS_GD. |
| 77 | fixup_Mips_TLSGD, |
| 78 | |
| 79 | // resulting in - R_MIPS_TLS_GOTTPREL. |
| 80 | fixup_Mips_GOTTPREL, |
| 81 | |
| 82 | // resulting in - R_MIPS_TLS_TPREL_HI16. |
| 83 | fixup_Mips_TPREL_HI, |
| 84 | |
| 85 | // resulting in - R_MIPS_TLS_TPREL_LO16. |
| 86 | fixup_Mips_TPREL_LO, |
| 87 | |
| 88 | // resulting in - R_MIPS_TLS_LDM. |
| 89 | fixup_Mips_TLSLDM, |
| 90 | |
| 91 | // resulting in - R_MIPS_TLS_DTPREL_HI16. |
| 92 | fixup_Mips_DTPREL_HI, |
| 93 | |
| 94 | // resulting in - R_MIPS_TLS_DTPREL_LO16. |
| 95 | fixup_Mips_DTPREL_LO, |
| 96 | |
| 97 | // PC relative branch fixup resulting in - R_MIPS_PC16 |
| 98 | fixup_Mips_Branch_PCRel, |
| 99 | |
| 100 | // resulting in - R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 |
| 101 | // R_MICROMIPS_GPREL16/R_MICROMIPS_SUB/R_MICROMIPS_HI16 |
| 102 | fixup_Mips_GPOFF_HI, |
| 103 | fixup_MICROMIPS_GPOFF_HI, |
| 104 | |
| 105 | // resulting in - R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 |
| 106 | // R_MICROMIPS_GPREL16/R_MICROMIPS_SUB/R_MICROMIPS_LO16 |
| 107 | fixup_Mips_GPOFF_LO, |
| 108 | fixup_MICROMIPS_GPOFF_LO, |
| 109 | |
| 110 | // resulting in - R_MIPS_PAGE |
| 111 | fixup_Mips_GOT_PAGE, |
| 112 | |
| 113 | // resulting in - R_MIPS_GOT_OFST |
| 114 | fixup_Mips_GOT_OFST, |
| 115 | |
| 116 | // resulting in - R_MIPS_GOT_DISP |
| 117 | fixup_Mips_GOT_DISP, |
| 118 | |
| 119 | // resulting in - R_MIPS_HIGHER/R_MICROMIPS_HIGHER |
| 120 | fixup_Mips_HIGHER, |
| 121 | fixup_MICROMIPS_HIGHER, |
| 122 | |
| 123 | // resulting in - R_MIPS_HIGHEST/R_MICROMIPS_HIGHEST |
| 124 | fixup_Mips_HIGHEST, |
| 125 | fixup_MICROMIPS_HIGHEST, |
| 126 | |
| 127 | // resulting in - R_MIPS_GOT_HI16 |
| 128 | fixup_Mips_GOT_HI16, |
| 129 | |
| 130 | // resulting in - R_MIPS_GOT_LO16 |
| 131 | fixup_Mips_GOT_LO16, |
| 132 | |
| 133 | // resulting in - R_MIPS_CALL_HI16 |
| 134 | fixup_Mips_CALL_HI16, |
| 135 | |
| 136 | // resulting in - R_MIPS_CALL_LO16 |
| 137 | fixup_Mips_CALL_LO16, |
| 138 | |
| 139 | // resulting in - R_MIPS_PC18_S3 |
| 140 | fixup_MIPS_PC18_S3, |
| 141 | |
| 142 | // resulting in - R_MIPS_PC19_S2 |
| 143 | fixup_MIPS_PC19_S2, |
| 144 | |
| 145 | // resulting in - R_MIPS_PC21_S2 |
| 146 | fixup_MIPS_PC21_S2, |
| 147 | |
| 148 | // resulting in - R_MIPS_PC26_S2 |
| 149 | fixup_MIPS_PC26_S2, |
| 150 | |
| 151 | // resulting in - R_MIPS_PCHI16 |
| 152 | fixup_MIPS_PCHI16, |
| 153 | |
| 154 | // resulting in - R_MIPS_PCLO16 |
| 155 | fixup_MIPS_PCLO16, |
| 156 | |
| 157 | // resulting in - R_MICROMIPS_26_S1 |
| 158 | fixup_MICROMIPS_26_S1, |
| 159 | |
| 160 | // resulting in - R_MICROMIPS_HI16 |
| 161 | fixup_MICROMIPS_HI16, |
| 162 | |
| 163 | // resulting in - R_MICROMIPS_LO16 |
| 164 | fixup_MICROMIPS_LO16, |
| 165 | |
| 166 | // resulting in - R_MICROMIPS_GOT16 |
| 167 | fixup_MICROMIPS_GOT16, |
| 168 | |
| 169 | // resulting in - R_MICROMIPS_PC7_S1 |
| 170 | fixup_MICROMIPS_PC7_S1, |
| 171 | |
| 172 | // resulting in - R_MICROMIPS_PC10_S1 |
| 173 | fixup_MICROMIPS_PC10_S1, |
| 174 | |
| 175 | // resulting in - R_MICROMIPS_PC16_S1 |
| 176 | fixup_MICROMIPS_PC16_S1, |
| 177 | |
| 178 | // resulting in - R_MICROMIPS_PC26_S1 |
| 179 | fixup_MICROMIPS_PC26_S1, |
| 180 | |
| 181 | // resulting in - R_MICROMIPS_PC19_S2 |
| 182 | fixup_MICROMIPS_PC19_S2, |
| 183 | |
| 184 | // resulting in - R_MICROMIPS_PC18_S3 |
| 185 | fixup_MICROMIPS_PC18_S3, |
| 186 | |
| 187 | // resulting in - R_MICROMIPS_PC21_S1 |
| 188 | fixup_MICROMIPS_PC21_S1, |
| 189 | |
| 190 | // resulting in - R_MICROMIPS_CALL16 |
| 191 | fixup_MICROMIPS_CALL16, |
| 192 | |
| 193 | // resulting in - R_MICROMIPS_GOT_DISP |
| 194 | fixup_MICROMIPS_GOT_DISP, |
| 195 | |
| 196 | // resulting in - R_MICROMIPS_GOT_PAGE |
| 197 | fixup_MICROMIPS_GOT_PAGE, |
| 198 | |
| 199 | // resulting in - R_MICROMIPS_GOT_OFST |
| 200 | fixup_MICROMIPS_GOT_OFST, |
| 201 | |
| 202 | // resulting in - R_MICROMIPS_TLS_GD |
| 203 | fixup_MICROMIPS_TLS_GD, |
| 204 | |
| 205 | // resulting in - R_MICROMIPS_TLS_LDM |
| 206 | fixup_MICROMIPS_TLS_LDM, |
| 207 | |
| 208 | // resulting in - R_MICROMIPS_TLS_DTPREL_HI16 |
| 209 | fixup_MICROMIPS_TLS_DTPREL_HI16, |
| 210 | |
| 211 | // resulting in - R_MICROMIPS_TLS_DTPREL_LO16 |
| 212 | fixup_MICROMIPS_TLS_DTPREL_LO16, |
| 213 | |
| 214 | // resulting in - R_MICROMIPS_TLS_GOTTPREL. |
| 215 | fixup_MICROMIPS_GOTTPREL, |
| 216 | |
| 217 | // resulting in - R_MICROMIPS_TLS_TPREL_HI16 |
| 218 | fixup_MICROMIPS_TLS_TPREL_HI16, |
| 219 | |
| 220 | // resulting in - R_MICROMIPS_TLS_TPREL_LO16 |
| 221 | fixup_MICROMIPS_TLS_TPREL_LO16, |
| 222 | |
| 223 | // resulting in - R_MIPS_SUB/R_MICROMIPS_SUB |
| 224 | fixup_Mips_SUB, |
| 225 | fixup_MICROMIPS_SUB, |
| 226 | |
| 227 | // resulting in - R_MIPS_JALR/R_MICROMIPS_JALR |
| 228 | fixup_Mips_JALR, |
| 229 | fixup_MICROMIPS_JALR, |
| 230 | |
| 231 | // Marker |
| 232 | LastTargetFixupKind, |
| 233 | NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind |
| 234 | }; |
| 235 | } // namespace Mips |
| 236 | } // namespace llvm |
| 237 | |
| 238 | #endif |
| 239 | |