[Lldb-commits] [lldb] 3222f95 - [LLDB][NativePDB] Convert backslash to slash when creating CU and filter out CU with no function in ResolveSymbolContext.

Zequan Wu via lldb-commits lldb-commits at lists.llvm.org
Mon Jun 13 12:04:33 PDT 2022


Author: Zequan Wu
Date: 2022-06-13T12:04:25-07:00
New Revision: 3222f95ea8c4de153f908c138cdec178e22acaf4

URL: https://github.com/llvm/llvm-project/commit/3222f95ea8c4de153f908c138cdec178e22acaf4
DIFF: https://github.com/llvm/llvm-project/commit/3222f95ea8c4de153f908c138cdec178e22acaf4.diff

LOG: [LLDB][NativePDB] Convert backslash to slash when creating CU and filter out CU with no function in ResolveSymbolContext.

On Windows, when compile with -fdebug-compilation-dir which contains slash, the source file path in PDB will look like "../tmp\file.cc" because the path separator used is determined by target machine. Converting backslash to slash helps lldb to find the CU in ResolveSymbolContext.

We want to filter out CU with no function in ResolveSymbolContext as a cpp file will have two debug info modules in PDB if built with thinlto and one of them is a skeleton with no function debug info.

Added: 
    

Modified: 
    lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp b/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp
index 18fd7efb93e82..5c98ac38de6f7 100644
--- a/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp
+++ b/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp
@@ -449,7 +449,8 @@ SymbolFileNativePDB::CreateCompileUnit(const CompilandIndexItem &cci) {
 
   llvm::SmallString<64> source_file_name =
       m_index->compilands().GetMainSourceFile(cci);
-  FileSpec fs(source_file_name);
+  FileSpec fs(llvm::sys::path::convert_to_slash(
+      source_file_name, llvm::sys::path::Style::windows_backslash));
 
   CompUnitSP cu_sp =
       std::make_shared<CompileUnit>(m_objfile_sp->GetModule(), nullptr, fs,
@@ -1051,7 +1052,7 @@ uint32_t SymbolFileNativePDB::ResolveSymbolContext(
     for (uint32_t cu_idx = 0, num_cus = GetNumCompileUnits(); cu_idx < num_cus;
          ++cu_idx) {
       CompileUnit *cu = ParseCompileUnitAtIndex(cu_idx).get();
-      if (!cu)
+      if (!cu && cu->GetNumFunctions() != 0)
         continue;
 
       bool file_spec_matches_cu_file_spec = FileSpec::Match(


        


More information about the lldb-commits mailing list