From a31347f17d1f03d01845e7d433d24dedd3dec8e0 Mon Sep 17 00:00:00 2001 From: Zachary Turner Date: Tue, 2 Apr 2019 19:39:45 +0000 Subject: [PATCH] [NativePDB] Don't fail on import modules. A recent patch to LLD started emitting information about import modules. These are represented as compile units in the PDB, but with no additional debug info. This was confusing the native pdb reader, who expected that the debug info stream be present. This should fix failing tests on the Windows bots. llvm-svn: 357513 --- .../Plugins/SymbolFile/NativePDB/CompileUnitIndex.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lldb/source/Plugins/SymbolFile/NativePDB/CompileUnitIndex.cpp b/lldb/source/Plugins/SymbolFile/NativePDB/CompileUnitIndex.cpp index c8e5303..1838204 100644 --- a/lldb/source/Plugins/SymbolFile/NativePDB/CompileUnitIndex.cpp +++ b/lldb/source/Plugins/SymbolFile/NativePDB/CompileUnitIndex.cpp @@ -124,11 +124,20 @@ CompilandIndexItem &CompileUnitIndex::GetOrCreateCompiland(uint16_t modi) { uint16_t stream = descriptor.getModuleStreamIndex(); std::unique_ptr stream_data = m_index.pdb().createIndexedStream(stream); + + + std::unique_ptr& cci = result.first->second; + + if (!stream_data) { + llvm::pdb::ModuleDebugStreamRef debug_stream(descriptor, nullptr); + cci = llvm::make_unique(PdbCompilandId{ modi }, debug_stream, std::move(descriptor)); + return *cci; + } + llvm::pdb::ModuleDebugStreamRef debug_stream(descriptor, std::move(stream_data)); - cantFail(debug_stream.reload()); - std::unique_ptr &cci = result.first->second; + cantFail(debug_stream.reload()); cci = llvm::make_unique( PdbCompilandId{modi}, std::move(debug_stream), std::move(descriptor)); -- 2.7.4