Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

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

  1. //===- DebugSymbolsSubsection.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_DEBUGSYMBOLSSUBSECTION_H
  10. #define LLVM_DEBUGINFO_CODEVIEW_DEBUGSYMBOLSSUBSECTION_H
  11.  
  12. #include "llvm/DebugInfo/CodeView/CVRecord.h"
  13. #include "llvm/DebugInfo/CodeView/DebugSubsection.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
  56.