51 lines · cpp
1// Test lldb is able to compute the fully qualified names on templates with2// -gsimple-template-names and -fdebug-types-section.3 4// REQUIRES: lld5 6// Test against logging to see if we print the fully qualified names correctly.7// RUN: %clangxx --target=x86_64-pc-linux -g -gsimple-template-names %s -c -o %t1.o8// RUN: ld.lld %t1.o -o %t19// RUN: %lldb %t1 -o "log enable dwarf comp" -o "target variable v3" -o exit | FileCheck %s --check-prefix=LOG10 11// Test that we following DW_AT_signature correctly. If not, lldb might confuse the types of v1 and v2.12// RUN: %clangxx --target=x86_64-pc-linux -g -gsimple-template-names -fdebug-types-section %s -c -o %t2.o13// RUN: ld.lld %t2.o -o %t214// RUN: %lldb %t2 -o "target variable v1 v2" \15// RUN: -o "type lookup t2<outer_struct1>" -o "type lookup t2<outer_struct2>" \16// RUN: -o exit | FileCheck %s --check-prefix=TYPE17 18// LOG: unique name: t3<t2<int> >::t419 20// TYPE-LABEL: target variable v1 v221// TYPE: (t2<outer_struct1::t1<int> >) v1 = {}22// TYPE: (t2<outer_struct2::t1<int> >) v2 = {}23 24// TYPE-LABEL: type lookup t2<outer_struct1>25// TYPE: template<> struct t2<outer_struct1> {26// TYPE-NEXT: }27 28// TYPE-LABEL: type lookup t2<outer_struct2>29// TYPE: template<> struct t2<outer_struct2> {30// TYPE-NEXT: }31 32struct outer_struct1 {33 template <typename> struct t1 {};34};35 36struct outer_struct2 {37 template <typename> struct t1 {};38};39 40template <typename> struct t2 {};41t2<outer_struct1::t1<int>> v1;42t2<outer_struct2::t1<int>> v2;43 44t2<outer_struct1> v1_1;45t2<outer_struct2> v1_2;46 47template <typename> struct t3 {48 struct t4 {};49};50t3<t2<int>>::t4 v3;51