2017-01-03 02:20:33 +08:00
|
|
|
//===-- 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"
|
|
|
|
|
2017-06-29 21:02:11 +08:00
|
|
|
#include "Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h"
|
|
|
|
#include "Plugins/SymbolFile/DWARF/SymbolFileDWARF.h"
|
|
|
|
#include "Plugins/SymbolFile/PDB/SymbolFilePDB.h"
|
2017-11-14 00:16:33 +08:00
|
|
|
#include "TestingSupport/TestUtilities.h"
|
2017-01-03 02:20:33 +08:00
|
|
|
#include "lldb/Core/Address.h"
|
|
|
|
#include "lldb/Core/Module.h"
|
|
|
|
#include "lldb/Core/ModuleSpec.h"
|
2018-11-01 05:49:27 +08:00
|
|
|
#include "lldb/Host/FileSystem.h"
|
2017-01-03 02:20:33 +08:00
|
|
|
#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"
|
2017-11-14 00:16:33 +08:00
|
|
|
#include "lldb/Utility/ArchSpec.h"
|
2017-03-23 02:40:07 +08:00
|
|
|
#include "lldb/Utility/FileSpec.h"
|
2017-01-03 02:20:33 +08:00
|
|
|
|
|
|
|
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.
|
2018-11-01 05:49:27 +08:00
|
|
|
FileSystem::Initialize();
|
|
|
|
HostInfo::Initialize();
|
|
|
|
ObjectFilePECOFF::Initialize();
|
|
|
|
SymbolFileDWARF::Initialize();
|
|
|
|
ClangASTContext::Initialize();
|
|
|
|
SymbolFilePDB::Initialize();
|
2017-01-03 02:20:33 +08:00
|
|
|
|
2018-11-01 05:49:27 +08:00
|
|
|
m_dwarf_test_exe = GetInputFilePath("test-dwarf.exe");
|
2017-01-03 02:20:33 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void TearDown() override {
|
|
|
|
SymbolFilePDB::Terminate();
|
|
|
|
ClangASTContext::Initialize();
|
|
|
|
SymbolFileDWARF::Terminate();
|
|
|
|
ObjectFilePECOFF::Terminate();
|
|
|
|
HostInfo::Terminate();
|
2018-11-01 05:49:27 +08:00
|
|
|
FileSystem::Terminate();
|
2017-01-03 02:20:33 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
protected:
|
2017-06-29 21:02:11 +08:00
|
|
|
std::string m_dwarf_test_exe;
|
2017-01-03 02:20:33 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
TEST_F(SymbolFileDWARFTests, TestAbilitiesForDWARF) {
|
|
|
|
// Test that when we have Dwarf debug info, SymbolFileDWARF is used.
|
2018-11-02 05:05:36 +08:00
|
|
|
FileSpec fspec(m_dwarf_test_exe);
|
2017-01-03 02:20:33 +08:00
|
|
|
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());
|
|
|
|
}
|