Home | History | Annotate | Line # | Download | only in Object
      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