121
|
1 //===- DebugSymbolsSubsection.h --------------------------------*- C++ -*-===//
|
|
2 //
|
147
|
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
|
121
|
6 //
|
|
7 //===----------------------------------------------------------------------===//
|
|
8
|
|
9 #ifndef LLVM_DEBUGINFO_CODEVIEW_DEBUGSYMBOLSSUBSECTION_H
|
|
10 #define LLVM_DEBUGINFO_CODEVIEW_DEBUGSYMBOLSSUBSECTION_H
|
|
11
|
|
12 #include "llvm/DebugInfo/CodeView/DebugSubsection.h"
|
|
13 #include "llvm/DebugInfo/CodeView/SymbolRecord.h"
|
|
14 #include "llvm/Support/Error.h"
|
|
15
|
|
16 namespace llvm {
|
|
17 namespace codeview {
|
|
18 class DebugSymbolsSubsectionRef final : public DebugSubsectionRef {
|
|
19 public:
|
|
20 DebugSymbolsSubsectionRef()
|
|
21 : DebugSubsectionRef(DebugSubsectionKind::Symbols) {}
|
|
22
|
|
23 static bool classof(const DebugSubsectionRef *S) {
|
|
24 return S->kind() == DebugSubsectionKind::Symbols;
|
|
25 }
|
|
26
|
|
27 Error initialize(BinaryStreamReader Reader);
|
|
28
|
|
29 CVSymbolArray::Iterator begin() const { return Records.begin(); }
|
|
30 CVSymbolArray::Iterator end() const { return Records.end(); }
|
|
31
|
|
32 private:
|
|
33 CVSymbolArray Records;
|
|
34 };
|
|
35
|
|
36 class DebugSymbolsSubsection final : public DebugSubsection {
|
|
37 public:
|
|
38 DebugSymbolsSubsection() : DebugSubsection(DebugSubsectionKind::Symbols) {}
|
|
39 static bool classof(const DebugSubsection *S) {
|
|
40 return S->kind() == DebugSubsectionKind::Symbols;
|
|
41 }
|
|
42
|
|
43 uint32_t calculateSerializedSize() const override;
|
|
44 Error commit(BinaryStreamWriter &Writer) const override;
|
|
45
|
|
46 void addSymbol(CVSymbol Symbol);
|
|
47
|
|
48 private:
|
|
49 uint32_t Length = 0;
|
|
50 std::vector<CVSymbol> Records;
|
|
51 };
|
|
52 }
|
|
53 }
|
|
54
|
|
55 #endif
|