@@ -2,15 +2,27 @@ REQUIRES: system-windows, msvc
22RUN: mkdir -p %t.dir
33RUN: %build --compiler=clang-cl --mode=compile --arch=64 --nodefaultlib --output=%t.dir/VariablesTest.cpp.obj %S/Inputs/VariablesTest.cpp
44RUN: %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
1224GLOBALS: Module [[MOD:.*]]
13- GLOBALS: SymbolFile pdb ([[MOD]])
25+ GLOBALS: SymbolFile {{(native-)?}} pdb ([[MOD]])
1426GLOBALS: CompileUnit{{.*}}, language = "c++", file = '{{.*}}\VariablesTest.cpp'
1527GLOBALS-DAG: Variable{{.*}}, name = "g_IntVar"
1628GLOBALS-SAME: scope = global, location = {{.*}}, external
@@ -30,7 +42,7 @@ GLOBALS-DAG: Variable{{.*}}, name = "g_Const"
3042GLOBALS-SAME: scope = ??? (2)
3143GLOBALS: Function
3244
33- FUNC-F: Function{{.*}}, mangled = ?f@@YAHHH@Z
45+ FUNC-F: Function{{.*}}, {{ mangled = \ ?f@@YAHHH@Z|demangled = f}}
3446FUNC-F-NEXT: Block
3547FUNC-F-NEXT: Variable{{.*}}, name = "var_arg1"
3648FUNC-F-SAME: scope = parameter
@@ -39,7 +51,7 @@ FUNC-F-SAME: scope = parameter
3951FUNC-F-NEXT: Variable{{.*}}, name = "same_name_var"
4052FUNC-F-SAME: scope = local
4153
42- FUNC-MAIN: Function{{.*}}, mangled = main
54+ FUNC-MAIN: Function{{.*}}, {{(de)?}} mangled = main
4355FUNC-MAIN-NEXT: Block
4456FUNC-MAIN-NEXT: Variable{{.*}}, name = "same_name_var"
4557FUNC-MAIN-SAME: scope = local
@@ -52,16 +64,14 @@ FUNC-MAIN-SAME: scope = local
5264FUNC-MAIN-NEXT: Variable{{.*}}, name = "a"
5365FUNC-MAIN-SAME: scope = local
5466
55- FUNC-CONSTRUCTOR: Function{{.*}}, {{(de)?}}mangled = {{.*}}{{( Class::)?}} Class{{.*}}
67+ FUNC-CONSTRUCTOR: Function{{.*}}, {{(de)?}}mangled = {{.*}}Class::Class{{.*}}
5668FUNC-CONSTRUCTOR-NEXT: Block
5769FUNC-CONSTRUCTOR-NEXT: Variable{{.*}}, name = "this"
5870FUNC-CONSTRUCTOR-SAME: scope = parameter
59- FUNC-CONSTRUCTOR-SAME: artificial
6071FUNC-CONSTRUCTOR-NEXT: Variable{{.*}}, name = "a"
6172FUNC-CONSTRUCTOR-SAME: scope = parameter
6273
6374FUNC-MEMBER: Function{{.*}}, {{(de)?}}mangled = {{.*}}{{(Class::)?}}Func{{.*}}
6475FUNC-MEMBER-NEXT: Block
6576FUNC-MEMBER-NEXT: Variable{{.*}}, name = "this"
6677FUNC-MEMBER-SAME: scope = parameter
67- FUNC-MEMBER-SAME: artificial
0 commit comments