| # XFAIL: target-windows |
| |
| # Test the ${function.basename} frame-format variable. |
| |
| # RUN: split-file %s %t |
| # RUN: %clangxx_host -g -gdwarf %t/main.cpp -o %t.out |
| # RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 \ |
| # RUN: | FileCheck %s |
| # |
| # RUN: %clangxx_host -O0 %t/main.cpp -o %t-nodebug.out |
| # RUN: %lldb -x -b -s %t/commands.input %t-nodebug.out -o exit 2>&1 \ |
| # RUN: | FileCheck %s |
| |
| #--- main.cpp |
| namespace ns { |
| template<typename T> |
| struct Bar { |
| template<typename K> |
| T bar(K k) const & { return 1.0f; } |
| }; |
| |
| template<typename T> |
| struct Foo { |
| template<typename K> |
| [[gnu::abi_tag("Test")]] void foo() const volatile && { |
| Bar<float> b; |
| b.bar(b); |
| } |
| }; |
| |
| template<typename T> |
| T func() { |
| ns::Foo<int>{}.foo<int>(); |
| return T{}; |
| } |
| } // namespace ns |
| |
| int main() { |
| ns::func<ns::Foo<int>>(); |
| return 0; |
| } |
| |
| #--- commands.input |
| settings set -f frame-format "custom-frame '${function.basename}'\n" |
| break set -n bar |
| |
| run |
| bt |
| |
| # CHECK: custom-frame 'bar' |
| # CHECK: custom-frame 'foo[abi:Test]' |
| # CHECK: custom-frame 'func' |