Skip to content

Commit 1a43a5b

Browse files
committed
workaround coff conflicts
1 parent 816268f commit 1a43a5b

File tree

3 files changed

+39
-18
lines changed

3 files changed

+39
-18
lines changed

include/llvm/Object/COFF.h

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
#include "llvm/Support/Endian.h"
2121
#include "llvm/Support/ErrorOr.h"
2222

23+
using namespace llvm::COFF;
24+
2325
namespace llvm {
2426
template <typename T> class ArrayRef;
2527

@@ -334,59 +336,59 @@ class COFFSymbolRef {
334336
}
335337

336338
bool isExternal() const {
337-
return getStorageClass() == COFF::IMAGE_SYM_CLASS_EXTERNAL;
339+
return getStorageClass() == IMAGE_SYM_CLASS_EXTERNAL;
338340
}
339341

340342
bool isCommon() const {
341-
return isExternal() && getSectionNumber() == COFF::IMAGE_SYM_UNDEFINED &&
343+
return isExternal() && getSectionNumber() == IMAGE_SYM_UNDEFINED &&
342344
getValue() != 0;
343345
}
344346

345347
bool isUndefined() const {
346-
return isExternal() && getSectionNumber() == COFF::IMAGE_SYM_UNDEFINED &&
348+
return isExternal() && getSectionNumber() == IMAGE_SYM_UNDEFINED &&
347349
getValue() == 0;
348350
}
349351

350352
bool isWeakExternal() const {
351-
return getStorageClass() == COFF::IMAGE_SYM_CLASS_WEAK_EXTERNAL;
353+
return getStorageClass() == IMAGE_SYM_CLASS_WEAK_EXTERNAL;
352354
}
353355

354356
bool isFunctionDefinition() const {
355-
return isExternal() && getBaseType() == COFF::IMAGE_SYM_TYPE_NULL &&
356-
getComplexType() == COFF::IMAGE_SYM_DTYPE_FUNCTION &&
357+
return isExternal() && getBaseType() == IMAGE_SYM_TYPE_NULL &&
358+
getComplexType() == IMAGE_SYM_DTYPE_FUNCTION &&
357359
!COFF::isReservedSectionNumber(getSectionNumber());
358360
}
359361

360362
bool isFunctionLineInfo() const {
361-
return getStorageClass() == COFF::IMAGE_SYM_CLASS_FUNCTION;
363+
return getStorageClass() == IMAGE_SYM_CLASS_FUNCTION;
362364
}
363365

364366
bool isAnyUndefined() const {
365367
return isUndefined() || isWeakExternal();
366368
}
367369

368370
bool isFileRecord() const {
369-
return getStorageClass() == COFF::IMAGE_SYM_CLASS_FILE;
371+
return getStorageClass() == IMAGE_SYM_CLASS_FILE;
370372
}
371373

372374
bool isSection() const {
373-
return getStorageClass() == COFF::IMAGE_SYM_CLASS_SECTION;
375+
return getStorageClass() == IMAGE_SYM_CLASS_SECTION;
374376
}
375377

376378
bool isSectionDefinition() const {
377379
// C++/CLI creates external ABS symbols for non-const appdomain globals.
378380
// These are also followed by an auxiliary section definition.
379381
bool isAppdomainGlobal =
380-
getStorageClass() == COFF::IMAGE_SYM_CLASS_EXTERNAL &&
381-
getSectionNumber() == COFF::IMAGE_SYM_ABSOLUTE;
382-
bool isOrdinarySection = getStorageClass() == COFF::IMAGE_SYM_CLASS_STATIC;
382+
getStorageClass() == IMAGE_SYM_CLASS_EXTERNAL &&
383+
getSectionNumber() == IMAGE_SYM_ABSOLUTE;
384+
bool isOrdinarySection = getStorageClass() == IMAGE_SYM_CLASS_STATIC;
383385
if (!getNumberOfAuxSymbols())
384386
return false;
385387
return isAppdomainGlobal || isOrdinarySection;
386388
}
387389

388390
bool isCLRToken() const {
389-
return getStorageClass() == COFF::IMAGE_SYM_CLASS_CLR_TOKEN;
391+
return getStorageClass() == IMAGE_SYM_CLASS_CLR_TOKEN;
390392
}
391393

392394
private:
@@ -411,7 +413,7 @@ struct coff_section {
411413
// Returns true if the actual number of relocations is stored in
412414
// VirtualAddress field of the first relocation table entry.
413415
bool hasExtendedRelocations() const {
414-
return (Characteristics & COFF::IMAGE_SCN_LNK_NRELOC_OVFL) &&
416+
return (Characteristics & IMAGE_SCN_LNK_NRELOC_OVFL) &&
415417
NumberOfRelocations == UINT16_MAX;
416418
}
417419
};

include/llvm/Object/RelocVisitor.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
#include "llvm/Support/MachO.h"
2727
#include "llvm/Support/raw_ostream.h"
2828

29+
using namespace llvm::COFF;
30+
2931
namespace llvm {
3032
namespace object {
3133

@@ -206,17 +208,17 @@ class RelocVisitor {
206208
switch (ObjToVisit.getArch()) {
207209
case Triple::x86:
208210
switch (RelocType) {
209-
case COFF::IMAGE_REL_I386_SECREL:
211+
case IMAGE_REL_I386_SECREL:
210212
return visitCOFF_I386_SECREL(R, Value);
211-
case COFF::IMAGE_REL_I386_DIR32:
213+
case IMAGE_REL_I386_DIR32:
212214
return visitCOFF_I386_DIR32(R, Value);
213215
}
214216
break;
215217
case Triple::x86_64:
216218
switch (RelocType) {
217-
case COFF::IMAGE_REL_AMD64_SECREL:
219+
case IMAGE_REL_AMD64_SECREL:
218220
return visitCOFF_AMD64_SECREL(R, Value);
219-
case COFF::IMAGE_REL_AMD64_ADDR64:
221+
case IMAGE_REL_AMD64_ADDR64:
220222
return visitCOFF_AMD64_ADDR64(R, Value);
221223
}
222224
break;

include/llvm/Support/COFF.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ namespace COFF {
8080
uint32_t NumberOfSymbols;
8181
};
8282

83+
#ifndef __MINGW32__
8384
enum MachineTypes {
8485
MT_Invalid = 0xffff,
8586

@@ -145,6 +146,7 @@ namespace COFF {
145146
/// and should be 0.
146147
IMAGE_FILE_BYTES_REVERSED_HI = 0x8000
147148
};
149+
#endif // __MINGW32__
148150

149151
struct symbol {
150152
char Name[NameSize];
@@ -155,6 +157,12 @@ namespace COFF {
155157
uint8_t NumberOfAuxSymbols;
156158
};
157159

160+
#ifdef __MINGW32__
161+
enum SymbolComplexType {
162+
/// Type is formed as (base + (derived << SCT_COMPLEX_TYPE_SHIFT))
163+
SCT_COMPLEX_TYPE_SHIFT = 4
164+
};
165+
#else
158166
enum SymbolSectionNumber : int32_t {
159167
IMAGE_SYM_DEBUG = -2,
160168
IMAGE_SYM_ABSOLUTE = -1,
@@ -226,6 +234,7 @@ namespace COFF {
226234
/// Type is formed as (base + (derived << SCT_COMPLEX_TYPE_SHIFT))
227235
SCT_COMPLEX_TYPE_SHIFT = 4
228236
};
237+
#endif // __MINGW32__
229238

230239
enum AuxSymbolType {
231240
IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF = 1
@@ -244,6 +253,7 @@ namespace COFF {
244253
uint32_t Characteristics;
245254
};
246255

256+
#ifndef __MINGW32__
247257
enum SectionCharacteristics : uint32_t {
248258
SC_Invalid = 0xffffffff,
249259

@@ -283,13 +293,15 @@ namespace COFF {
283293
IMAGE_SCN_MEM_READ = 0x40000000,
284294
IMAGE_SCN_MEM_WRITE = 0x80000000
285295
};
296+
#endif // __MINGW32__
286297

287298
struct relocation {
288299
uint32_t VirtualAddress;
289300
uint32_t SymbolTableIndex;
290301
uint16_t Type;
291302
};
292303

304+
#ifndef __MINGW32__
293305
enum RelocationTypeI386 {
294306
IMAGE_REL_I386_ABSOLUTE = 0x0000,
295307
IMAGE_REL_I386_DIR16 = 0x0001,
@@ -351,6 +363,7 @@ namespace COFF {
351363
IMAGE_COMDAT_SELECT_LARGEST,
352364
IMAGE_COMDAT_SELECT_NEWEST
353365
};
366+
#endif // __MINGW32__
354367

355368
// Auxiliary Symbol Formats
356369
struct AuxiliaryFunctionDefinition {
@@ -375,12 +388,14 @@ namespace COFF {
375388
uint8_t unused[10];
376389
};
377390

391+
#ifndef __MINGW32__
378392
/// These are not documented in the spec, but are located in WinNT.h.
379393
enum WeakExternalCharacteristics {
380394
IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY = 1,
381395
IMAGE_WEAK_EXTERN_SEARCH_LIBRARY = 2,
382396
IMAGE_WEAK_EXTERN_SEARCH_ALIAS = 3
383397
};
398+
#endif // __MINGW32__
384399

385400
struct AuxiliarySectionDefinition {
386401
uint32_t Length;
@@ -541,6 +556,7 @@ namespace COFF {
541556
NUM_DATA_DIRECTORIES
542557
};
543558

559+
#ifndef __MINGW32__
544560
enum WindowsSubsystem {
545561
IMAGE_SUBSYSTEM_UNKNOWN = 0, ///< An unknown subsystem.
546562
IMAGE_SUBSYSTEM_NATIVE = 1, ///< Device drivers and native Windows processes
@@ -612,6 +628,7 @@ namespace COFF {
612628
IMAGE_REL_BASED_MIPS_JMPADDR16 = 9,
613629
IMAGE_REL_BASED_DIR64 = 10
614630
};
631+
#endif // __MINGW32__
615632

616633
enum ImportType {
617634
IMPORT_CODE = 0,

0 commit comments

Comments
 (0)