//===- RawTypes.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_DEBUGINFO_PDB_NATIVE_RAWTYPES_H #define LLVM_DEBUGINFO_PDB_NATIVE_RAWTYPES_H #include "llvm/DebugInfo/CodeView/GUID.h" #include "llvm/DebugInfo/CodeView/TypeRecord.h" #include "llvm/Support/Endian.h" namespace llvm { namespace pdb { // This struct is defined as "SO" in langapi/include/pdb.h. struct SectionOffset { … }; /// Header of the hash tables found in the globals and publics sections. /// Based on GSIHashHdr in /// https://github.com/Microsoft/microsoft-pdb/blob/master/PDB/dbi/gsi.h struct GSIHashHeader { … }; // This is HRFile. struct PSHashRecord { … }; // This struct is defined as `SC` in include/dbicommon.h struct SectionContrib { … }; // This struct is defined as `SC2` in include/dbicommon.h struct SectionContrib2 { … }; // This corresponds to the `OMFSegMap` structure. struct SecMapHeader { … }; // This corresponds to the `OMFSegMapDesc` structure. The definition is not // present in the reference implementation, but the layout is derived from // code that accesses the fields. struct SecMapEntry { … }; /// Some of the values are stored in bitfields. Since this needs to be portable /// across compilers and architectures (big / little endian in particular) we /// can't use the actual structures below, but must instead do the shifting /// and masking ourselves. The struct definitions are provided for reference. struct DbiFlags { … }; struct DbiBuildNo { … }; /// The fixed size header that appears at the beginning of the DBI Stream. struct DbiStreamHeader { … }; static_assert …; /// The header preceding the File Info Substream of the DBI stream. struct FileInfoSubstreamHeader { … }; struct ModInfoFlags { … }; /// The header preceding each entry in the Module Info substream of the DBI /// stream. Corresponds to the type MODI in the reference implementation. struct ModuleInfoHeader { … }; // This is PSGSIHDR struct defined in // https://github.com/Microsoft/microsoft-pdb/blob/master/PDB/dbi/gsi.h struct PublicsStreamHeader { … }; // The header preceding the global TPI stream. // This corresponds to `HDR` in PDB/dbi/tpi.h. struct TpiStreamHeader { … }; const uint32_t MinTpiHashBuckets = …; const uint32_t MaxTpiHashBuckets = …; /// The header preceding the global PDB Stream (Stream 1) struct InfoStreamHeader { … }; /// The header preceding the /names stream. struct PDBStringTableHeader { … }; const uint32_t PDBStringTableSignature = …; /// The header preceding the /src/headerblock stream. struct SrcHeaderBlockHeader { … }; static_assert …; /// A single file record entry within the /src/headerblock stream. struct SrcHeaderBlockEntry { … }; static_assert …; } // namespace pdb } // namespace llvm #endif