Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  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
  67.