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