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 17namespace llvm { 18namespace pdb { 19 20enum 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 33enum PdbRaw_DbiVer : uint32_t { 34 PdbDbiVC41 = 930803, 35 PdbDbiV50 = 19960307, 36 PdbDbiV60 = 19970606, 37 PdbDbiV70 = 19990903, 38 PdbDbiV110 = 20091201 39}; 40 41enum PdbRaw_TpiVer : uint32_t { 42 PdbTpiV40 = 19950410, 43 PdbTpiV41 = 19951122, 44 PdbTpiV50 = 19961031, 45 PdbTpiV70 = 19990903, 46 PdbTpiV80 = 20040203, 47}; 48 49enum PdbRaw_DbiSecContribVer : uint32_t { 50 DbiSecContribVer60 = 0xeffe0000 + 19970605, 51 DbiSecContribV2 = 0xeffe0000 + 20140516 52}; 53 54enum 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 66enum 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 81enum 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