1 //===- CodeViewYAMLDebugSections.h - CodeView YAMLIO debug sections -------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file defines classes for handling the YAML representation of CodeView
13 //===----------------------------------------------------------------------===//
15 #ifndef LLVM_OBJECTYAML_CODEVIEWYAMLDEBUGSECTIONS_H
16 #define LLVM_OBJECTYAML_CODEVIEWYAMLDEBUGSECTIONS_H
18 #include "llvm/DebugInfo/CodeView/CodeView.h"
19 #include "llvm/DebugInfo/CodeView/DebugSubsection.h"
20 #include "llvm/ObjectYAML/YAML.h"
23 namespace CodeViewYAML {
25 struct C13FragmentBase;
28 struct SourceLineEntry {
35 struct SourceColumnEntry {
40 struct SourceLineBlock {
42 std::vector<SourceLineEntry> Lines;
43 std::vector<SourceColumnEntry> Columns;
46 struct HexFormattedString {
47 std::vector<uint8_t> Bytes;
50 struct SourceFileChecksumEntry {
52 codeview::FileChecksumKind Kind;
53 HexFormattedString ChecksumBytes;
56 struct SourceLineInfo {
58 uint32_t RelocSegment;
59 codeview::LineFlags Flags;
62 std::vector<SourceLineBlock> Blocks;
68 uint32_t SourceLineNum;
69 std::vector<StringRef> ExtraFiles;
74 std::vector<InlineeSite> Sites;
77 struct SourceFileInfo {
78 std::vector<SourceFileChecksumEntry> FileChecksums;
79 std::vector<SourceLineInfo> LineFragments;
80 std::vector<InlineeInfo> Inlinees;
83 struct C13DebugSection {
84 std::vector<detail::C13FragmentBase> Fragments;
86 } // namespace CodeViewYAML
89 LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::SourceFileInfo)