Author: Pavel Labath Date: 2024-08-12T18:41:28+02:00 New Revision: b3ed1d92112e0f455f8ef0888ef4c5d0ca29096d
URL: https://github.com/llvm/llvm-project/commit/b3ed1d92112e0f455f8ef0888ef4c5d0ca29096d DIFF: https://github.com/llvm/llvm-project/commit/b3ed1d92112e0f455f8ef0888ef4c5d0ca29096d.diff LOG: Reapply "[lldb/DWARF] Search fallback to the manual index in GetFullyQualified… (#102123)" This reverts commit 38b67c54ed858f60c0caebcfba4b61f9326684ca. I reverted the wrong patch -- sorry :( Added: lldb/test/Shell/SymbolFile/DWARF/x86/mixed-debug-names-complete-type-search.test Modified: lldb/source/Plugins/SymbolFile/DWARF/DebugNamesDWARFIndex.cpp lldb/test/Shell/SymbolFile/DWARF/x86/dwp-hash-collision.s Removed: ################################################################################ diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DebugNamesDWARFIndex.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DebugNamesDWARFIndex.cpp index 7e66b3dccf97fa..32d8a92305aafa 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DebugNamesDWARFIndex.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DebugNamesDWARFIndex.cpp @@ -371,6 +371,7 @@ void DebugNamesDWARFIndex::GetFullyQualifiedType( !ProcessEntry(entry, callback)) return; } + m_fallback.GetFullyQualifiedType(context, callback); } bool DebugNamesDWARFIndex::SameParentChain( diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-hash-collision.s b/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-hash-collision.s index d626b4602ad58f..7e106d6e9c2de4 100644 --- a/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-hash-collision.s +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-hash-collision.s @@ -3,6 +3,9 @@ ## split unit from the DWP file. This can sometimes happen when the compile unit ## is nearly empty (e.g. because LTO has optimized all of it away). +# Is flaky on Windows on Arm. +# UNSUPPORTED: system-windows + # RUN: llvm-mc -triple=x86_64-pc-linux -filetype=obj %s --defsym MAIN=0 > %t # RUN: llvm-mc -triple=x86_64-pc-linux -filetype=obj %s > %t.dwp # RUN: %lldb %t -o "image lookup -t my_enum_type" \ diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/mixed-debug-names-complete-type-search.test b/lldb/test/Shell/SymbolFile/DWARF/x86/mixed-debug-names-complete-type-search.test new file mode 100644 index 00000000000000..71da8fad001652 --- /dev/null +++ b/lldb/test/Shell/SymbolFile/DWARF/x86/mixed-debug-names-complete-type-search.test @@ -0,0 +1,35 @@ +REQUIRES: lld, python + +RUN: split-file %s %t +RUN: %clang --target=x86_64-pc-linux -g -gpubnames -c %t/file1.c -o %t-1.o +RUN: %clang --target=x86_64-pc-linux -g -gno-pubnames -c %t/file2.c -o %t-2.o +RUN: llvm-dwarfdump %t-1.o --debug-names | FileCheck %s --check-prefix=PUBNAMES +RUN: llvm-dwarfdump %t-2.o --debug-names | FileCheck %s --check-prefix=NOPUBNAMES +RUN: ld.lld %t-1.o %t-2.o -o %t.out +RUN: %lldb %t.out -s %t/commands -o exit | FileCheck %s + +// Precondition check: The first file should contain a debug_names index, but no +// entries for MYSTRUCT. +PUBNAMES: Name Index @ 0x0 { +PUBNAMES-NOT: MYSTRUCT + +// The second file should not contain an index. +NOPUBNAMES-NOT: Name Index + +// Starting from the variable in the first file, we should be able to find the +// declaration of the type in the first unit, and then match that with the +// definition in the second unit. +CHECK: (lldb) script +CHECK: struct MYSTRUCT { +CHECK-NEXT: int x; +CHECK-NEXT: } + +#--- commands +script lldb.target.FindFirstGlobalVariable("struct_ptr").GetType().GetPointeeType() +#--- file1.c +struct MYSTRUCT *struct_ptr; +#--- file2.c +struct MYSTRUCT { + int x; +}; +struct MYSTRUCT struct_; _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits