// Test lldb is able to compute the fully qualified names on templates with // -gsimple-template-names and -fdebug-types-section. // REQUIRES: lld // Test against logging to see if we print the fully qualified names correctly. // RUN: %clangxx --target=x86_64-pc-linux -g -gsimple-template-names %s -c -o %t1.o // RUN: ld.lld %t1.o -o %t1 // RUN: %lldb %t1 -o "log enable dwarf comp" -o "target variable v3" -o exit | FileCheck %s --check-prefix=LOG // Test that we following DW_AT_signature correctly. If not, lldb might confuse the types of v1 and v2. // RUN: %clangxx --target=x86_64-pc-linux -g -gsimple-template-names -fdebug-types-section %s -c -o %t2.o // RUN: ld.lld %t2.o -o %t2 // RUN: %lldb %t2 -o "target variable v1 v2" \ // RUN: -o "type lookup t2" -o "type lookup t2" \ // RUN: -o exit | FileCheck %s --check-prefix=TYPE // LOG: unique name: t3 >::t4 // TYPE-LABEL: target variable v1 v2 // TYPE: (t2 >) v1 = {} // TYPE: (t2 >) v2 = {} // TYPE-LABEL: type lookup t2 // TYPE: template<> struct t2 { // TYPE-NEXT: } // TYPE-LABEL: type lookup t2 // TYPE: template<> struct t2 { // TYPE-NEXT: } struct outer_struct1 { template struct t1 {}; }; struct outer_struct2 { template struct t1 {}; }; template struct t2 {}; t2> v1; t2> v2; t2 v1_1; t2 v1_2; template struct t3 { struct t4 {}; }; t3>::t4 v3;