1*8a64d80aSDavid Spickett // REQUIRES: lld
2*8a64d80aSDavid Spickett 
3*8a64d80aSDavid Spickett // RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -gno-pubnames
4*8a64d80aSDavid Spickett // RUN: ld.lld %t.o -o %t
5*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=variable --context=context %t | \
6*8a64d80aSDavid Spickett // RUN:   FileCheck --check-prefix=CONTEXT %s
7*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=variable %t | \
8*8a64d80aSDavid Spickett // RUN:   FileCheck --check-prefix=NAME %s
9*8a64d80aSDavid Spickett // RUN: lldb-test symbols --regex --name=foo --find=variable %t | \
10*8a64d80aSDavid Spickett // RUN:   FileCheck --check-prefix=REGEX %s
11*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=not_there --find=variable %t | \
12*8a64d80aSDavid Spickett // RUN:   FileCheck --check-prefix=EMPTY %s
13*8a64d80aSDavid Spickett //
14*8a64d80aSDavid Spickett // RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx
15*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=variable --context=context %t | \
16*8a64d80aSDavid Spickett // RUN:   FileCheck --check-prefix=CONTEXT %s
17*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=variable %t | \
18*8a64d80aSDavid Spickett // RUN:   FileCheck --check-prefix=NAME %s
19*8a64d80aSDavid Spickett // RUN: lldb-test symbols --regex --name=foo --find=variable %t | \
20*8a64d80aSDavid Spickett // RUN:   FileCheck --check-prefix=REGEX %s
21*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=not_there --find=variable %t | \
22*8a64d80aSDavid Spickett // RUN:   FileCheck --check-prefix=EMPTY %s
23*8a64d80aSDavid Spickett //
24*8a64d80aSDavid Spickett // RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames
25*8a64d80aSDavid Spickett // RUN: ld.lld %t.o -o %t
26*8a64d80aSDavid Spickett // RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix NAMES
27*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=variable --context=context %t | \
28*8a64d80aSDavid Spickett // RUN:   FileCheck --check-prefix=CONTEXT %s
29*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=variable %t | \
30*8a64d80aSDavid Spickett // RUN:   FileCheck --check-prefix=NAME %s
31*8a64d80aSDavid Spickett // RUN: lldb-test symbols --regex --name=foo --find=variable %t | \
32*8a64d80aSDavid Spickett // RUN:   FileCheck --check-prefix=REGEX %s
33*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=not_there --find=variable %t | \
34*8a64d80aSDavid Spickett // RUN:   FileCheck --check-prefix=EMPTY %s
35*8a64d80aSDavid Spickett 
36*8a64d80aSDavid Spickett // NAMES: Name: .debug_names
37*8a64d80aSDavid Spickett 
38*8a64d80aSDavid Spickett // EMPTY: Found 0 variables:
39*8a64d80aSDavid Spickett // NAME: Found 4 variables:
40*8a64d80aSDavid Spickett // CONTEXT: Found 1 variables:
41*8a64d80aSDavid Spickett // REGEX: Found 5 variables:
42*8a64d80aSDavid Spickett int foo;
43*8a64d80aSDavid Spickett // NAME-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
44*8a64d80aSDavid Spickett // REGEX-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-2]]
45*8a64d80aSDavid Spickett namespace bar {
46*8a64d80aSDavid Spickett int context;
47*8a64d80aSDavid Spickett long foo;
48*8a64d80aSDavid Spickett // NAME-DAG: name = "foo", type = {{.*}} (long int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
49*8a64d80aSDavid Spickett // CONTEXT-DAG: name = "foo", type = {{.*}} (long int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-2]]
50*8a64d80aSDavid Spickett // REGEX-DAG: name = "foo", type = {{.*}} (long int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-3]]
51*8a64d80aSDavid Spickett namespace baz {
52*8a64d80aSDavid Spickett static short foo;
53*8a64d80aSDavid Spickett // NAME-DAG: name = "foo", type = {{.*}} (short), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
54*8a64d80aSDavid Spickett // REGEX-DAG: name = "foo", type = {{.*}} (short), {{.*}} decl = find-basic-variable.cpp:[[@LINE-2]]
55*8a64d80aSDavid Spickett }
56*8a64d80aSDavid Spickett }
57*8a64d80aSDavid Spickett 
58*8a64d80aSDavid Spickett struct sbar {
59*8a64d80aSDavid Spickett   static int foo;
60*8a64d80aSDavid Spickett // NAME-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
61*8a64d80aSDavid Spickett // REGEX-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-2]]
62*8a64d80aSDavid Spickett };
63*8a64d80aSDavid Spickett int sbar::foo;
64*8a64d80aSDavid Spickett 
65*8a64d80aSDavid Spickett int foobar;
66*8a64d80aSDavid Spickett // REGEX-DAG: name = "foobar", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
67*8a64d80aSDavid Spickett 
68*8a64d80aSDavid Spickett int fbar() {
69*8a64d80aSDavid Spickett   static int foo;
70*8a64d80aSDavid Spickett   return foo + bar::baz::foo;
71*8a64d80aSDavid Spickett }
72*8a64d80aSDavid Spickett 
73*8a64d80aSDavid Spickett int Foo;
74*8a64d80aSDavid Spickett 
75*8a64d80aSDavid Spickett struct ssbar {
76*8a64d80aSDavid Spickett   int foo;
77*8a64d80aSDavid Spickett };
78*8a64d80aSDavid Spickett 
79*8a64d80aSDavid Spickett extern "C" void _start(sbar, ssbar) {}
80