77// ===----------------------------------------------------------------------===//
88
99#include " MCTargetDesc/X86FixupKinds.h"
10- #include " MCTargetDesc/X86MCExpr .h"
10+ #include " MCTargetDesc/X86MCAsmInfo .h"
1111#include " MCTargetDesc/X86MCTargetDesc.h"
1212#include " llvm/BinaryFormat/ELF.h"
1313#include " llvm/MC/MCAsmInfo.h"
@@ -39,10 +39,10 @@ class X86ELFObjectWriter : public MCELFObjectTargetWriter {
3939
4040 void checkIs32 (SMLoc Loc, X86_64RelType Type) const ;
4141 void checkIs64 (SMLoc Loc, X86_64RelType Type) const ;
42- unsigned getRelocType32 (SMLoc Loc, X86MCExpr ::Specifier Specifier,
42+ unsigned getRelocType32 (SMLoc Loc, X86 ::Specifier Specifier,
4343 X86_32RelType Type, bool IsPCRel,
4444 MCFixupKind Kind) const ;
45- unsigned getRelocType64 (SMLoc Loc, X86MCExpr ::Specifier Specifier,
45+ unsigned getRelocType64 (SMLoc Loc, X86 ::Specifier Specifier,
4646 X86_64RelType Type, bool IsPCRel,
4747 MCFixupKind Kind) const ;
4848};
@@ -57,8 +57,8 @@ X86ELFObjectWriter::X86ELFObjectWriter(bool IsELF64, uint8_t OSABI,
5757 (EMachine != ELF::EM_386) &&
5858 (EMachine != ELF::EM_IAMCU)) {}
5959
60- static X86_64RelType getType64 (MCFixupKind Kind,
61- X86MCExpr::Specifier &Specifier, bool &IsPCRel) {
60+ static X86_64RelType getType64 (MCFixupKind Kind, X86::Specifier &Specifier,
61+ bool &IsPCRel) {
6262 switch (unsigned (Kind)) {
6363 default :
6464 llvm_unreachable (" Unimplemented" );
@@ -68,11 +68,11 @@ static X86_64RelType getType64(MCFixupKind Kind,
6868 return RT64_64;
6969 case X86::reloc_signed_4byte:
7070 case X86::reloc_signed_4byte_relax:
71- if (Specifier == X86MCExpr::VK_None && !IsPCRel)
71+ if (Specifier == X86::S_None && !IsPCRel)
7272 return RT64_32S;
7373 return RT64_32;
7474 case X86::reloc_global_offset_table:
75- Specifier = X86MCExpr::VK_GOT ;
75+ Specifier = X86::S_GOT ;
7676 IsPCRel = true ;
7777 return RT64_32;
7878 case FK_Data_4:
@@ -86,7 +86,7 @@ static X86_64RelType getType64(MCFixupKind Kind,
8686 case X86::reloc_riprel_4byte_relax_evex:
8787 return RT64_32;
8888 case X86::reloc_branch_4byte_pcrel:
89- Specifier = X86MCExpr::VK_PLT ;
89+ Specifier = X86::S_PLT ;
9090 return RT64_32;
9191 case FK_PCRel_2:
9292 case FK_Data_2:
@@ -107,18 +107,17 @@ void X86ELFObjectWriter::checkIs64(SMLoc Loc, X86_64RelType Type) const {
107107 reportError (Loc, " 64 bit reloc applied to a field with a different size" );
108108}
109109
110- unsigned X86ELFObjectWriter::getRelocType64 (SMLoc Loc,
111- X86MCExpr::Specifier Specifier,
110+ unsigned X86ELFObjectWriter::getRelocType64 (SMLoc Loc, X86::Specifier Specifier,
112111 X86_64RelType Type, bool IsPCRel,
113112 MCFixupKind Kind) const {
114113 switch (Specifier) {
115114 default :
116115 llvm_unreachable (" Unimplemented" );
117- case X86MCExpr::VK_None :
118- case X86MCExpr::VK_ABS8 :
116+ case X86::S_None :
117+ case X86::S_ABS8 :
119118 switch (Type) {
120119 case RT64_NONE:
121- if (Specifier == X86MCExpr::VK_None )
120+ if (Specifier == X86::S_None )
122121 return ELF::R_X86_64_NONE;
123122 llvm_unreachable (" Unimplemented" );
124123 case RT64_64:
@@ -133,7 +132,7 @@ unsigned X86ELFObjectWriter::getRelocType64(SMLoc Loc,
133132 return IsPCRel ? ELF::R_X86_64_PC8 : ELF::R_X86_64_8;
134133 }
135134 llvm_unreachable (" unexpected relocation type!" );
136- case X86MCExpr::VK_GOT :
135+ case X86::S_GOT :
137136 switch (Type) {
138137 case RT64_64:
139138 return IsPCRel ? ELF::R_X86_64_GOTPC64 : ELF::R_X86_64_GOT64;
@@ -146,12 +145,12 @@ unsigned X86ELFObjectWriter::getRelocType64(SMLoc Loc,
146145 llvm_unreachable (" Unimplemented" );
147146 }
148147 llvm_unreachable (" unexpected relocation type!" );
149- case X86MCExpr::VK_GOTOFF :
148+ case X86::S_GOTOFF :
150149 assert (!IsPCRel);
151150 if (Type != RT64_64)
152151 reportError (Loc, " unsupported relocation type" );
153152 return ELF::R_X86_64_GOTOFF64;
154- case X86MCExpr::VK_TPOFF :
153+ case X86::S_TPOFF :
155154 assert (!IsPCRel);
156155 switch (Type) {
157156 case RT64_64:
@@ -165,7 +164,7 @@ unsigned X86ELFObjectWriter::getRelocType64(SMLoc Loc,
165164 llvm_unreachable (" Unimplemented" );
166165 }
167166 llvm_unreachable (" unexpected relocation type!" );
168- case X86MCExpr::VK_DTPOFF :
167+ case X86::S_DTPOFF :
169168 assert (!IsPCRel);
170169 switch (Type) {
171170 case RT64_64:
@@ -179,7 +178,7 @@ unsigned X86ELFObjectWriter::getRelocType64(SMLoc Loc,
179178 llvm_unreachable (" Unimplemented" );
180179 }
181180 llvm_unreachable (" unexpected relocation type!" );
182- case X86MCExpr::VK_SIZE :
181+ case X86::S_SIZE :
183182 assert (!IsPCRel);
184183 switch (Type) {
185184 case RT64_64:
@@ -193,30 +192,30 @@ unsigned X86ELFObjectWriter::getRelocType64(SMLoc Loc,
193192 llvm_unreachable (" Unimplemented" );
194193 }
195194 llvm_unreachable (" unexpected relocation type!" );
196- case X86MCExpr::VK_TLSCALL :
195+ case X86::S_TLSCALL :
197196 return ELF::R_X86_64_TLSDESC_CALL;
198- case X86MCExpr::VK_TLSDESC :
197+ case X86::S_TLSDESC :
199198 return ((unsigned )Kind == X86::reloc_riprel_4byte_relax_rex2)
200199 ? ELF::R_X86_64_CODE_4_GOTPC32_TLSDESC
201200 : ELF::R_X86_64_GOTPC32_TLSDESC;
202- case X86MCExpr::VK_TLSGD :
201+ case X86::S_TLSGD :
203202 checkIs32 (Loc, Type);
204203 return ELF::R_X86_64_TLSGD;
205- case X86MCExpr::VK_GOTTPOFF :
204+ case X86::S_GOTTPOFF :
206205 checkIs32 (Loc, Type);
207206 if ((unsigned )Kind == X86::reloc_riprel_4byte_movq_load_rex2 ||
208207 (unsigned )Kind == X86::reloc_riprel_4byte_relax_rex2)
209208 return ELF::R_X86_64_CODE_4_GOTTPOFF;
210209 else if ((unsigned )Kind == X86::reloc_riprel_4byte_relax_evex)
211210 return ELF::R_X86_64_CODE_6_GOTTPOFF;
212211 return ELF::R_X86_64_GOTTPOFF;
213- case X86MCExpr::VK_TLSLD :
212+ case X86::S_TLSLD :
214213 checkIs32 (Loc, Type);
215214 return ELF::R_X86_64_TLSLD;
216- case X86MCExpr::VK_PLT :
215+ case X86::S_PLT :
217216 checkIs32 (Loc, Type);
218217 return ELF::R_X86_64_PLT32;
219- case X86MCExpr::VK_GOTPCREL :
218+ case X86::S_GOTPCREL :
220219 checkIs32 (Loc, Type);
221220 // Older versions of ld.bfd/ld.gold/lld
222221 // do not support GOTPCRELX/REX_GOTPCRELX/CODE_4_GOTPCRELX,
@@ -236,27 +235,26 @@ unsigned X86ELFObjectWriter::getRelocType64(SMLoc Loc,
236235 return ELF::R_X86_64_CODE_4_GOTPCRELX;
237236 }
238237 llvm_unreachable (" unexpected relocation type!" );
239- case X86MCExpr::VK_GOTPCREL_NORELAX :
238+ case X86::S_GOTPCREL_NORELAX :
240239 checkIs32 (Loc, Type);
241240 return ELF::R_X86_64_GOTPCREL;
242- case X86MCExpr::VK_PLTOFF :
241+ case X86::S_PLTOFF :
243242 checkIs64 (Loc, Type);
244243 return ELF::R_X86_64_PLTOFF64;
245244 }
246245}
247246
248- unsigned X86ELFObjectWriter::getRelocType32 (SMLoc Loc,
249- X86MCExpr::Specifier Specifier,
247+ unsigned X86ELFObjectWriter::getRelocType32 (SMLoc Loc, X86::Specifier Specifier,
250248 X86_32RelType Type, bool IsPCRel,
251249 MCFixupKind Kind) const {
252250 switch (Specifier) {
253251 default :
254252 llvm_unreachable (" Unimplemented" );
255- case X86MCExpr::VK_None :
256- case X86MCExpr::VK_ABS8 :
253+ case X86::S_None :
254+ case X86::S_ABS8 :
257255 switch (Type) {
258256 case RT32_NONE:
259- if (Specifier == X86MCExpr::VK_None )
257+ if (Specifier == X86::S_None )
260258 return ELF::R_386_NONE;
261259 llvm_unreachable (" Unimplemented" );
262260 case RT32_32:
@@ -267,7 +265,7 @@ unsigned X86ELFObjectWriter::getRelocType32(SMLoc Loc,
267265 return IsPCRel ? ELF::R_386_PC8 : ELF::R_386_8;
268266 }
269267 llvm_unreachable (" unexpected relocation type!" );
270- case X86MCExpr::VK_GOT :
268+ case X86::S_GOT :
271269 if (Type != RT32_32)
272270 break ;
273271 if (IsPCRel)
@@ -280,55 +278,55 @@ unsigned X86ELFObjectWriter::getRelocType32(SMLoc Loc,
280278 return Kind == MCFixupKind (X86::reloc_signed_4byte_relax)
281279 ? ELF::R_386_GOT32X
282280 : ELF::R_386_GOT32;
283- case X86MCExpr::VK_GOTOFF :
281+ case X86::S_GOTOFF :
284282 assert (!IsPCRel);
285283 if (Type != RT32_32)
286284 break ;
287285 return ELF::R_386_GOTOFF;
288- case X86MCExpr::VK_TLSCALL :
286+ case X86::S_TLSCALL :
289287 return ELF::R_386_TLS_DESC_CALL;
290- case X86MCExpr::VK_TLSDESC :
288+ case X86::S_TLSDESC :
291289 return ELF::R_386_TLS_GOTDESC;
292- case X86MCExpr::VK_TPOFF :
290+ case X86::S_TPOFF :
293291 if (Type != RT32_32)
294292 break ;
295293 assert (!IsPCRel);
296294 return ELF::R_386_TLS_LE_32;
297- case X86MCExpr::VK_DTPOFF :
295+ case X86::S_DTPOFF :
298296 if (Type != RT32_32)
299297 break ;
300298 assert (!IsPCRel);
301299 return ELF::R_386_TLS_LDO_32;
302- case X86MCExpr::VK_TLSGD :
300+ case X86::S_TLSGD :
303301 if (Type != RT32_32)
304302 break ;
305303 assert (!IsPCRel);
306304 return ELF::R_386_TLS_GD;
307- case X86MCExpr::VK_GOTTPOFF :
305+ case X86::S_GOTTPOFF :
308306 if (Type != RT32_32)
309307 break ;
310308 assert (!IsPCRel);
311309 return ELF::R_386_TLS_IE_32;
312- case X86MCExpr::VK_PLT :
310+ case X86::S_PLT :
313311 if (Type != RT32_32)
314312 break ;
315313 return ELF::R_386_PLT32;
316- case X86MCExpr::VK_INDNTPOFF :
314+ case X86::S_INDNTPOFF :
317315 if (Type != RT32_32)
318316 break ;
319317 assert (!IsPCRel);
320318 return ELF::R_386_TLS_IE;
321- case X86MCExpr::VK_NTPOFF :
319+ case X86::S_NTPOFF :
322320 if (Type != RT32_32)
323321 break ;
324322 assert (!IsPCRel);
325323 return ELF::R_386_TLS_LE;
326- case X86MCExpr::VK_GOTNTPOFF :
324+ case X86::S_GOTNTPOFF :
327325 if (Type != RT32_32)
328326 break ;
329327 assert (!IsPCRel);
330328 return ELF::R_386_TLS_GOTIE;
331- case X86MCExpr::VK_TLSLDM :
329+ case X86::S_TLSLDM :
332330 if (Type != RT32_32)
333331 break ;
334332 assert (!IsPCRel);
@@ -342,19 +340,19 @@ unsigned X86ELFObjectWriter::getRelocType(const MCFixup &Fixup,
342340 const MCValue &Target,
343341 bool IsPCRel) const {
344342 MCFixupKind Kind = Fixup.getKind ();
345- auto Specifier = X86MCExpr ::Specifier (Target.getSpecifier ());
343+ auto Specifier = X86 ::Specifier (Target.getSpecifier ());
346344 switch (Specifier) {
347- case X86MCExpr::VK_GOTTPOFF :
348- case X86MCExpr::VK_INDNTPOFF :
349- case X86MCExpr::VK_NTPOFF :
350- case X86MCExpr::VK_GOTNTPOFF :
351- case X86MCExpr::VK_TLSCALL :
352- case X86MCExpr::VK_TLSDESC :
353- case X86MCExpr::VK_TLSGD :
354- case X86MCExpr::VK_TLSLD :
355- case X86MCExpr::VK_TLSLDM :
356- case X86MCExpr::VK_TPOFF :
357- case X86MCExpr::VK_DTPOFF :
345+ case X86::S_GOTTPOFF :
346+ case X86::S_INDNTPOFF :
347+ case X86::S_NTPOFF :
348+ case X86::S_GOTNTPOFF :
349+ case X86::S_TLSCALL :
350+ case X86::S_TLSDESC :
351+ case X86::S_TLSGD :
352+ case X86::S_TLSLD :
353+ case X86::S_TLSLDM :
354+ case X86::S_TPOFF :
355+ case X86::S_DTPOFF :
358356 if (auto *S = Target.getAddSym ())
359357 cast<MCSymbolELF>(S)->setType (ELF::STT_TLS);
360358 break ;
@@ -393,10 +391,10 @@ unsigned X86ELFObjectWriter::getRelocType(const MCFixup &Fixup,
393391bool X86ELFObjectWriter::needsRelocateWithSymbol (const MCValue &V,
394392 unsigned Type) const {
395393 switch (V.getSpecifier ()) {
396- case X86MCExpr::VK_GOT :
397- case X86MCExpr::VK_PLT :
398- case X86MCExpr::VK_GOTPCREL :
399- case X86MCExpr::VK_GOTPCREL_NORELAX :
394+ case X86::S_GOT :
395+ case X86::S_PLT :
396+ case X86::S_GOTPCREL :
397+ case X86::S_GOTPCREL_NORELAX :
400398 return true ;
401399 default :
402400 return false ;
0 commit comments