Skip to content

Commit 231f922

Browse files
committed
[LLDB][NativePDB] Mark blocks as parsed after parsing
1 parent 507ff08 commit 231f922

File tree

2 files changed

+24
-12
lines changed

2 files changed

+24
-12
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1624,6 +1624,8 @@ size_t SymbolFileNativePDB::ParseBlocksRecursive(Function &func) {
16241624
for (uint64_t uid : remove_uids) {
16251625
m_inline_sites.erase(uid);
16261626
}
1627+
1628+
func.GetBlock(false).SetBlockInfoHasBeenParsed(true, true);
16271629
return count;
16281630
}
16291631

lldb/test/Shell/SymbolFile/PDB/variables.test

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,27 @@ REQUIRES: system-windows, msvc
22
RUN: mkdir -p %t.dir
33
RUN: %build --compiler=clang-cl --mode=compile --arch=64 --nodefaultlib --output=%t.dir/VariablesTest.cpp.obj %S/Inputs/VariablesTest.cpp
44
RUN: %build --compiler=msvc --mode=link --arch=64 --nodefaultlib --output=%t.dir/VariablesTest.cpp.exe %t.dir/VariablesTest.cpp.obj
5-
RUN: lldb-test symbols %t.dir/VariablesTest.cpp.exe > %t.dir/VariablesTest.out
6-
RUN: FileCheck --check-prefix=GLOBALS --input-file=%t.dir/VariablesTest.out %s
7-
RUN: FileCheck --check-prefix=FUNC-F --input-file=%t.dir/VariablesTest.out %s
8-
RUN: FileCheck --check-prefix=FUNC-MAIN --input-file=%t.dir/VariablesTest.out %s
9-
RUN: FileCheck --check-prefix=FUNC-CONSTRUCTOR --input-file=%t.dir/VariablesTest.out %s
10-
RUN: FileCheck --check-prefix=FUNC-MEMBER --input-file=%t.dir/VariablesTest.out %s
5+
# Note: The native plugin creates a location list for variables that's only valid for the function.
6+
# The DIA plugin creates a location expression that's always valid. This causes DIA to output
7+
# one line per variable where the native plugin would output two (the second would contain the
8+
# location information). This removes the second line from the output of the native plugin.
9+
# It's done in both cases, because LLDB might not be compiled with the DIA SDK in which case
10+
# the native plugin is always used.
11+
RUN: env LLDB_USE_NATIVE_PDB_READER=0 lldb-test symbols %t.dir/VariablesTest.cpp.exe | sed '/^ \+\[0x/d' > %t.dir/VariablesTest.DIA.out
12+
RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols %t.dir/VariablesTest.cpp.exe | sed '/^ \+\[0x/d' > %t.dir/VariablesTest.Native.out
13+
RUN: FileCheck --check-prefix=GLOBALS --input-file=%t.dir/VariablesTest.DIA.out %s
14+
RUN: FileCheck --check-prefix=GLOBALS --input-file=%t.dir/VariablesTest.Native.out %s
15+
RUN: FileCheck --check-prefix=FUNC-F --input-file=%t.dir/VariablesTest.DIA.out %s
16+
RUN: FileCheck --check-prefix=FUNC-F --input-file=%t.dir/VariablesTest.Native.out %s
17+
RUN: FileCheck --check-prefix=FUNC-MAIN --input-file=%t.dir/VariablesTest.DIA.out %s
18+
RUN: FileCheck --check-prefix=FUNC-MAIN --input-file=%t.dir/VariablesTest.Native.out %s
19+
RUN: FileCheck --check-prefix=FUNC-CONSTRUCTOR --input-file=%t.dir/VariablesTest.DIA.out %s
20+
RUN: FileCheck --check-prefix=FUNC-CONSTRUCTOR --input-file=%t.dir/VariablesTest.Native.out %s
21+
RUN: FileCheck --check-prefix=FUNC-MEMBER --input-file=%t.dir/VariablesTest.DIA.out %s
22+
RUN: FileCheck --check-prefix=FUNC-MEMBER --input-file=%t.dir/VariablesTest.Native.out %s
1123

1224
GLOBALS: Module [[MOD:.*]]
13-
GLOBALS: SymbolFile pdb ([[MOD]])
25+
GLOBALS: SymbolFile {{(native-)?}}pdb ([[MOD]])
1426
GLOBALS: CompileUnit{{.*}}, language = "c++", file = '{{.*}}\VariablesTest.cpp'
1527
GLOBALS-DAG: Variable{{.*}}, name = "g_IntVar"
1628
GLOBALS-SAME: scope = global, location = {{.*}}, external
@@ -30,7 +42,7 @@ GLOBALS-DAG: Variable{{.*}}, name = "g_Const"
3042
GLOBALS-SAME: scope = ??? (2)
3143
GLOBALS: Function
3244

33-
FUNC-F: Function{{.*}}, mangled = ?f@@YAHHH@Z
45+
FUNC-F: Function{{.*}}, {{mangled = \?f@@YAHHH@Z|demangled = f}}
3446
FUNC-F-NEXT: Block
3547
FUNC-F-NEXT: Variable{{.*}}, name = "var_arg1"
3648
FUNC-F-SAME: scope = parameter
@@ -39,7 +51,7 @@ FUNC-F-SAME: scope = parameter
3951
FUNC-F-NEXT: Variable{{.*}}, name = "same_name_var"
4052
FUNC-F-SAME: scope = local
4153

42-
FUNC-MAIN: Function{{.*}}, mangled = main
54+
FUNC-MAIN: Function{{.*}}, {{(de)?}}mangled = main
4355
FUNC-MAIN-NEXT: Block
4456
FUNC-MAIN-NEXT: Variable{{.*}}, name = "same_name_var"
4557
FUNC-MAIN-SAME: scope = local
@@ -52,16 +64,14 @@ FUNC-MAIN-SAME: scope = local
5264
FUNC-MAIN-NEXT: Variable{{.*}}, name = "a"
5365
FUNC-MAIN-SAME: scope = local
5466

55-
FUNC-CONSTRUCTOR: Function{{.*}}, {{(de)?}}mangled = {{.*}}{{(Class::)?}}Class{{.*}}
67+
FUNC-CONSTRUCTOR: Function{{.*}}, {{(de)?}}mangled = {{.*}}Class::Class{{.*}}
5668
FUNC-CONSTRUCTOR-NEXT: Block
5769
FUNC-CONSTRUCTOR-NEXT: Variable{{.*}}, name = "this"
5870
FUNC-CONSTRUCTOR-SAME: scope = parameter
59-
FUNC-CONSTRUCTOR-SAME: artificial
6071
FUNC-CONSTRUCTOR-NEXT: Variable{{.*}}, name = "a"
6172
FUNC-CONSTRUCTOR-SAME: scope = parameter
6273

6374
FUNC-MEMBER: Function{{.*}}, {{(de)?}}mangled = {{.*}}{{(Class::)?}}Func{{.*}}
6475
FUNC-MEMBER-NEXT: Block
6576
FUNC-MEMBER-NEXT: Variable{{.*}}, name = "this"
6677
FUNC-MEMBER-SAME: scope = parameter
67-
FUNC-MEMBER-SAME: artificial

0 commit comments

Comments
 (0)