| //===-- PythonDataObjectsTests.cpp ------------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "gtest/gtest.h" |
| |
| #include "llvm/ADT/STLExtras.h" |
| #include "llvm/DebugInfo/PDB/PDBSymbolData.h" |
| #include "llvm/DebugInfo/PDB/PDBSymbolExe.h" |
| #include "llvm/Support/FileSystem.h" |
| #include "llvm/Support/Path.h" |
| |
| #include "Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h" |
| #include "Plugins/SymbolFile/DWARF/SymbolFileDWARF.h" |
| #include "Plugins/SymbolFile/PDB/SymbolFilePDB.h" |
| #include "TestingSupport/TestUtilities.h" |
| #include "lldb/Core/Address.h" |
| #include "lldb/Core/Module.h" |
| #include "lldb/Core/ModuleSpec.h" |
| #include "lldb/Host/HostInfo.h" |
| #include "lldb/Symbol/ClangASTContext.h" |
| #include "lldb/Symbol/CompileUnit.h" |
| #include "lldb/Symbol/LineTable.h" |
| #include "lldb/Symbol/SymbolVendor.h" |
| #include "lldb/Utility/ArchSpec.h" |
| #include "lldb/Utility/FileSpec.h" |
| |
| using namespace lldb_private; |
| |
| class SymbolFileDWARFTests : public testing::Test { |
| public: |
| void SetUp() override { |
| // Initialize and TearDown the plugin every time, so we get a brand new |
| // AST every time so that modifications to the AST from each test don't |
| // leak into the next test. |
| HostInfo::Initialize(); |
| ObjectFilePECOFF::Initialize(); |
| SymbolFileDWARF::Initialize(); |
| ClangASTContext::Initialize(); |
| SymbolFilePDB::Initialize(); |
| |
| m_dwarf_test_exe = GetInputFilePath("test-dwarf.exe"); |
| } |
| |
| void TearDown() override { |
| SymbolFilePDB::Terminate(); |
| ClangASTContext::Initialize(); |
| SymbolFileDWARF::Terminate(); |
| ObjectFilePECOFF::Terminate(); |
| HostInfo::Terminate(); |
| } |
| |
| protected: |
| std::string m_dwarf_test_exe; |
| }; |
| |
| TEST_F(SymbolFileDWARFTests, TestAbilitiesForDWARF) { |
| // Test that when we have Dwarf debug info, SymbolFileDWARF is used. |
| FileSpec fspec(m_dwarf_test_exe, false); |
| ArchSpec aspec("i686-pc-windows"); |
| lldb::ModuleSP module = std::make_shared<Module>(fspec, aspec); |
| |
| SymbolVendor *plugin = module->GetSymbolVendor(); |
| EXPECT_NE(nullptr, plugin); |
| SymbolFile *symfile = plugin->GetSymbolFile(); |
| EXPECT_NE(nullptr, symfile); |
| EXPECT_EQ(symfile->GetPluginName(), SymbolFileDWARF::GetPluginNameStatic()); |
| |
| uint32_t expected_abilities = SymbolFile::kAllAbilities; |
| EXPECT_EQ(expected_abilities, symfile->CalculateAbilities()); |
| } |