Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

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

  1. //==- CodeViewYAMLTypes.h - CodeView YAMLIO Type implementation --*- 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. // This file defines classes for handling the YAML representation of CodeView
  10. // Debug Info.
  11. //
  12. //===----------------------------------------------------------------------===//
  13.  
  14. #ifndef LLVM_OBJECTYAML_CODEVIEWYAMLTYPES_H
  15. #define LLVM_OBJECTYAML_CODEVIEWYAMLTYPES_H
  16.  
  17. #include "llvm/ADT/ArrayRef.h"
  18. #include "llvm/DebugInfo/CodeView/TypeRecord.h"
  19. #include "llvm/Support/Allocator.h"
  20. #include "llvm/Support/Error.h"
  21. #include "llvm/Support/YAMLTraits.h"
  22. #include <cstdint>
  23. #include <memory>
  24. #include <vector>
  25.  
  26. namespace llvm {
  27.  
  28. namespace codeview {
  29. class AppendingTypeTableBuilder;
  30. }
  31.  
  32. namespace CodeViewYAML {
  33.  
  34. namespace detail {
  35.  
  36. struct LeafRecordBase;
  37. struct MemberRecordBase;
  38.  
  39. } // end namespace detail
  40.  
  41. struct MemberRecord {
  42.   std::shared_ptr<detail::MemberRecordBase> Member;
  43. };
  44.  
  45. struct LeafRecord {
  46.   std::shared_ptr<detail::LeafRecordBase> Leaf;
  47.  
  48.   codeview::CVType
  49.   toCodeViewRecord(codeview::AppendingTypeTableBuilder &Serializer) const;
  50.   static Expected<LeafRecord> fromCodeViewRecord(codeview::CVType Type);
  51. };
  52.  
  53. std::vector<LeafRecord> fromDebugT(ArrayRef<uint8_t> DebugTorP,
  54.                                    StringRef SectionName);
  55. ArrayRef<uint8_t> toDebugT(ArrayRef<LeafRecord>, BumpPtrAllocator &Alloc,
  56.                            StringRef SectionName);
  57.  
  58. } // end namespace CodeViewYAML
  59.  
  60. } // end namespace llvm
  61.  
  62. LLVM_YAML_DECLARE_SCALAR_TRAITS(codeview::GUID, QuotingType::Single)
  63.  
  64. LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::LeafRecord)
  65. LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::MemberRecord)
  66.  
  67. LLVM_YAML_IS_SEQUENCE_VECTOR(CodeViewYAML::LeafRecord)
  68. LLVM_YAML_IS_SEQUENCE_VECTOR(CodeViewYAML::MemberRecord)
  69.  
  70. #endif // LLVM_OBJECTYAML_CODEVIEWYAMLTYPES_H
  71.