xref: /llvm-project/lldb/test/Shell/SymbolFile/PDB/variables.test (revision f4abf28c0a0ba2226379a1b1926a7c36d75265e9)
1REQUIRES: system-windows, msvc
2RUN: %build --compiler=clang-cl --mode=compile --arch=64 --nodefaultlib --output=%T/VariablesTest.cpp.obj %S/Inputs/VariablesTest.cpp
3RUN: %build --compiler=msvc --mode=link --arch=64 --nodefaultlib --output=%T/VariablesTest.cpp.exe %T/VariablesTest.cpp.obj
4RUN: lldb-test symbols %T/VariablesTest.cpp.exe > %T/VariablesTest.out
5RUN: FileCheck --check-prefix=GLOBALS --input-file=%T/VariablesTest.out %s
6RUN: FileCheck --check-prefix=FUNC-F --input-file=%T/VariablesTest.out %s
7RUN: FileCheck --check-prefix=FUNC-MAIN --input-file=%T/VariablesTest.out %s
8RUN: FileCheck --check-prefix=FUNC-CONSTRUCTOR --input-file=%T/VariablesTest.out %s
9RUN: FileCheck --check-prefix=FUNC-MEMBER --input-file=%T/VariablesTest.out %s
10
11GLOBALS: Module [[MOD:.*]]
12GLOBALS: SymbolFile pdb ([[MOD]])
13GLOBALS:     CompileUnit{{.*}}, language = "c++", file = '{{.*}}\VariablesTest.cpp'
14GLOBALS-DAG:   Variable{{.*}}, name = "g_IntVar"
15GLOBALS-SAME:  scope = global, location = {{.*}}, external
16GLOBALS-DAG:   Variable{{.*}}, name = "g_pConst"
17GLOBALS-SAME:  scope = global, location = {{.*}}, external
18GLOBALS-DAG:   Variable{{.*}}, name = "same_name_var"
19GLOBALS-SAME:  scope = global, location = {{.*}}, external
20GLOBALS-DAG:   Variable{{.*}}, name = "Class::m_StaticClassMember"
21GLOBALS-SAME:  scope = global, location = {{.*}}, external
22GLOBALS-DAG:   Variable{{.*}}, name = "g_EnumVar"
23GLOBALS-SAME:  scope = global, location = {{.*}}, external
24GLOBALS-DAG:   Variable{{.*}}, name = "g_tls"
25GLOBALS-SAME:  scope = thread local, location = {{.*}}, external
26GLOBALS-DAG:   Variable{{.*}}, name = "ClassVar"
27GLOBALS-SAME:  scope = global, location = {{.*}}, external
28GLOBALS-DAG:   Variable{{.*}}, name = "g_Const"
29GLOBALS-SAME:  scope = ??? (2)
30GLOBALS:     Function
31
32FUNC-F:      Function{{.*}}, mangled = ?f@@YAHHH@Z
33FUNC-F-NEXT:   Block
34FUNC-F-NEXT:     Variable{{.*}}, name = "var_arg1"
35FUNC-F-SAME:                     scope = parameter
36FUNC-F-NEXT:     Variable{{.*}}, name = "var_arg2"
37FUNC-F-SAME:                     scope = parameter
38FUNC-F-NEXT:     Variable{{.*}}, name = "same_name_var"
39FUNC-F-SAME:                     scope = local
40
41FUNC-MAIN:      Function{{.*}}, mangled = main
42FUNC-MAIN-NEXT:   Block
43FUNC-MAIN-NEXT:     Variable{{.*}}, name = "same_name_var"
44FUNC-MAIN-SAME:                     scope = local
45FUNC-MAIN-NEXT:     Variable{{.*}}, name = "local_const"
46FUNC-MAIN-SAME:                     scope = local
47FUNC-MAIN-NEXT:     Variable{{.*}}, name = "local_CString"
48FUNC-MAIN-SAME:                     scope = local
49FUNC-MAIN-NEXT:     Variable{{.*}}, name = "local_pCString"
50FUNC-MAIN-SAME:                     scope = local
51FUNC-MAIN-NEXT:     Variable{{.*}}, name = "a"
52FUNC-MAIN-SAME:                     scope = local
53
54FUNC-CONSTRUCTOR:      Function{{.*}}, {{(de)?}}mangled = {{.*}}{{(Class::)?}}Class{{.*}}
55FUNC-CONSTRUCTOR-NEXT:   Block
56FUNC-CONSTRUCTOR-NEXT:     Variable{{.*}}, name = "this"
57FUNC-CONSTRUCTOR-SAME:                     scope = parameter
58FUNC-CONSTRUCTOR-SAME:                     artificial
59FUNC-CONSTRUCTOR-NEXT:     Variable{{.*}}, name = "a"
60FUNC-CONSTRUCTOR-SAME:                     scope = parameter
61
62FUNC-MEMBER:      Function{{.*}}, {{(de)?}}mangled = {{.*}}{{(Class::)?}}Func{{.*}}
63FUNC-MEMBER-NEXT:   Block
64FUNC-MEMBER-NEXT:     Variable{{.*}}, name = "this"
65FUNC-MEMBER-SAME:                     scope = parameter
66FUNC-MEMBER-SAME:                     artificial
67