1 //===- CVDebugRecord.h ------------------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLVM_OBJECT_CVDEBUGRECORD_H 10 #define LLVM_OBJECT_CVDEBUGRECORD_H 11 12 #include "llvm/Support/Endian.h" 13 14 namespace llvm { 15 namespace OMF { 16 struct Signature { 17 enum ID : uint32_t { 18 PDB70 = 0x53445352, // RSDS 19 PDB20 = 0x3031424e, // NB10 20 CV50 = 0x3131424e, // NB11 21 CV41 = 0x3930424e, // NB09 22 }; 23 24 support::ulittle32_t CVSignature; 25 support::ulittle32_t Offset; 26 }; 27 } 28 29 namespace codeview { 30 struct PDB70DebugInfo { 31 support::ulittle32_t CVSignature; 32 uint8_t Signature[16]; 33 support::ulittle32_t Age; 34 // char PDBFileName[]; 35 }; 36 37 struct PDB20DebugInfo { 38 support::ulittle32_t CVSignature; 39 support::ulittle32_t Offset; 40 support::ulittle32_t Signature; 41 support::ulittle32_t Age; 42 // char PDBFileName[]; 43 }; 44 45 union DebugInfo { 46 struct OMF::Signature Signature; 47 struct PDB20DebugInfo PDB20; 48 struct PDB70DebugInfo PDB70; 49 }; 50 } 51 } 52 53 #endif 54 55