Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

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

  1. //===- SymbolRecordMapping.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_SYMBOLRECORDMAPPING_H
  10. #define LLVM_DEBUGINFO_CODEVIEW_SYMBOLRECORDMAPPING_H
  11.  
  12. #include "llvm/DebugInfo/CodeView/CodeViewRecordIO.h"
  13. #include "llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h"
  14.  
  15. namespace llvm {
  16. class BinaryStreamReader;
  17. class BinaryStreamWriter;
  18.  
  19. namespace codeview {
  20. class SymbolRecordMapping : public SymbolVisitorCallbacks {
  21. public:
  22.   explicit SymbolRecordMapping(BinaryStreamReader &Reader,
  23.                                CodeViewContainer Container)
  24.       : IO(Reader), Container(Container) {}
  25.   explicit SymbolRecordMapping(BinaryStreamWriter &Writer,
  26.                                CodeViewContainer Container)
  27.       : IO(Writer), Container(Container) {}
  28.  
  29.   Error visitSymbolBegin(CVSymbol &Record) override;
  30.   Error visitSymbolEnd(CVSymbol &Record) override;
  31.  
  32. #define SYMBOL_RECORD(EnumName, EnumVal, Name)                                 \
  33.   Error visitKnownRecord(CVSymbol &CVR, Name &Record) override;
  34. #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
  35. #include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"
  36.  
  37. private:
  38.   std::optional<SymbolKind> Kind;
  39.  
  40.   CodeViewRecordIO IO;
  41.   CodeViewContainer Container;
  42. };
  43. }
  44. }
  45.  
  46. #endif
  47.