llvm/lldb/test/Shell/SymbolFile/DWARF/x86/mixed-debug-names-complete-type-search.test

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_;