[Lldb-commits] [lldb] 48d8890 - [LLDB][NativePDB] fix that FindSymbolScope never finds scope of a symbol if it doesn't open a scope

Zequan Wu via lldb-commits lldb-commits at lists.llvm.org
Wed Feb 9 13:20:54 PST 2022


Author: Zequan Wu
Date: 2022-02-09T13:20:45-08:00
New Revision: 48d889079a8a050bb41defd5688e0b213c1c5655

URL: https://github.com/llvm/llvm-project/commit/48d889079a8a050bb41defd5688e0b213c1c5655
DIFF: https://github.com/llvm/llvm-project/commit/48d889079a8a050bb41defd5688e0b213c1c5655.diff

LOG: [LLDB][NativePDB] fix that FindSymbolScope never finds scope of a symbol if it doesn't open a scope

Added: 
    

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

Removed: 
    


################################################################################
diff  --git a/lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.cpp b/lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.cpp
index dc0969a0ce7c6..ddc52a6ec9276 100644
--- a/lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.cpp
+++ b/lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.cpp
@@ -118,12 +118,6 @@ static llvm::Optional<PdbCompilandSymId> FindSymbolScope(PdbIndex &index,
   std::vector<PdbCompilandSymId> scope_stack;
 
   while (begin != end) {
-    if (id.offset == begin.offset()) {
-      // We have a match!  Return the top of the stack
-      if (scope_stack.empty())
-        return llvm::None;
-      return scope_stack.back();
-    }
     if (begin.offset() > id.offset) {
       // We passed it.  We couldn't even find this symbol record.
       lldbassert(false && "Invalid compiland symbol id!");
@@ -136,7 +130,7 @@ static llvm::Optional<PdbCompilandSymId> FindSymbolScope(PdbIndex &index,
       // We can use the end offset of the scope to determine whether or not
       // we can just outright skip this entire scope.
       uint32_t scope_end = getScopeEndOffset(*begin);
-      if (scope_end < id.modi) {
+      if (scope_end < id.offset) {
         begin = syms.at(scope_end);
       } else {
         // The symbol we're looking for is somewhere in this scope.
@@ -147,8 +141,10 @@ static llvm::Optional<PdbCompilandSymId> FindSymbolScope(PdbIndex &index,
     }
     ++begin;
   }
-
-  return llvm::None;
+  if (scope_stack.empty())
+    return llvm::None;
+  // We have a match!  Return the top of the stack
+  return scope_stack.back();
 }
 
 static clang::TagTypeKind TranslateUdtKind(const TagRecord &cr) {


        


More information about the lldb-commits mailing list