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
36*a7e27260SFangrui Song /// Test a per-module index built by lld.
37*a7e27260SFangrui Song // RUN: ld.lld --debug-names %t.o -o %t
38*a7e27260SFangrui Song // RUN: lldb-test symbols --name=foo --find=variable --context=context %t | \
39*a7e27260SFangrui Song // RUN: FileCheck --check-prefix=CONTEXT %s
40*a7e27260SFangrui Song
418a64d80aSDavid Spickett // NAMES: Name: .debug_names
428a64d80aSDavid Spickett
438a64d80aSDavid Spickett // EMPTY: Found 0 variables:
448a64d80aSDavid Spickett // NAME: Found 4 variables:
458a64d80aSDavid Spickett // CONTEXT: Found 1 variables:
468a64d80aSDavid Spickett // REGEX: Found 5 variables:
478a64d80aSDavid Spickett int foo;
488a64d80aSDavid Spickett // NAME-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
498a64d80aSDavid Spickett // REGEX-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-2]]
508a64d80aSDavid Spickett namespace bar {
518a64d80aSDavid Spickett int context;
528a64d80aSDavid Spickett long foo;
53f6a561c4SDavid Blaikie // NAME-DAG: name = "foo", type = {{.*}} (long), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
54f6a561c4SDavid Blaikie // CONTEXT-DAG: name = "foo", type = {{.*}} (long), {{.*}} decl = find-basic-variable.cpp:[[@LINE-2]]
55f6a561c4SDavid Blaikie // REGEX-DAG: name = "foo", type = {{.*}} (long), {{.*}} decl = find-basic-variable.cpp:[[@LINE-3]]
568a64d80aSDavid Spickett namespace baz {
578a64d80aSDavid Spickett static short foo;
588a64d80aSDavid Spickett // NAME-DAG: name = "foo", type = {{.*}} (short), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
598a64d80aSDavid Spickett // REGEX-DAG: name = "foo", type = {{.*}} (short), {{.*}} decl = find-basic-variable.cpp:[[@LINE-2]]
608a64d80aSDavid Spickett }
618a64d80aSDavid Spickett }
628a64d80aSDavid Spickett
638a64d80aSDavid Spickett struct sbar {
648a64d80aSDavid Spickett static int foo;
658a64d80aSDavid Spickett // NAME-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
668a64d80aSDavid Spickett // REGEX-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-2]]
678a64d80aSDavid Spickett };
688a64d80aSDavid Spickett int sbar::foo;
698a64d80aSDavid Spickett
708a64d80aSDavid Spickett int foobar;
718a64d80aSDavid Spickett // REGEX-DAG: name = "foobar", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
728a64d80aSDavid Spickett
fbar()738a64d80aSDavid Spickett int fbar() {
748a64d80aSDavid Spickett static int foo;
758a64d80aSDavid Spickett return foo + bar::baz::foo;
768a64d80aSDavid Spickett }
778a64d80aSDavid Spickett
788a64d80aSDavid Spickett int Foo;
798a64d80aSDavid Spickett
808a64d80aSDavid Spickett struct ssbar {
818a64d80aSDavid Spickett int foo;
828a64d80aSDavid Spickett };
838a64d80aSDavid Spickett
_start(sbar,ssbar)848a64d80aSDavid Spickett extern "C" void _start(sbar, ssbar) {}
85