//===- CVDebugRecord.h ------------------------------------------*- C++ -*-===//
 
//
 
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 
// See https://llvm.org/LICENSE.txt for license information.
 
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
//
 
//===----------------------------------------------------------------------===//
 
 
 
#ifndef LLVM_OBJECT_CVDEBUGRECORD_H
 
#define LLVM_OBJECT_CVDEBUGRECORD_H
 
 
 
#include "llvm/Support/Endian.h"
 
 
 
namespace llvm {
 
namespace OMF {
 
struct Signature {
 
  enum ID : uint32_t {
 
    PDB70 = 0x53445352, // RSDS
 
    PDB20 = 0x3031424e, // NB10
 
    CV50 = 0x3131424e,  // NB11
 
    CV41 = 0x3930424e,  // NB09
 
  };
 
 
 
  support::ulittle32_t CVSignature;
 
  support::ulittle32_t Offset;
 
};
 
}
 
 
 
namespace codeview {
 
struct PDB70DebugInfo {
 
  support::ulittle32_t CVSignature;
 
  uint8_t Signature[16];
 
  support::ulittle32_t Age;
 
  // char PDBFileName[];
 
};
 
 
 
struct PDB20DebugInfo {
 
  support::ulittle32_t CVSignature;
 
  support::ulittle32_t Offset;
 
  support::ulittle32_t Signature;
 
  support::ulittle32_t Age;
 
  // char PDBFileName[];
 
};
 
 
 
union DebugInfo {
 
  struct OMF::Signature Signature;
 
  struct PDB20DebugInfo PDB20;
 
  struct PDB70DebugInfo PDB70;
 
};
 
}
 
}
 
 
 
#endif