18a64d80aSDavid Spickett // REQUIRES: lld
28a64d80aSDavid Spickett
38a64d80aSDavid Spickett // RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -gno-pubnames
48a64d80aSDavid Spickett // RUN: ld.lld %t.o -o %t
58a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=variable --context=context %t | \
68a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=CONTEXT %s
78a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=variable %t | \
88a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=NAME %s
98a64d80aSDavid Spickett // RUN: lldb-test symbols --regex --name=foo --find=variable %t | \
108a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=REGEX %s
118a64d80aSDavid Spickett // RUN: lldb-test symbols --name=not_there --find=variable %t | \
128a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=EMPTY %s
138a64d80aSDavid Spickett //
148a64d80aSDavid Spickett // RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx
158a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=variable --context=context %t | \
168a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=CONTEXT %s
178a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=variable %t | \
188a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=NAME %s
198a64d80aSDavid Spickett // RUN: lldb-test symbols --regex --name=foo --find=variable %t | \
208a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=REGEX %s
218a64d80aSDavid Spickett // RUN: lldb-test symbols --name=not_there --find=variable %t | \
228a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=EMPTY %s
238a64d80aSDavid Spickett //
248a64d80aSDavid Spickett // RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames
258a64d80aSDavid Spickett // RUN: ld.lld %t.o -o %t
268a64d80aSDavid Spickett // RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix NAMES
278a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=variable --context=context %t | \
288a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=CONTEXT %s
298a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=variable %t | \
308a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=NAME %s
318a64d80aSDavid Spickett // RUN: lldb-test symbols --regex --name=foo --find=variable %t | \
328a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=REGEX %s
338a64d80aSDavid Spickett // RUN: lldb-test symbols --name=not_there --find=variable %t | \
348a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=EMPTY %s
358a64d80aSDavid Spickett
368a64d80aSDavid Spickett // NAMES: Name: .debug_names
378a64d80aSDavid Spickett
388a64d80aSDavid Spickett // EMPTY: Found 0 variables:
398a64d80aSDavid Spickett // NAME: Found 4 variables:
408a64d80aSDavid Spickett // CONTEXT: Found 1 variables:
418a64d80aSDavid Spickett // REGEX: Found 5 variables:
428a64d80aSDavid Spickett int foo;
438a64d80aSDavid Spickett // NAME-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
448a64d80aSDavid Spickett // REGEX-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-2]]
458a64d80aSDavid Spickett namespace bar {
468a64d80aSDavid Spickett int context;
478a64d80aSDavid Spickett long foo;
48*f6a561c4SDavid Blaikie // NAME-DAG: name = "foo", type = {{.*}} (long), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
49*f6a561c4SDavid Blaikie // CONTEXT-DAG: name = "foo", type = {{.*}} (long), {{.*}} decl = find-basic-variable.cpp:[[@LINE-2]]
50*f6a561c4SDavid Blaikie // REGEX-DAG: name = "foo", type = {{.*}} (long), {{.*}} decl = find-basic-variable.cpp:[[@LINE-3]]
518a64d80aSDavid Spickett namespace baz {
528a64d80aSDavid Spickett static short foo;
538a64d80aSDavid Spickett // NAME-DAG: name = "foo", type = {{.*}} (short), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
548a64d80aSDavid Spickett // REGEX-DAG: name = "foo", type = {{.*}} (short), {{.*}} decl = find-basic-variable.cpp:[[@LINE-2]]
558a64d80aSDavid Spickett }
568a64d80aSDavid Spickett }
578a64d80aSDavid Spickett
588a64d80aSDavid Spickett struct sbar {
598a64d80aSDavid Spickett static int foo;
608a64d80aSDavid Spickett // NAME-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
618a64d80aSDavid Spickett // REGEX-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-2]]
628a64d80aSDavid Spickett };
638a64d80aSDavid Spickett int sbar::foo;
648a64d80aSDavid Spickett
658a64d80aSDavid Spickett int foobar;
668a64d80aSDavid Spickett // REGEX-DAG: name = "foobar", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
678a64d80aSDavid Spickett
fbar()688a64d80aSDavid Spickett int fbar() {
698a64d80aSDavid Spickett static int foo;
708a64d80aSDavid Spickett return foo + bar::baz::foo;
718a64d80aSDavid Spickett }
728a64d80aSDavid Spickett
738a64d80aSDavid Spickett int Foo;
748a64d80aSDavid Spickett
758a64d80aSDavid Spickett struct ssbar {
768a64d80aSDavid Spickett int foo;
778a64d80aSDavid Spickett };
788a64d80aSDavid Spickett
_start(sbar,ssbar)798a64d80aSDavid Spickett extern "C" void _start(sbar, ssbar) {}
80