1 //===- RawConstants.h -------------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef LLVM_DEBUGINFO_PDB_RAW_PDBRAWCONSTANTS_H 11 #define LLVM_DEBUGINFO_PDB_RAW_PDBRAWCONSTANTS_H 12 13 #include "llvm/DebugInfo/CodeView/CodeView.h" 14 15 #include <cstdint> 16 17 namespace llvm { 18 namespace pdb { 19 20 enum PdbRaw_ImplVer : uint32_t { 21 PdbImplVC2 = 19941610, 22 PdbImplVC4 = 19950623, 23 PdbImplVC41 = 19950814, 24 PdbImplVC50 = 19960307, 25 PdbImplVC98 = 19970604, 26 PdbImplVC70Dep = 19990604, // deprecated 27 PdbImplVC70 = 20000404, 28 PdbImplVC80 = 20030901, 29 PdbImplVC110 = 20091201, 30 PdbImplVC140 = 20140508, 31 }; 32 33 enum PdbRaw_DbiVer : uint32_t { 34 PdbDbiVC41 = 930803, 35 PdbDbiV50 = 19960307, 36 PdbDbiV60 = 19970606, 37 PdbDbiV70 = 19990903, 38 PdbDbiV110 = 20091201 39 }; 40 41 enum PdbRaw_TpiVer : uint32_t { 42 PdbTpiV40 = 19950410, 43 PdbTpiV41 = 19951122, 44 PdbTpiV50 = 19961031, 45 PdbTpiV70 = 19990903, 46 PdbTpiV80 = 20040203, 47 }; 48 49 enum PdbRaw_DbiSecContribVer : uint32_t { 50 DbiSecContribVer60 = 0xeffe0000 + 19970605, 51 DbiSecContribV2 = 0xeffe0000 + 20140516 52 }; 53 54 enum SpecialStream : uint32_t { 55 // Stream 0 contains the copy of previous version of the MSF directory. 56 // We are not currently using it, but technically if we find the main 57 // MSF is corrupted, we could fallback to it. 58 OldMSFDirectory = 0, 59 60 StreamPDB = 1, 61 StreamTPI = 2, 62 StreamDBI = 3, 63 StreamIPI = 4, 64 }; 65 66 enum class DbgHeaderType : uint16_t { 67 FPO, 68 Exception, 69 Fixup, 70 OmapToSrc, 71 OmapFromSrc, 72 SectionHdr, 73 TokenRidMap, 74 Xdata, 75 Pdata, 76 NewFPO, 77 SectionHdrOrig, 78 Max 79 }; 80 81 enum class OMFSegDescFlags : uint16_t { 82 Read = 1 << 0, // Segment is readable. 83 Write = 1 << 1, // Segment is writable. 84 Execute = 1 << 2, // Segment is executable. 85 AddressIs32Bit = 1 << 3, // Descriptor describes a 32-bit linear address. 86 IsSelector = 1 << 8, // Frame represents a selector. 87 IsAbsoluteAddress = 1 << 9, // Frame represents an absolute address. 88 IsGroup = 1 << 10 // If set, descriptor represents a group. 89 }; 90 91 } // end namespace pdb 92 } // end namespace llvm 93 94 #endif // LLVM_DEBUGINFO_PDB_RAW_PDBRAWCONSTANTS_H 95