xref: /llvm-project/lldb/unittests/TestingSupport/Symbol/YAMLModuleTester.h (revision a669a237c45a515bea0d258cbbecdbbb3170d57a)
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