174aa025dSJia Liu //===-- MipsFixupKinds.h - Mips Specific Fixup Entries ----------*- C++ -*-===// 2769fc971SAkira Hatanaka // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6769fc971SAkira Hatanaka // 7769fc971SAkira Hatanaka //===----------------------------------------------------------------------===// 8769fc971SAkira Hatanaka 9a7c40ef0SBenjamin Kramer #ifndef LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSFIXUPKINDS_H 10a7c40ef0SBenjamin Kramer #define LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSFIXUPKINDS_H 11769fc971SAkira Hatanaka 12769fc971SAkira Hatanaka #include "llvm/MC/MCFixup.h" 13769fc971SAkira Hatanaka 14769fc971SAkira Hatanaka namespace llvm { 15769fc971SAkira Hatanaka namespace Mips { 1656b70de0SBruno Cardoso Lopes // Although most of the current fixup types reflect a unique relocation 1756b70de0SBruno Cardoso Lopes // one can have multiple fixup types for a given relocation and thus need 1856b70de0SBruno Cardoso Lopes // to be uniquely named. 1956b70de0SBruno Cardoso Lopes // 2060f1db05SDaniel Sanders // This table *must* be in the same order of 2156b70de0SBruno Cardoso Lopes // MCFixupKindInfo Infos[Mips::NumTargetFixupKinds] 2256b70de0SBruno Cardoso Lopes // in MipsAsmBackend.cpp. 2356b70de0SBruno Cardoso Lopes // 24769fc971SAkira Hatanaka enum Fixups { 2556b70de0SBruno Cardoso Lopes // Branch fixups resulting in R_MIPS_16. 26*43ca0e9eSFangrui Song fixup_Mips_16 = FirstTargetFixupKind, 27769fc971SAkira Hatanaka 2856b70de0SBruno Cardoso Lopes // Pure 32 bit data fixup resulting in - R_MIPS_32. 29769fc971SAkira Hatanaka fixup_Mips_32, 30769fc971SAkira Hatanaka 3156b70de0SBruno Cardoso Lopes // Full 32 bit data relative data fixup resulting in - R_MIPS_REL32. 32769fc971SAkira Hatanaka fixup_Mips_REL32, 33769fc971SAkira Hatanaka 3456b70de0SBruno Cardoso Lopes // Jump 26 bit fixup resulting in - R_MIPS_26. 35769fc971SAkira Hatanaka fixup_Mips_26, 36769fc971SAkira Hatanaka 3756b70de0SBruno Cardoso Lopes // Pure upper 16 bit fixup resulting in - R_MIPS_HI16. 38769fc971SAkira Hatanaka fixup_Mips_HI16, 39769fc971SAkira Hatanaka 4056b70de0SBruno Cardoso Lopes // Pure lower 16 bit fixup resulting in - R_MIPS_LO16. 41769fc971SAkira Hatanaka fixup_Mips_LO16, 42769fc971SAkira Hatanaka 4356b70de0SBruno Cardoso Lopes // 16 bit fixup for GP offest resulting in - R_MIPS_GPREL16. 44769fc971SAkira Hatanaka fixup_Mips_GPREL16, 45769fc971SAkira Hatanaka 4656b70de0SBruno Cardoso Lopes // 16 bit literal fixup resulting in - R_MIPS_LITERAL. 47769fc971SAkira Hatanaka fixup_Mips_LITERAL, 48769fc971SAkira Hatanaka 49fe98b2f5SDaniel Sanders // Symbol fixup resulting in - R_MIPS_GOT16. 50fe98b2f5SDaniel Sanders fixup_Mips_GOT, 51769fc971SAkira Hatanaka 5256b70de0SBruno Cardoso Lopes // PC relative branch fixup resulting in - R_MIPS_PC16. 53769fc971SAkira Hatanaka fixup_Mips_PC16, 54769fc971SAkira Hatanaka 5556b70de0SBruno Cardoso Lopes // resulting in - R_MIPS_CALL16. 56769fc971SAkira Hatanaka fixup_Mips_CALL16, 57769fc971SAkira Hatanaka 5856b70de0SBruno Cardoso Lopes // resulting in - R_MIPS_GPREL32. 59769fc971SAkira Hatanaka fixup_Mips_GPREL32, 60769fc971SAkira Hatanaka 6156b70de0SBruno Cardoso Lopes // resulting in - R_MIPS_SHIFT5. 62769fc971SAkira Hatanaka fixup_Mips_SHIFT5, 63769fc971SAkira Hatanaka 6456b70de0SBruno Cardoso Lopes // resulting in - R_MIPS_SHIFT6. 65769fc971SAkira Hatanaka fixup_Mips_SHIFT6, 66769fc971SAkira Hatanaka 6756b70de0SBruno Cardoso Lopes // Pure 64 bit data fixup resulting in - R_MIPS_64. 68769fc971SAkira Hatanaka fixup_Mips_64, 69769fc971SAkira Hatanaka 7056b70de0SBruno Cardoso Lopes // resulting in - R_MIPS_TLS_GD. 71769fc971SAkira Hatanaka fixup_Mips_TLSGD, 72769fc971SAkira Hatanaka 7356b70de0SBruno Cardoso Lopes // resulting in - R_MIPS_TLS_GOTTPREL. 74769fc971SAkira Hatanaka fixup_Mips_GOTTPREL, 75769fc971SAkira Hatanaka 7656b70de0SBruno Cardoso Lopes // resulting in - R_MIPS_TLS_TPREL_HI16. 77769fc971SAkira Hatanaka fixup_Mips_TPREL_HI, 78769fc971SAkira Hatanaka 7956b70de0SBruno Cardoso Lopes // resulting in - R_MIPS_TLS_TPREL_LO16. 80769fc971SAkira Hatanaka fixup_Mips_TPREL_LO, 81769fc971SAkira Hatanaka 82e2eed964SAkira Hatanaka // resulting in - R_MIPS_TLS_LDM. 83e2eed964SAkira Hatanaka fixup_Mips_TLSLDM, 84e2eed964SAkira Hatanaka 85e2eed964SAkira Hatanaka // resulting in - R_MIPS_TLS_DTPREL_HI16. 86e2eed964SAkira Hatanaka fixup_Mips_DTPREL_HI, 87e2eed964SAkira Hatanaka 88e2eed964SAkira Hatanaka // resulting in - R_MIPS_TLS_DTPREL_LO16. 89e2eed964SAkira Hatanaka fixup_Mips_DTPREL_LO, 90e2eed964SAkira Hatanaka 9156b70de0SBruno Cardoso Lopes // PC relative branch fixup resulting in - R_MIPS_PC16 92769fc971SAkira Hatanaka fixup_Mips_Branch_PCRel, 93769fc971SAkira Hatanaka 94b9f9de93SJack Carter // resulting in - R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 95a1d69f9eSSimon Atanasyan // R_MICROMIPS_GPREL16/R_MICROMIPS_SUB/R_MICROMIPS_HI16 96b9f9de93SJack Carter fixup_Mips_GPOFF_HI, 97a1d69f9eSSimon Atanasyan fixup_MICROMIPS_GPOFF_HI, 98b9f9de93SJack Carter 99b9f9de93SJack Carter // resulting in - R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 100a1d69f9eSSimon Atanasyan // R_MICROMIPS_GPREL16/R_MICROMIPS_SUB/R_MICROMIPS_LO16 101b9f9de93SJack Carter fixup_Mips_GPOFF_LO, 102a1d69f9eSSimon Atanasyan fixup_MICROMIPS_GPOFF_LO, 103b9f9de93SJack Carter 104b9f9de93SJack Carter // resulting in - R_MIPS_PAGE 105b9f9de93SJack Carter fixup_Mips_GOT_PAGE, 106b9f9de93SJack Carter 107b9f9de93SJack Carter // resulting in - R_MIPS_GOT_OFST 108b9f9de93SJack Carter fixup_Mips_GOT_OFST, 109b9f9de93SJack Carter 1105ddcfda8SJack Carter // resulting in - R_MIPS_GOT_DISP 1115ddcfda8SJack Carter fixup_Mips_GOT_DISP, 1125ddcfda8SJack Carter 1136be87bceSSimon Atanasyan // resulting in - R_MIPS_HIGHER/R_MICROMIPS_HIGHER 11484491abbSJack Carter fixup_Mips_HIGHER, 1156be87bceSSimon Atanasyan fixup_MICROMIPS_HIGHER, 11684491abbSJack Carter 1176be87bceSSimon Atanasyan // resulting in - R_MIPS_HIGHEST/R_MICROMIPS_HIGHEST 11884491abbSJack Carter fixup_Mips_HIGHEST, 1196be87bceSSimon Atanasyan fixup_MICROMIPS_HIGHEST, 12084491abbSJack Carter 121b05cb67bSJack Carter // resulting in - R_MIPS_GOT_HI16 122b05cb67bSJack Carter fixup_Mips_GOT_HI16, 123b05cb67bSJack Carter 124b05cb67bSJack Carter // resulting in - R_MIPS_GOT_LO16 125b05cb67bSJack Carter fixup_Mips_GOT_LO16, 126b05cb67bSJack Carter 127b05cb67bSJack Carter // resulting in - R_MIPS_CALL_HI16 128b05cb67bSJack Carter fixup_Mips_CALL_HI16, 129b05cb67bSJack Carter 130b05cb67bSJack Carter // resulting in - R_MIPS_CALL_LO16 131b05cb67bSJack Carter fixup_Mips_CALL_LO16, 132b05cb67bSJack Carter 133a5acdcf9SZoran Jovanovic // resulting in - R_MIPS_PC18_S3 134a5acdcf9SZoran Jovanovic fixup_MIPS_PC18_S3, 135a5acdcf9SZoran Jovanovic 136b9c07f3bSZoran Jovanovic // resulting in - R_MIPS_PC19_S2 137b9c07f3bSZoran Jovanovic fixup_MIPS_PC19_S2, 138b9c07f3bSZoran Jovanovic 13910e06da0SZoran Jovanovic // resulting in - R_MIPS_PC21_S2 14010e06da0SZoran Jovanovic fixup_MIPS_PC21_S2, 14110e06da0SZoran Jovanovic 14210e06da0SZoran Jovanovic // resulting in - R_MIPS_PC26_S2 14310e06da0SZoran Jovanovic fixup_MIPS_PC26_S2, 14410e06da0SZoran Jovanovic 145b355e8f6SZoran Jovanovic // resulting in - R_MIPS_PCHI16 146b355e8f6SZoran Jovanovic fixup_MIPS_PCHI16, 147b355e8f6SZoran Jovanovic 148b355e8f6SZoran Jovanovic // resulting in - R_MIPS_PCLO16 149b355e8f6SZoran Jovanovic fixup_MIPS_PCLO16, 150b355e8f6SZoran Jovanovic 151507e084aSZoran Jovanovic // resulting in - R_MICROMIPS_26_S1 152507e084aSZoran Jovanovic fixup_MICROMIPS_26_S1, 153507e084aSZoran Jovanovic 154e7ae8af8SZoran Jovanovic // resulting in - R_MICROMIPS_HI16 155e7ae8af8SZoran Jovanovic fixup_MICROMIPS_HI16, 156e7ae8af8SZoran Jovanovic 157e7ae8af8SZoran Jovanovic // resulting in - R_MICROMIPS_LO16 158e7ae8af8SZoran Jovanovic fixup_MICROMIPS_LO16, 159e7ae8af8SZoran Jovanovic 160e7ae8af8SZoran Jovanovic // resulting in - R_MICROMIPS_GOT16 161e7ae8af8SZoran Jovanovic fixup_MICROMIPS_GOT16, 162e7ae8af8SZoran Jovanovic 1639761e96bSJozef Kolek // resulting in - R_MICROMIPS_PC7_S1 1649761e96bSJozef Kolek fixup_MICROMIPS_PC7_S1, 1659761e96bSJozef Kolek 1665cfebddeSJozef Kolek // resulting in - R_MICROMIPS_PC10_S1 1675cfebddeSJozef Kolek fixup_MICROMIPS_PC10_S1, 1685cfebddeSJozef Kolek 1698a80aa76SZoran Jovanovic // resulting in - R_MICROMIPS_PC16_S1 1708a80aa76SZoran Jovanovic fixup_MICROMIPS_PC16_S1, 1718a80aa76SZoran Jovanovic 17202b70030SZoran Jovanovic // resulting in - R_MICROMIPS_PC26_S1 17302b70030SZoran Jovanovic fixup_MICROMIPS_PC26_S1, 17402b70030SZoran Jovanovic 1756764fa78SZoran Jovanovic // resulting in - R_MICROMIPS_PC19_S2 1766764fa78SZoran Jovanovic fixup_MICROMIPS_PC19_S2, 1776764fa78SZoran Jovanovic 1788e366822SZoran Jovanovic // resulting in - R_MICROMIPS_PC18_S3 1798e366822SZoran Jovanovic fixup_MICROMIPS_PC18_S3, 1808e366822SZoran Jovanovic 1815f94cedeSZoran Jovanovic // resulting in - R_MICROMIPS_PC21_S1 1825f94cedeSZoran Jovanovic fixup_MICROMIPS_PC21_S1, 1835f94cedeSZoran Jovanovic 184e7ae8af8SZoran Jovanovic // resulting in - R_MICROMIPS_CALL16 185e7ae8af8SZoran Jovanovic fixup_MICROMIPS_CALL16, 186e7ae8af8SZoran Jovanovic 187e7ae8af8SZoran Jovanovic // resulting in - R_MICROMIPS_GOT_DISP 188e7ae8af8SZoran Jovanovic fixup_MICROMIPS_GOT_DISP, 189e7ae8af8SZoran Jovanovic 190e7ae8af8SZoran Jovanovic // resulting in - R_MICROMIPS_GOT_PAGE 191e7ae8af8SZoran Jovanovic fixup_MICROMIPS_GOT_PAGE, 192e7ae8af8SZoran Jovanovic 193e7ae8af8SZoran Jovanovic // resulting in - R_MICROMIPS_GOT_OFST 194e7ae8af8SZoran Jovanovic fixup_MICROMIPS_GOT_OFST, 195e7ae8af8SZoran Jovanovic 19669be811aSZoran Jovanovic // resulting in - R_MICROMIPS_TLS_GD 19769be811aSZoran Jovanovic fixup_MICROMIPS_TLS_GD, 19869be811aSZoran Jovanovic 19969be811aSZoran Jovanovic // resulting in - R_MICROMIPS_TLS_LDM 20069be811aSZoran Jovanovic fixup_MICROMIPS_TLS_LDM, 20169be811aSZoran Jovanovic 202e7ae8af8SZoran Jovanovic // resulting in - R_MICROMIPS_TLS_DTPREL_HI16 203e7ae8af8SZoran Jovanovic fixup_MICROMIPS_TLS_DTPREL_HI16, 204e7ae8af8SZoran Jovanovic 205e7ae8af8SZoran Jovanovic // resulting in - R_MICROMIPS_TLS_DTPREL_LO16 206e7ae8af8SZoran Jovanovic fixup_MICROMIPS_TLS_DTPREL_LO16, 207e7ae8af8SZoran Jovanovic 2083979f438SSimon Atanasyan // resulting in - R_MICROMIPS_TLS_GOTTPREL. 2093979f438SSimon Atanasyan fixup_MICROMIPS_GOTTPREL, 2103979f438SSimon Atanasyan 211e7ae8af8SZoran Jovanovic // resulting in - R_MICROMIPS_TLS_TPREL_HI16 212e7ae8af8SZoran Jovanovic fixup_MICROMIPS_TLS_TPREL_HI16, 213e7ae8af8SZoran Jovanovic 214e7ae8af8SZoran Jovanovic // resulting in - R_MICROMIPS_TLS_TPREL_LO16 215e7ae8af8SZoran Jovanovic fixup_MICROMIPS_TLS_TPREL_LO16, 216e7ae8af8SZoran Jovanovic 2173feeb9c8SDaniel Sanders // resulting in - R_MIPS_SUB/R_MICROMIPS_SUB 2183feeb9c8SDaniel Sanders fixup_Mips_SUB, 2193feeb9c8SDaniel Sanders fixup_MICROMIPS_SUB, 2203feeb9c8SDaniel Sanders 22164ad1cf2SVladimir Stefanovic // resulting in - R_MIPS_JALR/R_MICROMIPS_JALR 22264ad1cf2SVladimir Stefanovic fixup_Mips_JALR, 22364ad1cf2SVladimir Stefanovic fixup_MICROMIPS_JALR, 22464ad1cf2SVladimir Stefanovic 225769fc971SAkira Hatanaka // Marker 226769fc971SAkira Hatanaka LastTargetFixupKind, 227769fc971SAkira Hatanaka NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind 228769fc971SAkira Hatanaka }; 229769fc971SAkira Hatanaka } // namespace Mips 2302b7a1ff7SBill Wendling } // namespace llvm 231769fc971SAkira Hatanaka 232769fc971SAkira Hatanaka 233a7c40ef0SBenjamin Kramer #endif 234