1 //===- RawConstants.h -------------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef LLVM_DEBUGINFO_PDB_RAW_PDBRAWCONSTANTS_H
11 #define LLVM_DEBUGINFO_PDB_RAW_PDBRAWCONSTANTS_H
13 #include "llvm/ADT/BitmaskEnum.h"
14 #include "llvm/DebugInfo/CodeView/CodeView.h"
20 const uint16_t kInvalidStreamIndex = 0xFFFF;
22 enum PdbRaw_ImplVer : uint32_t {
23 PdbImplVC2 = 19941610,
24 PdbImplVC4 = 19950623,
25 PdbImplVC41 = 19950814,
26 PdbImplVC50 = 19960307,
27 PdbImplVC98 = 19970604,
28 PdbImplVC70Dep = 19990604, // deprecated
29 PdbImplVC70 = 20000404,
30 PdbImplVC80 = 20030901,
31 PdbImplVC110 = 20091201,
32 PdbImplVC140 = 20140508,
35 enum class PdbRaw_FeatureSig : uint32_t {
38 NoTypeMerge = 0x4D544F4E,
39 MinimalDebugInfo = 0x494E494D,
42 enum PdbRaw_Features : uint32_t {
44 PdbFeatureContainsIdStream = 0x1,
45 PdbFeatureMinimalDebugInfo = 0x2,
46 PdbFeatureNoTypeMerging = 0x4,
47 LLVM_MARK_AS_BITMASK_ENUM(/* LargestValue = */ PdbFeatureNoTypeMerging)
50 enum PdbRaw_DbiVer : uint32_t {
58 enum PdbRaw_TpiVer : uint32_t {
66 enum PdbRaw_DbiSecContribVer : uint32_t {
67 DbiSecContribVer60 = 0xeffe0000 + 19970605,
68 DbiSecContribV2 = 0xeffe0000 + 20140516
71 enum SpecialStream : uint32_t {
72 // Stream 0 contains the copy of previous version of the MSF directory.
73 // We are not currently using it, but technically if we find the main
74 // MSF is corrupted, we could fallback to it.
85 enum class DbgHeaderType : uint16_t {
100 enum class OMFSegDescFlags : uint16_t {
102 Read = 1 << 0, // Segment is readable.
103 Write = 1 << 1, // Segment is writable.
104 Execute = 1 << 2, // Segment is executable.
105 AddressIs32Bit = 1 << 3, // Descriptor describes a 32-bit linear address.
106 IsSelector = 1 << 8, // Frame represents a selector.
107 IsAbsoluteAddress = 1 << 9, // Frame represents an absolute address.
108 IsGroup = 1 << 10, // If set, descriptor represents a group.
109 LLVM_MARK_AS_BITMASK_ENUM(/* LargestValue = */ IsGroup)
112 LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE();
114 } // end namespace pdb
115 } // end namespace llvm
117 #endif // LLVM_DEBUGINFO_PDB_RAW_PDBRAWCONSTANTS_H