@@ -132,175 +132,42 @@ LoongArchMCCodeEmitter::getExprOpValue(const MCInst &MI, const MCOperand &MO,
132132 unsigned FixupKind = LoongArch::fixup_loongarch_invalid;
133133 if (Kind == MCExpr::Target) {
134134 const LoongArchMCExpr *LAExpr = cast<LoongArchMCExpr>(Expr);
135-
135+ FixupKind = LAExpr-> getSpecifier ();
136136 RelaxCandidate = LAExpr->getRelaxHint ();
137- switch (LAExpr->getSpecifier ()) {
137+ switch (uint16_t ( LAExpr->getSpecifier () )) {
138138 case LoongArchMCExpr::VK_None:
139139 llvm_unreachable (" Unhandled fixup kind!" );
140- case LoongArchMCExpr::VK_TLS_LE_ADD_R :
141- llvm_unreachable (" VK_TLS_LE_ADD_R should not represent an "
140+ case ELF::R_LARCH_TLS_LE_ADD_R :
141+ llvm_unreachable (" ELF::R_LARCH_TLS_LE_ADD_R should not represent an "
142142 " instruction operand" );
143- case LoongArchMCExpr::VK_B16 :
143+ case ELF::R_LARCH_B16 :
144144 FixupKind = LoongArch::fixup_loongarch_b16;
145145 break ;
146- case LoongArchMCExpr::VK_B21 :
146+ case ELF::R_LARCH_B21 :
147147 FixupKind = LoongArch::fixup_loongarch_b21;
148148 break ;
149- case LoongArchMCExpr::VK_B26 :
149+ case ELF::R_LARCH_B26 :
150150 case LoongArchMCExpr::VK_CALL:
151151 case LoongArchMCExpr::VK_CALL_PLT:
152152 FixupKind = LoongArch::fixup_loongarch_b26;
153153 break ;
154- case LoongArchMCExpr::VK_ABS_HI20 :
154+ case ELF::R_LARCH_ABS_HI20 :
155155 FixupKind = LoongArch::fixup_loongarch_abs_hi20;
156156 break ;
157- case LoongArchMCExpr::VK_ABS_LO12 :
157+ case ELF::R_LARCH_ABS_LO12 :
158158 FixupKind = LoongArch::fixup_loongarch_abs_lo12;
159159 break ;
160- case LoongArchMCExpr::VK_ABS64_LO20 :
160+ case ELF::R_LARCH_ABS64_LO20 :
161161 FixupKind = LoongArch::fixup_loongarch_abs64_lo20;
162162 break ;
163- case LoongArchMCExpr::VK_ABS64_HI12 :
163+ case ELF::R_LARCH_ABS64_HI12 :
164164 FixupKind = LoongArch::fixup_loongarch_abs64_hi12;
165165 break ;
166- case LoongArchMCExpr::VK_PCALA_HI20:
167- FixupKind = ELF::R_LARCH_PCALA_HI20;
168- break ;
169- case LoongArchMCExpr::VK_PCALA_LO12:
170- FixupKind = ELF::R_LARCH_PCALA_LO12;
171- break ;
172- case LoongArchMCExpr::VK_PCALA64_LO20:
173- FixupKind = ELF::R_LARCH_PCALA64_LO20;
174- break ;
175- case LoongArchMCExpr::VK_PCALA64_HI12:
176- FixupKind = ELF::R_LARCH_PCALA64_HI12;
177- break ;
178- case LoongArchMCExpr::VK_GOT_PC_HI20:
179- FixupKind = ELF::R_LARCH_GOT_PC_HI20;
180- break ;
181- case LoongArchMCExpr::VK_GOT_PC_LO12:
182- FixupKind = ELF::R_LARCH_GOT_PC_LO12;
183- break ;
184- case LoongArchMCExpr::VK_GOT64_PC_LO20:
185- FixupKind = ELF::R_LARCH_GOT64_PC_LO20;
186- break ;
187- case LoongArchMCExpr::VK_GOT64_PC_HI12:
188- FixupKind = ELF::R_LARCH_GOT64_PC_HI12;
189- break ;
190- case LoongArchMCExpr::VK_GOT_HI20:
191- FixupKind = ELF::R_LARCH_GOT_HI20;
192- break ;
193- case LoongArchMCExpr::VK_GOT_LO12:
194- FixupKind = ELF::R_LARCH_GOT_LO12;
195- break ;
196- case LoongArchMCExpr::VK_GOT64_LO20:
197- FixupKind = ELF::R_LARCH_GOT64_LO20;
198- break ;
199- case LoongArchMCExpr::VK_GOT64_HI12:
200- FixupKind = ELF::R_LARCH_GOT64_HI12;
201- break ;
202- case LoongArchMCExpr::VK_TLS_LE_HI20:
203- FixupKind = ELF::R_LARCH_TLS_LE_HI20;
204- break ;
205- case LoongArchMCExpr::VK_TLS_LE_LO12:
206- FixupKind = ELF::R_LARCH_TLS_LE_LO12;
207- break ;
208- case LoongArchMCExpr::VK_TLS_LE64_LO20:
209- FixupKind = ELF::R_LARCH_TLS_LE64_LO20;
210- break ;
211- case LoongArchMCExpr::VK_TLS_LE64_HI12:
212- FixupKind = ELF::R_LARCH_TLS_LE64_HI12;
213- break ;
214- case LoongArchMCExpr::VK_TLS_IE_PC_HI20:
215- FixupKind = ELF::R_LARCH_TLS_IE_PC_HI20;
216- break ;
217- case LoongArchMCExpr::VK_TLS_IE_PC_LO12:
218- FixupKind = ELF::R_LARCH_TLS_IE_PC_LO12;
219- break ;
220- case LoongArchMCExpr::VK_TLS_IE64_PC_LO20:
221- FixupKind = ELF::R_LARCH_TLS_IE64_PC_LO20;
222- break ;
223- case LoongArchMCExpr::VK_TLS_IE64_PC_HI12:
224- FixupKind = ELF::R_LARCH_TLS_IE64_PC_HI12;
225- break ;
226- case LoongArchMCExpr::VK_TLS_IE_HI20:
227- FixupKind = ELF::R_LARCH_TLS_IE_HI20;
228- break ;
229- case LoongArchMCExpr::VK_TLS_IE_LO12:
230- FixupKind = ELF::R_LARCH_TLS_IE_LO12;
231- break ;
232- case LoongArchMCExpr::VK_TLS_IE64_LO20:
233- FixupKind = ELF::R_LARCH_TLS_IE64_LO20;
234- break ;
235- case LoongArchMCExpr::VK_TLS_IE64_HI12:
236- FixupKind = ELF::R_LARCH_TLS_IE64_HI12;
237- break ;
238- case LoongArchMCExpr::VK_TLS_LD_PC_HI20:
239- FixupKind = ELF::R_LARCH_TLS_LD_PC_HI20;
240- break ;
241- case LoongArchMCExpr::VK_TLS_LD_HI20:
242- FixupKind = ELF::R_LARCH_TLS_LD_HI20;
243- break ;
244- case LoongArchMCExpr::VK_TLS_GD_PC_HI20:
245- FixupKind = ELF::R_LARCH_TLS_GD_PC_HI20;
246- break ;
247- case LoongArchMCExpr::VK_TLS_GD_HI20:
248- FixupKind = ELF::R_LARCH_TLS_GD_HI20;
249- break ;
250- case LoongArchMCExpr::VK_CALL36:
251- FixupKind = ELF::R_LARCH_CALL36;
166+ case ELF::R_LARCH_CALL36:
167+ case ELF::R_LARCH_TLS_LE_HI20_R:
168+ case ELF::R_LARCH_TLS_LE_LO12_R:
252169 RelaxCandidate = true ;
253170 break ;
254- case LoongArchMCExpr::VK_TLS_DESC_PC_HI20:
255- FixupKind = ELF::R_LARCH_TLS_DESC_PC_HI20;
256- break ;
257- case LoongArchMCExpr::VK_TLS_DESC_PC_LO12:
258- FixupKind = ELF::R_LARCH_TLS_DESC_PC_LO12;
259- break ;
260- case LoongArchMCExpr::VK_TLS_DESC64_PC_LO20:
261- FixupKind = ELF::R_LARCH_TLS_DESC64_PC_LO20;
262- break ;
263- case LoongArchMCExpr::VK_TLS_DESC64_PC_HI12:
264- FixupKind = ELF::R_LARCH_TLS_DESC64_PC_HI12;
265- break ;
266- case LoongArchMCExpr::VK_TLS_DESC_HI20:
267- FixupKind = ELF::R_LARCH_TLS_DESC_HI20;
268- break ;
269- case LoongArchMCExpr::VK_TLS_DESC_LO12:
270- FixupKind = ELF::R_LARCH_TLS_DESC_LO12;
271- break ;
272- case LoongArchMCExpr::VK_TLS_DESC64_LO20:
273- FixupKind = ELF::R_LARCH_TLS_DESC64_LO20;
274- break ;
275- case LoongArchMCExpr::VK_TLS_DESC64_HI12:
276- FixupKind = ELF::R_LARCH_TLS_DESC64_HI12;
277- break ;
278- case LoongArchMCExpr::VK_TLS_DESC_LD:
279- FixupKind = ELF::R_LARCH_TLS_DESC_LD;
280- break ;
281- case LoongArchMCExpr::VK_TLS_DESC_CALL:
282- FixupKind = ELF::R_LARCH_TLS_DESC_CALL;
283- break ;
284- case LoongArchMCExpr::VK_TLS_LE_HI20_R:
285- FixupKind = ELF::R_LARCH_TLS_LE_HI20_R;
286- RelaxCandidate = true ;
287- break ;
288- case LoongArchMCExpr::VK_TLS_LE_LO12_R:
289- FixupKind = ELF::R_LARCH_TLS_LE_LO12_R;
290- RelaxCandidate = true ;
291- break ;
292- case LoongArchMCExpr::VK_PCREL20_S2:
293- FixupKind = ELF::R_LARCH_PCREL20_S2;
294- break ;
295- case LoongArchMCExpr::VK_TLS_LD_PCREL20_S2:
296- FixupKind = ELF::R_LARCH_TLS_LD_PCREL20_S2;
297- break ;
298- case LoongArchMCExpr::VK_TLS_GD_PCREL20_S2:
299- FixupKind = ELF::R_LARCH_TLS_GD_PCREL20_S2;
300- break ;
301- case LoongArchMCExpr::VK_TLS_DESC_PCREL20_S2:
302- FixupKind = ELF::R_LARCH_TLS_DESC_PCREL20_S2;
303- break ;
304171 }
305172 } else if (Kind == MCExpr::SymbolRef &&
306173 cast<MCSymbolRefExpr>(Expr)->getKind () ==
@@ -385,7 +252,7 @@ void LoongArchMCCodeEmitter::expandAddTPRel(const MCInst &MI,
385252 " Expected expression as third input to TP-relative add" );
386253
387254 const LoongArchMCExpr *Expr = dyn_cast<LoongArchMCExpr>(Symbol.getExpr ());
388- assert (Expr && Expr->getSpecifier () == LoongArchMCExpr::VK_TLS_LE_ADD_R &&
255+ assert (Expr && Expr->getSpecifier () == ELF::R_LARCH_TLS_LE_ADD_R &&
389256 " Expected %le_add_r relocation on TP-relative symbol" );
390257
391258 // Emit the correct %le_add_r relocation for the symbol.
0 commit comments