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=function --function-flags=base %t | \ 6*8a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=BASE %s 7*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=function --function-flags=method %t | \ 8*8a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=METHOD %s 9*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=function --function-flags=full %t | \ 10*8a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=FULL %s 11*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=_Z3fooi --find=function --function-flags=full %t | \ 12*8a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=FULL-MANGLED %s 13*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --context=context --find=function --function-flags=base %t | \ 14*8a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=CONTEXT %s 15*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=not_there --find=function %t | \ 16*8a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=EMPTY %s 17*8a64d80aSDavid Spickett // 18*8a64d80aSDavid Spickett // RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx 19*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=function --function-flags=base %t | \ 20*8a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=BASE %s 21*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=function --function-flags=method %t | \ 22*8a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=METHOD %s 23*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=function --function-flags=full %t | \ 24*8a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=FULL-INDEXED %s 25*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=_Z3fooi --find=function --function-flags=full %t | \ 26*8a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=FULL-MANGLED %s 27*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --context=context --find=function --function-flags=base %t | \ 28*8a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=CONTEXT %s 29*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=not_there --find=function %t | \ 30*8a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=EMPTY %s 31*8a64d80aSDavid Spickett 32*8a64d80aSDavid Spickett // RUN: %clang %s -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames 33*8a64d80aSDavid Spickett // RUN: ld.lld %t.o -o %t 34*8a64d80aSDavid Spickett // RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix NAMES 35*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=function --function-flags=base %t | \ 36*8a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=BASE %s 37*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=function --function-flags=method %t | \ 38*8a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=METHOD %s 39*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --find=function --function-flags=full %t | \ 40*8a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=FULL-INDEXED %s 41*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=_Z3fooi --find=function --function-flags=full %t | \ 42*8a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=FULL-MANGLED %s 43*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=foo --context=context --find=function --function-flags=base %t | \ 44*8a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=CONTEXT %s 45*8a64d80aSDavid Spickett // RUN: lldb-test symbols --name=not_there --find=function %t | \ 46*8a64d80aSDavid Spickett // RUN: FileCheck --check-prefix=EMPTY %s 47*8a64d80aSDavid Spickett 48*8a64d80aSDavid Spickett // NAMES: Name: .debug_names 49*8a64d80aSDavid Spickett 50*8a64d80aSDavid Spickett // BASE: Found 4 functions: 51*8a64d80aSDavid Spickett // BASE-DAG: name = "foo()", mangled = "_Z3foov" 52*8a64d80aSDavid Spickett // BASE-DAG: name = "foo(int)", mangled = "_Z3fooi" 53*8a64d80aSDavid Spickett // BASE-DAG: name = "bar::foo()", mangled = "_ZN3bar3fooEv" 54*8a64d80aSDavid Spickett // BASE-DAG: name = "bar::baz::foo()", mangled = "_ZN3bar3baz3fooEv" 55*8a64d80aSDavid Spickett 56*8a64d80aSDavid Spickett // METHOD: Found 3 functions: 57*8a64d80aSDavid Spickett // METHOD-DAG: name = "sbar::foo()", mangled = "_ZN4sbar3fooEv" 58*8a64d80aSDavid Spickett // METHOD-DAG: name = "sbar::foo(int)", mangled = "_ZN4sbar3fooEi" 59*8a64d80aSDavid Spickett // METHOD-DAG: name = "ffbar()::sbaz::foo()", mangled = "_ZZ5ffbarvEN4sbaz3fooEv" 60*8a64d80aSDavid Spickett 61*8a64d80aSDavid Spickett // FULL-INDEXED: Found 7 functions: 62*8a64d80aSDavid Spickett // FULL-INDEXED-DAG: name = "foo()", mangled = "_Z3foov" 63*8a64d80aSDavid Spickett // FULL-INDEXED-DAG: name = "foo(int)", mangled = "_Z3fooi" 64*8a64d80aSDavid Spickett // FULL-INDEXED-DAG: name = "bar::foo()", mangled = "_ZN3bar3fooEv" 65*8a64d80aSDavid Spickett // FULL-INDEXED-DAG: name = "bar::baz::foo()", mangled = "_ZN3bar3baz3fooEv" 66*8a64d80aSDavid Spickett // FULL-INDEXED-DAG: name = "sbar::foo()", mangled = "_ZN4sbar3fooEv" 67*8a64d80aSDavid Spickett // FULL-INDEXED-DAG: name = "sbar::foo(int)", mangled = "_ZN4sbar3fooEi" 68*8a64d80aSDavid Spickett // FULL-INDEXED-DAG: name = "ffbar()::sbaz::foo()", mangled = "_ZZ5ffbarvEN4sbaz3fooEv" 69*8a64d80aSDavid Spickett 70*8a64d80aSDavid Spickett // FULL: Found 0 functions: 71*8a64d80aSDavid Spickett 72*8a64d80aSDavid Spickett // FULL-MANGLED: Found 1 functions: 73*8a64d80aSDavid Spickett // FULL-MANGLED-DAG: name = "foo(int)", mangled = "_Z3fooi" 74*8a64d80aSDavid Spickett 75*8a64d80aSDavid Spickett // CONTEXT: Found 1 functions: 76*8a64d80aSDavid Spickett // CONTEXT-DAG: name = "bar::foo()", mangled = "_ZN3bar3fooEv" 77*8a64d80aSDavid Spickett 78*8a64d80aSDavid Spickett // EMPTY: Found 0 functions: 79*8a64d80aSDavid Spickett 80*8a64d80aSDavid Spickett void foo() {} 81*8a64d80aSDavid Spickett void foo(int) {} 82*8a64d80aSDavid Spickett 83*8a64d80aSDavid Spickett namespace bar { 84*8a64d80aSDavid Spickett int context; 85*8a64d80aSDavid Spickett void foo() {} 86*8a64d80aSDavid Spickett namespace baz { 87*8a64d80aSDavid Spickett void foo() {} 88*8a64d80aSDavid Spickett } // namespace baz 89*8a64d80aSDavid Spickett } // namespace bar 90*8a64d80aSDavid Spickett 91*8a64d80aSDavid Spickett struct foo {}; 92*8a64d80aSDavid Spickett void fbar(struct foo) {} 93*8a64d80aSDavid Spickett 94*8a64d80aSDavid Spickett void Foo() {} 95*8a64d80aSDavid Spickett 96*8a64d80aSDavid Spickett struct sbar { 97*8a64d80aSDavid Spickett void foo(); 98*8a64d80aSDavid Spickett static void foo(int); 99*8a64d80aSDavid Spickett }; 100*8a64d80aSDavid Spickett void sbar::foo() {} 101*8a64d80aSDavid Spickett void sbar::foo(int) {} 102*8a64d80aSDavid Spickett 103*8a64d80aSDavid Spickett void ffbar() { 104*8a64d80aSDavid Spickett struct sbaz { 105*8a64d80aSDavid Spickett void foo() {} 106*8a64d80aSDavid Spickett }; 107*8a64d80aSDavid Spickett sbaz a; 108*8a64d80aSDavid Spickett a.foo(); 109*8a64d80aSDavid Spickett } 110*8a64d80aSDavid Spickett 111*8a64d80aSDavid Spickett extern "C" void _start() {} 112