Revert "PDB support of function-level linking and splitted functions"

This reverts commit r334030 because it adds a broken test.

llvm-svn: 334076
This commit is contained in:
Pavel Labath 2018-06-06 09:16:00 +00:00
parent 0ef2ce3667
commit 5583ec4218
9 changed files with 0 additions and 107 deletions

View File

@ -1571,9 +1571,6 @@ bool SymbolFilePDB::ParseCompileUnitLineTable(
line_table->AppendLineEntryToSequence(
sequence.get(), prev_addr + prev_length, prev_line, 0,
prev_source_idx, false, false, false, false, true);
line_table->InsertSequence(sequence.release());
sequence.reset(line_table->CreateLineSequenceContainer());
}
if (ShouldAddLine(match_line, lno, length)) {

View File

@ -17,10 +17,6 @@ add_lldb_unittest(SymbolFilePDBTests
set(test_inputs
test-pdb.exe
test-pdb.pdb
test-pdb-function-level-linking.exe
test-pdb-function-level-linking.pdb
test-pdb-splitted-function.exe
test-pdb-splitted-function.pdb
test-pdb-types.exe
test-pdb-types.pdb)

View File

@ -1,17 +0,0 @@
// Compile with "cl /c /ZI /sdl /EHsc /MTd /permissive-
// test-pdb-function-level-linking.cpp"
// Link with "link /debug:full test-pdb-function-level-linking.obj"
#include <memory>
#include <string>
std::string foo()
{
return "Hello!";
}
int main()
{
auto x = foo();
return 0;
}

View File

@ -1,27 +0,0 @@
// Compile with "cl /c /Zi /GL /O2 /EHsc /MTd test-pdb-splitted-function.cpp"
// Link with "link /debug:full /LTCG /GENPROFILE
// test-pdb-splitted-function.obj"
// Run several times
// Link with "link /debug:full /LTCG /USEPROFILE
// test-pdb-splitted-function.obj"
#include <cmath>
#include <iostream>
int main()
{
auto b = false;
for (auto i = 1; i <= 1024; i++)
{
if (b)
{
std::cout << "Unreachable code" << std::endl;
auto x = std::sin(i);
return x;
}
b = (i % 2 + (i - 1) % 2) != 1;
}
return 0;
}

View File

@ -56,10 +56,6 @@ public:
SymbolFilePDB::Initialize();
m_pdb_test_exe = GetInputFilePath("test-pdb.exe");
m_function_level_linking_test_exe =
GetInputFilePath("test-pdb-function-level-linking.exe");
m_splitted_function_test_exe =
GetInputFilePath("test-pdb-splitted-function.exe");
m_types_test_exe = GetInputFilePath("test-pdb-types.exe");
}
@ -77,8 +73,6 @@ public:
protected:
std::string m_pdb_test_exe;
std::string m_function_level_linking_test_exe;
std::string m_splitted_function_test_exe;
std::string m_types_test_exe;
bool FileSpecMatchesAsBaseOrFull(const FileSpec &left,
@ -360,56 +354,6 @@ TEST_F(SymbolFilePDBTests, TestLineTablesMatchSpecific) {
VerifyLineEntry(module, sc, header1, *lt, 9, 0x401090);
}
void TestLineTableConsistency(llvm::StringRef exe_path, llvm::StringRef source_name)
{
// All line entries of compile unit's line table must be consistent
// even if compiled sources are not continuous in the binary file.
FileSpec fspec(exe_path, false);
ArchSpec aspec("i686-pc-windows");
lldb::ModuleSP module = std::make_shared<Module>(fspec, aspec);
SymbolVendor *plugin = module->GetSymbolVendor();
SymbolFile *symfile = plugin->GetSymbolFile();
FileSpec source_file(source_name, false);
uint32_t scope = lldb::eSymbolContextCompUnit | lldb::eSymbolContextLineEntry;
SymbolContextList sc_list;
uint32_t count =
symfile->ResolveSymbolContext(source_file, 0, true, scope, sc_list);
EXPECT_EQ(1u, count);
SymbolContext sc;
EXPECT_TRUE(sc_list.GetContextAtIndex(0, sc));
LineTable *lt = sc.comp_unit->GetLineTable();
EXPECT_NE(nullptr, lt);
count = lt->GetSize();
EXPECT_LT(0u, count);
LineEntry le;
EXPECT_TRUE(lt->GetLineEntryAtIndex(0, le));
for (int i = 1; i < count; i++)
{
lldb::addr_t curr_end =
le.range.GetBaseAddress().GetFileAddress() + le.range.GetByteSize();
EXPECT_TRUE(lt->GetLineEntryAtIndex(i, le));
EXPECT_LE(curr_end, le.range.GetBaseAddress().GetFileAddress());
}
}
TEST_F(SymbolFilePDBTests, TestFunctionLevelLinking) {
TestLineTableConsistency(
m_function_level_linking_test_exe,
"test-pdb-function-level-linking.cpp");
}
TEST_F(SymbolFilePDBTests, TestSplittedFunction) {
TestLineTableConsistency(
m_splitted_function_test_exe,
"test-pdb-splitted-function.cpp");
}
TEST_F(SymbolFilePDBTests, TestSimpleClassTypes) {
FileSpec fspec(m_types_test_exe.c_str(), false);
ArchSpec aspec("i686-pc-windows");