1317017Sdim//===- RawConstants.h -------------------------------------------*- C++ -*-===// 2317017Sdim// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6317017Sdim// 7317017Sdim//===----------------------------------------------------------------------===// 8317017Sdim 9317017Sdim#ifndef LLVM_DEBUGINFO_PDB_RAW_PDBRAWCONSTANTS_H 10317017Sdim#define LLVM_DEBUGINFO_PDB_RAW_PDBRAWCONSTANTS_H 11317017Sdim 12317017Sdim#include "llvm/ADT/BitmaskEnum.h" 13317017Sdim#include "llvm/DebugInfo/CodeView/CodeView.h" 14317017Sdim#include <cstdint> 15317017Sdim 16317017Sdimnamespace llvm { 17317017Sdimnamespace pdb { 18317017Sdim 19317017Sdimconst uint16_t kInvalidStreamIndex = 0xFFFF; 20317017Sdim 21317017Sdimenum PdbRaw_ImplVer : uint32_t { 22317017Sdim PdbImplVC2 = 19941610, 23317017Sdim PdbImplVC4 = 19950623, 24317017Sdim PdbImplVC41 = 19950814, 25317017Sdim PdbImplVC50 = 19960307, 26317017Sdim PdbImplVC98 = 19970604, 27317017Sdim PdbImplVC70Dep = 19990604, // deprecated 28317017Sdim PdbImplVC70 = 20000404, 29317017Sdim PdbImplVC80 = 20030901, 30317017Sdim PdbImplVC110 = 20091201, 31317017Sdim PdbImplVC140 = 20140508, 32317017Sdim}; 33317017Sdim 34341825Sdimenum class PdbRaw_SrcHeaderBlockVer : uint32_t { SrcVerOne = 19980827 }; 35341825Sdim 36317017Sdimenum class PdbRaw_FeatureSig : uint32_t { 37317017Sdim VC110 = PdbImplVC110, 38317017Sdim VC140 = PdbImplVC140, 39317017Sdim NoTypeMerge = 0x4D544F4E, 40317017Sdim MinimalDebugInfo = 0x494E494D, 41317017Sdim}; 42317017Sdim 43317017Sdimenum PdbRaw_Features : uint32_t { 44317017Sdim PdbFeatureNone = 0x0, 45317017Sdim PdbFeatureContainsIdStream = 0x1, 46317017Sdim PdbFeatureMinimalDebugInfo = 0x2, 47317017Sdim PdbFeatureNoTypeMerging = 0x4, 48317017Sdim LLVM_MARK_AS_BITMASK_ENUM(/* LargestValue = */ PdbFeatureNoTypeMerging) 49317017Sdim}; 50317017Sdim 51317017Sdimenum PdbRaw_DbiVer : uint32_t { 52317017Sdim PdbDbiVC41 = 930803, 53317017Sdim PdbDbiV50 = 19960307, 54317017Sdim PdbDbiV60 = 19970606, 55317017Sdim PdbDbiV70 = 19990903, 56317017Sdim PdbDbiV110 = 20091201 57317017Sdim}; 58317017Sdim 59317017Sdimenum PdbRaw_TpiVer : uint32_t { 60317017Sdim PdbTpiV40 = 19950410, 61317017Sdim PdbTpiV41 = 19951122, 62317017Sdim PdbTpiV50 = 19961031, 63317017Sdim PdbTpiV70 = 19990903, 64317017Sdim PdbTpiV80 = 20040203, 65317017Sdim}; 66317017Sdim 67317017Sdimenum PdbRaw_DbiSecContribVer : uint32_t { 68317017Sdim DbiSecContribVer60 = 0xeffe0000 + 19970605, 69317017Sdim DbiSecContribV2 = 0xeffe0000 + 20140516 70317017Sdim}; 71317017Sdim 72317017Sdimenum SpecialStream : uint32_t { 73317017Sdim // Stream 0 contains the copy of previous version of the MSF directory. 74317017Sdim // We are not currently using it, but technically if we find the main 75317017Sdim // MSF is corrupted, we could fallback to it. 76317017Sdim OldMSFDirectory = 0, 77317017Sdim 78317017Sdim StreamPDB = 1, 79317017Sdim StreamTPI = 2, 80317017Sdim StreamDBI = 3, 81317017Sdim StreamIPI = 4, 82317017Sdim 83317017Sdim kSpecialStreamCount 84317017Sdim}; 85317017Sdim 86317017Sdimenum class DbgHeaderType : uint16_t { 87317017Sdim FPO, 88317017Sdim Exception, 89317017Sdim Fixup, 90317017Sdim OmapToSrc, 91317017Sdim OmapFromSrc, 92317017Sdim SectionHdr, 93317017Sdim TokenRidMap, 94317017Sdim Xdata, 95317017Sdim Pdata, 96317017Sdim NewFPO, 97317017Sdim SectionHdrOrig, 98317017Sdim Max 99317017Sdim}; 100317017Sdim 101317017Sdimenum class OMFSegDescFlags : uint16_t { 102320041Sdim None = 0, 103317017Sdim Read = 1 << 0, // Segment is readable. 104317017Sdim Write = 1 << 1, // Segment is writable. 105317017Sdim Execute = 1 << 2, // Segment is executable. 106317017Sdim AddressIs32Bit = 1 << 3, // Descriptor describes a 32-bit linear address. 107317017Sdim IsSelector = 1 << 8, // Frame represents a selector. 108317017Sdim IsAbsoluteAddress = 1 << 9, // Frame represents an absolute address. 109320041Sdim IsGroup = 1 << 10, // If set, descriptor represents a group. 110320041Sdim LLVM_MARK_AS_BITMASK_ENUM(/* LargestValue = */ IsGroup) 111317017Sdim}; 112317017Sdim 113320041SdimLLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE(); 114320041Sdim 115317017Sdim} // end namespace pdb 116317017Sdim} // end namespace llvm 117317017Sdim 118317017Sdim#endif // LLVM_DEBUGINFO_PDB_RAW_PDBRAWCONSTANTS_H 119