| # Not run on Windows because we are not able to break on all the required functions. | |
| # Even if we could, function.name* formatting also does not work correctly: | |
| # https://github.com/llvm/llvm-project/issues/143149 | |
| # UNSUPPORTED: system-windows | |
| # Test different name formats. | |
| # RUN: %build %S/Inputs/names.cpp --std c++17 -o %t.out | |
| # RUN: split-file %s %t | |
| #--- name_with_args.input | |
| # RUN: %lldb -b -s %t/name_with_args.input %t.out | FileCheck %s --check-prefix=NAME_WITH_ARGS | |
| settings set -f frame-format "frame ${function.name-with-args}\n" | |
| break set -n foo | |
| break set -n operator<< | |
| break set -n returns_func_ptr | |
| break set -n inlined_foo | |
| run | |
| # NAME_WITH_ARGS: frame int ns::foo<int ()>(t={{.*}}) | |
| c | |
| # NAME_WITH_ARGS: frame int ns::foo<int ()>(str="bar") | |
| c | |
| # NAME_WITH_ARGS: frame int ns::foo<(anonymous namespace)::$_0>(t=(anonymous namespace)::(unnamed class) @ {{.*}}) | |
| c | |
| # NAME_WITH_ARGS: frame int ns::foo<int (*)()>(t=({{.*}}`(anonymous namespace)::anon_bar() at {{.*}})) | |
| c | |
| # NAME_WITH_ARGS: frame int ns::foo<void (Foo::*)(int (*)(int)) const noexcept>(str="method") | |
| c | |
| # NAME_WITH_ARGS: frame detail::Quux<double> (* (*ns::returns_func_ptr<int>((null)={{.*}}))(int))(float) | |
| c | |
| # NAME_WITH_ARGS: frame void Foo::foo<int (*)()>(this={{.*}}, arg=({{.*}}`(anonymous namespace)::anon_bar() at {{.*}})) | |
| c | |
| # NAME_WITH_ARGS: frame void Foo::operator<<<1>(this={{.*}}, (null)=0) | |
| c | |
| # NAME_WITH_ARGS: frame detail::Quux<double> (* (*Foo::returns_func_ptr<int>(this={{.*}}, (null)={{.*}}))(int))(float) const | |
| c | |
| # NAME_WITH_ARGS: frame inlined_foo(str="bar") | |
| q | |
| #--- name.input | |
| # RUN: %lldb -b -s %t/name.input %t.out | FileCheck %s --check-prefix=NAME | |
| settings set -f frame-format "frame ${function.name}\n" | |
| break set -n inlined_foo | |
| run | |
| # NAME: frame inlined_foo(char const*) | |
| #--- name_without_args.input | |
| # RUN: %lldb -b -s %t/name_without_args.input %t.out | FileCheck %s --check-prefix=NAME_WITHOUT_ARGS | |
| settings set -f frame-format "frame ${function.name-without-args}\n" | |
| break set -n inlined_foo | |
| run | |
| # NAME_WITHOUT_ARGS: frame inlined_foo | |
| #--- mangled_name.input | |
| # RUN: %lldb -b -s %t/mangled_name.input %t.out | FileCheck %s --check-prefix=MANGLED_NAME | |
| settings set -f frame-format "frame ${function.mangled-name}\n" | |
| break set -n inlined_foo | |
| run | |
| # MANGLED_NAME: frame _Z11inlined_fooPKc |