1f37b62ecSJonas Devlieghere //===- YAMLModuleTester.h ---------------------------------------*- C++ -*-===// 2f37b62ecSJonas Devlieghere // 3f37b62ecSJonas Devlieghere // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4f37b62ecSJonas Devlieghere // See https://llvm.org/LICENSE.txt for license information. 5f37b62ecSJonas Devlieghere // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6f37b62ecSJonas Devlieghere // 7f37b62ecSJonas Devlieghere //===----------------------------------------------------------------------===// 8f37b62ecSJonas Devlieghere 9f37b62ecSJonas Devlieghere #ifndef LLDB_UNITTESTS_TESTINGSUPPORT_SYMBOL_YAMLMODULETESTER_H 10f37b62ecSJonas Devlieghere #define LLDB_UNITTESTS_TESTINGSUPPORT_SYMBOL_YAMLMODULETESTER_H 11f37b62ecSJonas Devlieghere 12a895a446SPavel Labath #include "Plugins/ObjectFile/ELF/ObjectFileELF.h" 13f37b62ecSJonas Devlieghere #include "Plugins/SymbolFile/DWARF/DWARFUnit.h" 14f37b62ecSJonas Devlieghere #include "Plugins/SymbolFile/DWARF/SymbolFileDWARF.h" 15f37b62ecSJonas Devlieghere #include "Plugins/TypeSystem/Clang/TypeSystemClang.h" 16f37b62ecSJonas Devlieghere #include "TestingSupport/SubsystemRAII.h" 171d1d916fSPavel Labath #include "TestingSupport/TestUtilities.h" 18f37b62ecSJonas Devlieghere #include "lldb/Core/Module.h" 19f37b62ecSJonas Devlieghere #include "lldb/Host/HostInfo.h" 20f190ce62SKazu Hirata #include <optional> 21f37b62ecSJonas Devlieghere 22f37b62ecSJonas Devlieghere namespace lldb_private { 23f37b62ecSJonas Devlieghere 24f37b62ecSJonas Devlieghere /// Helper class that can construct a module from YAML and evaluate 25f37b62ecSJonas Devlieghere /// DWARF expressions on it. 26f37b62ecSJonas Devlieghere class YAMLModuleTester { 27f37b62ecSJonas Devlieghere protected: 28a895a446SPavel Labath SubsystemRAII<FileSystem, HostInfo, TypeSystemClang, ObjectFileELF, 29*a669a237Swalter erquinigo plugin::dwarf::SymbolFileDWARF> 30a895a446SPavel Labath subsystems; 312fe83274SKazu Hirata std::optional<TestFile> m_file; 32f37b62ecSJonas Devlieghere lldb::ModuleSP m_module_sp; 33*a669a237Swalter erquinigo plugin::dwarf::DWARFUnit *m_dwarf_unit; 34f37b62ecSJonas Devlieghere 35f37b62ecSJonas Devlieghere public: 36f37b62ecSJonas Devlieghere /// Parse the debug info sections from the YAML description. 37376c7bd9SGreg Clayton YAMLModuleTester(llvm::StringRef yaml_data, size_t cu_index = 0); GetDwarfUnit()38*a669a237Swalter erquinigo plugin::dwarf::DWARFUnit *GetDwarfUnit() const { return m_dwarf_unit; } GetModule()3906e4f69bSAdrian Prantl lldb::ModuleSP GetModule() const { return m_module_sp; } 40f37b62ecSJonas Devlieghere }; 41f37b62ecSJonas Devlieghere 42f37b62ecSJonas Devlieghere } // namespace lldb_private 43f37b62ecSJonas Devlieghere 44f37b62ecSJonas Devlieghere #endif // LLDB_UNITTESTS_TESTINGSUPPORT_SYMBOL_YAMLMODULETESTER_H 45