1 //===- CVDebugRecord.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_OBJECT_CVDEBUGRECORD_H 11 #define LLVM_OBJECT_CVDEBUGRECORD_H 12 13 #include "llvm/Support/Endian.h" 14 15 namespace llvm { 16 namespace OMF { 17 struct Signature { 18 enum ID : uint32_t { 19 PDB70 = 0x53445352, // RSDS 20 PDB20 = 0x3031424e, // NB10 21 CV50 = 0x3131424e, // NB11 22 CV41 = 0x3930424e, // NB09 23 }; 24 25 support::ulittle32_t CVSignature; 26 support::ulittle32_t Offset; 27 }; 28 } 29 30 namespace codeview { 31 struct PDB70DebugInfo { 32 support::ulittle32_t CVSignature; 33 uint8_t Signature[16]; 34 support::ulittle32_t Age; 35 // char PDBFileName[]; 36 }; 37 38 struct PDB20DebugInfo { 39 support::ulittle32_t CVSignature; 40 support::ulittle32_t Offset; 41 support::ulittle32_t Signature; 42 support::ulittle32_t Age; 43 // char PDBFileName[]; 44 }; 45 46 union DebugInfo { 47 struct OMF::Signature Signature; 48 struct PDB20DebugInfo PDB20; 49 struct PDB70DebugInfo PDB70; 50 }; 51 } 52 } 53 54 #endif 55 56