| // REQUIRES: lld | |
| // RUN: %clangxx %s -g -c -o %t.o --target=x86_64-pc-linux -gno-pubnames | |
| // RUN: ld.lld %t.o -o %t | |
| // RUN: lldb-test symbols --name=foo --find=function --function-flags=base %t | \ | |
| // RUN: FileCheck --check-prefix=BASE %s | |
| // RUN: lldb-test symbols --name=foo --find=function --function-flags=method %t | \ | |
| // RUN: FileCheck --check-prefix=METHOD %s | |
| // RUN: lldb-test symbols --name=foo --find=function --function-flags=full %t | \ | |
| // RUN: FileCheck --check-prefix=FULL %s | |
| // RUN: lldb-test symbols --name=_Z3fooi --find=function --function-flags=full %t | \ | |
| // RUN: FileCheck --check-prefix=FULL-MANGLED %s | |
| // RUN: lldb-test symbols --name=_ZN3bar3baz3fooEv --find=function --function-flags=full %t | \ | |
| // RUN: FileCheck --check-prefix=FULL-MANGLED-NAMESPACE %s | |
| // RUN: lldb-test symbols --name=_ZN4sbar3fooEi --find=function --function-flags=full %t | \ | |
| // RUN: FileCheck --check-prefix=FULL-MANGLED-METHOD %s | |
| // RUN: lldb-test symbols --name=foo --context=context --find=function --function-flags=base %t | \ | |
| // RUN: FileCheck --check-prefix=CONTEXT %s | |
| // RUN: lldb-test symbols --name=not_there --find=function %t | \ | |
| // RUN: FileCheck --check-prefix=EMPTY %s | |
| // | |
| // RUN: %clangxx %s -g -c -o %t --target=x86_64-apple-macosx | |
| // RUN: lldb-test symbols --name=foo --find=function --function-flags=base %t | \ | |
| // RUN: FileCheck --check-prefix=BASE %s | |
| // RUN: lldb-test symbols --name=foo --find=function --function-flags=method %t | \ | |
| // RUN: FileCheck --check-prefix=METHOD %s | |
| // RUN: lldb-test symbols --name=foo --find=function --function-flags=full %t | \ | |
| // RUN: FileCheck --check-prefix=FULL %s | |
| // RUN: lldb-test symbols --name=_Z3fooi --find=function --function-flags=full %t | \ | |
| // RUN: FileCheck --check-prefix=FULL-MANGLED %s | |
| // RUN: lldb-test symbols --name=_ZN3bar3baz3fooEv --find=function --function-flags=full %t | \ | |
| // RUN: FileCheck --check-prefix=FULL-MANGLED-NAMESPACE %s | |
| // RUN: lldb-test symbols --name=_ZN4sbar3fooEi --find=function --function-flags=full %t | \ | |
| // RUN: FileCheck --check-prefix=FULL-MANGLED-METHOD %s | |
| // RUN: lldb-test symbols --name=foo --context=context --find=function --function-flags=base %t | \ | |
| // RUN: FileCheck --check-prefix=CONTEXT %s | |
| // RUN: lldb-test symbols --compiler-context=ClassOrStruct:sbar,Function:foo -language=c++ -find=function -function-flags=method %t | \ | |
| // RUN: FileCheck --check-prefix=COMPILER-CONTEXT %s | |
| // RUN: lldb-test symbols --name=not_there --find=function %t | \ | |
| // RUN: FileCheck --check-prefix=EMPTY %s | |
| // RUN: %clangxx %s -c -o %t.o --target=x86_64-pc-linux -gdwarf-5 -gpubnames | |
| // RUN: ld.lld %t.o -o %t | |
| // RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix NAMES | |
| // RUN: lldb-test symbols --name=foo --find=function --function-flags=base %t | \ | |
| // RUN: FileCheck --check-prefix=BASE %s | |
| // RUN: lldb-test symbols --name=foo --find=function --function-flags=method %t | \ | |
| // RUN: FileCheck --check-prefix=METHOD %s | |
| // RUN: lldb-test symbols --name=foo --find=function --function-flags=full %t | \ | |
| // RUN: FileCheck --check-prefix=FULL %s | |
| // RUN: lldb-test symbols --name=_Z3fooi --find=function --function-flags=full %t | \ | |
| // RUN: FileCheck --check-prefix=FULL-MANGLED %s | |
| // RUN: lldb-test symbols --name=_ZN3bar3baz3fooEv --find=function --function-flags=full %t | \ | |
| // RUN: FileCheck --check-prefix=FULL-MANGLED-NAMESPACE %s | |
| // RUN: lldb-test symbols --name=_ZN4sbar3fooEi --find=function --function-flags=full %t | \ | |
| // RUN: FileCheck --check-prefix=FULL-MANGLED-METHOD %s | |
| // RUN: lldb-test symbols --name=foo --context=context --find=function --function-flags=base %t | \ | |
| // RUN: FileCheck --check-prefix=CONTEXT %s | |
| // RUN: lldb-test symbols --name=not_there --find=function %t | \ | |
| // RUN: FileCheck --check-prefix=EMPTY %s | |
| /// Test a per-module index built by lld. | |
| // RUN: ld.lld --debug-names %t.o -o %t | |
| // RUN: lldb-test symbols --name=foo --find=function --function-flags=base %t | \ | |
| // RUN: FileCheck --check-prefix=BASE %s | |
| // NAMES: Name: .debug_names | |
| // BASE: Found 4 functions: | |
| // BASE-DAG: name = "foo()", mangled = "_Z3foov" | |
| // BASE-DAG: name = "foo(int)", mangled = "_Z3fooi" | |
| // BASE-DAG: name = "bar::foo()", mangled = "_ZN3bar3fooEv" | |
| // BASE-DAG: name = "bar::baz::foo()", mangled = "_ZN3bar3baz3fooEv" | |
| // METHOD: Found 3 functions: | |
| // METHOD-DAG: name = "sbar::foo()", mangled = "_ZN4sbar3fooEv" | |
| // METHOD-DAG: name = "sbar::foo(int)", mangled = "_ZN4sbar3fooEi" | |
| // METHOD-DAG: name = "ffbar()::sbaz::foo()", mangled = "_ZZ5ffbarvEN4sbaz3fooEv" | |
| // FULL: Found 0 functions: | |
| // FULL-MANGLED: Found 1 functions: | |
| // FULL-MANGLED-DAG: name = "foo(int)", mangled = "_Z3fooi" | |
| // FULL-MANGLED-NAMESPACE: Found 1 functions: | |
| // FULL-MANGLED-NAMESPACE-DAG: name = "bar::baz::foo()", mangled = "_ZN3bar3baz3fooEv" | |
| // FULL-MANGLED-METHOD: Found 1 functions: | |
| // FULL-MANGLED-METHOD-DAG: name = "sbar::foo(int)", mangled = "_ZN4sbar3fooEi" | |
| // CONTEXT: Found 1 functions: | |
| // CONTEXT-DAG: name = "bar::foo()", mangled = "_ZN3bar3fooEv", decl_context = {Namespace(bar)} | |
| // COMPILER-CONTEXT: Found 2 functions: | |
| // COMPILER-CONTEXT-DAG: name = "sbar::foo()", mangled = "_ZN4sbar3fooEv" | |
| // COMPILER-CONTEXT-DAG: name = "sbar::foo(int)", mangled = "_ZN4sbar3fooEi" | |
| // EMPTY: Found 0 functions: | |
| void foo() {} | |
| void foo(int) {} | |
| namespace bar { | |
| int context; | |
| void foo() {} | |
| namespace baz { | |
| void foo() {} | |
| } // namespace baz | |
| } // namespace bar | |
| struct foo {}; | |
| void fbar(struct foo) {} | |
| void Foo() {} | |
| struct sbar { | |
| void foo(); | |
| static void foo(int); | |
| }; | |
| void sbar::foo() {} | |
| void sbar::foo(int) {} | |
| void ffbar() { | |
| struct sbaz { | |
| void foo() {} | |
| }; | |
| sbaz a; | |
| a.foo(); | |
| } | |
| extern "C" void _start() {} |