Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
//===- DebugSymbolRVASubsection.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_DEBUGINFO_CODEVIEW_DEBUGSYMBOLRVASUBSECTION_H
10
#define LLVM_DEBUGINFO_CODEVIEW_DEBUGSYMBOLRVASUBSECTION_H
11
 
12
#include "llvm/DebugInfo/CodeView/CodeView.h"
13
#include "llvm/DebugInfo/CodeView/DebugSubsection.h"
14
#include "llvm/Support/BinaryStreamArray.h"
15
#include "llvm/Support/Endian.h"
16
#include "llvm/Support/Error.h"
17
#include <cstdint>
18
#include <vector>
19
 
20
namespace llvm {
21
 
22
class BinaryStreamReader;
23
 
24
namespace codeview {
25
 
26
class DebugSymbolRVASubsectionRef final : public DebugSubsectionRef {
27
public:
28
  using ArrayType = FixedStreamArray<support::ulittle32_t>;
29
 
30
  DebugSymbolRVASubsectionRef();
31
 
32
  static bool classof(const DebugSubsectionRef *S) {
33
    return S->kind() == DebugSubsectionKind::CoffSymbolRVA;
34
  }
35
 
36
  ArrayType::Iterator begin() const { return RVAs.begin(); }
37
  ArrayType::Iterator end() const { return RVAs.end(); }
38
 
39
  Error initialize(BinaryStreamReader &Reader);
40
 
41
private:
42
  ArrayType RVAs;
43
};
44
 
45
class DebugSymbolRVASubsection final : public DebugSubsection {
46
public:
47
  DebugSymbolRVASubsection();
48
 
49
  static bool classof(const DebugSubsection *S) {
50
    return S->kind() == DebugSubsectionKind::CoffSymbolRVA;
51
  }
52
 
53
  Error commit(BinaryStreamWriter &Writer) const override;
54
  uint32_t calculateSerializedSize() const override;
55
 
56
  void addRVA(uint32_t RVA) { RVAs.push_back(support::ulittle32_t(RVA)); }
57
 
58
private:
59
  std::vector<support::ulittle32_t> RVAs;
60
};
61
 
62
} // end namespace codeview
63
 
64
} // end namespace llvm
65
 
66
#endif // LLVM_DEBUGINFO_CODEVIEW_DEBUGSYMBOLRVASUBSECTION_H