1 // clang-format off 2 // REQUIRES: lld, x86 3 4 // RUN: %clang_cl --target=x86_64-windows-msvc -Od -Z7 -c /GR- /Fo%t.obj -- %s 5 // RUN: lld-link -debug:full -nodefaultlib -entry:main %t.obj -out:%t.exe -pdb:%t.pdb 6 7 // RUN: lldb-test symbols --find=function --name=main --function-flags=full %t.exe \ 8 // RUN: | FileCheck %s --check-prefix=FIND-MAIN 9 10 // RUN: lldb-test symbols --find=function --name=static_fn --function-flags=full %t.exe \ 11 // RUN: | FileCheck %s --check-prefix=FIND-STATIC 12 13 // RUN: lldb-test symbols --find=function --name=varargs_fn --function-flags=full %t.exe \ 14 // RUN: | FileCheck %s --check-prefix=FIND-VAR 15 16 // RUN: lldb-test symbols --find=function --name=Struct::simple_method --function-flags=full %t.exe \ 17 // RUN: | FileCheck %s --check-prefix=FIND-SIMPLE 18 19 // RUN: lldb-test symbols --find=function --name=Struct::virtual_method --function-flags=full %t.exe \ 20 // RUN: | FileCheck %s --check-prefix=FIND-VIRTUAL 21 22 // RUN: lldb-test symbols --find=function --name=Struct::static_method --function-flags=full %t.exe \ 23 // RUN: | FileCheck %s --check-prefix=FIND-STATIC-METHOD 24 25 // RUN: lldb-test symbols --find=function --name=Struct::overloaded_method --function-flags=full %t.exe \ 26 // RUN: | FileCheck %s --check-prefix=FIND-OVERLOAD 27 28 struct Struct { 29 int simple_method() { 30 return 1; 31 } 32 33 virtual int virtual_method() { 34 return 2; 35 } 36 37 static int static_method() { 38 return 3; 39 } 40 41 int overloaded_method() { 42 return 4 + overloaded_method('a') + overloaded_method('a', 1); 43 } 44 protected: 45 virtual int overloaded_method(char c) { 46 return 5; 47 } 48 private: 49 static int overloaded_method(char c, int i, ...) { 50 return 6; 51 } 52 }; 53 54 Struct s; 55 56 static int static_fn() { 57 return 42; 58 } 59 60 int varargs_fn(int x, int y, ...) { 61 return x + y; 62 } 63 64 int main(int argc, char **argv) { 65 return static_fn() + varargs_fn(argc, argc) + s.simple_method() + 66 Struct::static_method() + s.virtual_method() + s.overloaded_method(); 67 } 68 69 // FIND-MAIN: Function: id = {{.*}}, name = "main" 70 // FIND-MAIN-NEXT: FuncType: id = {{.*}}, compiler_type = "int (int, char **)" 71 72 // FIND-STATIC: Function: id = {{.*}}, name = "{{.*}}static_fn{{.*}}" 73 // FIND-STATIC-NEXT: FuncType: id = {{.*}}, compiler_type = "int (void)" 74 75 // FIND-VAR: Function: id = {{.*}}, name = "{{.*}}varargs_fn{{.*}}" 76 // FIND-VAR-NEXT: FuncType: id = {{.*}}, compiler_type = "int (int, int, ...)" 77 78 // FIND-SIMPLE: Function: id = {{.*}}, name = "{{.*}}Struct::simple_method{{.*}}" 79 // FIND-SIMPLE-NEXT: FuncType: id = {{.*}}, compiler_type = "int (void)" 80 81 // FIND-VIRTUAL: Function: id = {{.*}}, name = "{{.*}}Struct::virtual_method{{.*}}" 82 // FIND-VIRTUAL-NEXT: FuncType: id = {{.*}}, compiler_type = "int (void)" 83 84 // FIND-STATIC-METHOD: Function: id = {{.*}}, name = "{{.*}}Struct::static_method{{.*}}" 85 // FIND-STATIC-METHOD-NEXT: FuncType: id = {{.*}}, compiler_type = "int (void)" 86 87 // FIND-OVERLOAD: Function: id = {{.*}}, name = "{{.*}}Struct::overloaded_method{{.*}}" 88 // FIND-OVERLOAD: FuncType: id = {{.*}}, compiler_type = "int (void)" 89 // FIND-OVERLOAD: FuncType: id = {{.*}}, compiler_type = "int (char)" 90 // FIND-OVERLOAD: FuncType: id = {{.*}}, compiler_type = "int (char, int, ...)" 91