blob: 90d39aa3314c38d09e4260e73328e25798e27b74 [file] [edit]
// Test that lldb reports an error when debug map object files are missing,
// instead of silently dropping their debug info, and reports it once per
// module.
// REQUIRES: system-darwin
// RUN: %clang_host %s -g -c -o %t.o
// RUN: %clang_host %s -g -c -DFOO -o %t.foo.o
// RUN: %clang_host %t.o -g -o %t
// RUN: %clang_host %t.o %t.foo.o -g -o %t.two
// RUN: rm %t.o %t.foo.o
// RUN: %lldb %t -o "breakpoint set -f %s -l 30" -o exit 2>&1 | FileCheck %s
// RUN: %lldb %t.two -o "breakpoint set -f %s -l 30" \
// RUN: -o "image dump separate-debug-info --errors-only" -o exit \
// RUN: 2> %t.two.err | FileCheck %s --check-prefix=TWO
// RUN: FileCheck %s --check-prefix=TWO-ERR --input-file=%t.two.err \
// RUN: --implicit-check-not=error:
// CHECK: error: {{.*}}.o" containing debug info does not exist, debug info will not be loaded
// The diagnostic is printed asynchronously, so check stderr apart from stdout.
// TWO-ERR: error: {{.*}} 2 of 2 debug map object files do not exist: debug info cannot be loaded for them
// TWO: (lldb) image dump separate-debug-info --errors-only
// TWO: Type: "oso"
// TWO: E debug map object file "{{.*}}.tmp.o" containing debug info does not exist
// TWO: E debug map object file "{{.*}}.tmp.foo.o" containing debug info does not exist
#ifdef FOO
int foo() { return 1; }
#else
int main() { return 0; }
#endif