xref: /llvm-project/llvm/lib/Target/Mips/MCTargetDesc/MipsFixupKinds.h (revision 43ca0e9eb880dc211e94b2b2a05de715c321ef4e)
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