[lldb] Warn when we fail to find dwo/dwp files

This ensures that the user is aware that many commands will not work
correctly.

We print the warning only once (per module) to avoid spamming the user
with potentially thousands of error messages.

Differential Revision: https://reviews.llvm.org/D120892
This commit is contained in:
Pavel Labath 2022-03-03 12:32:52 +01:00
parent 2c7afadb47
commit 8f6ee17f22
3 changed files with 15 additions and 1 deletions

View File

@ -1746,8 +1746,14 @@ SymbolFileDWARF::GetDwoSymbolFileForCompileUnit(
dwo_file.AppendPathComponent(dwo_name);
}
if (!FileSystem::Instance().Exists(dwo_file))
if (!FileSystem::Instance().Exists(dwo_file)) {
if (m_dwo_warning_issued.test_and_set(std::memory_order_relaxed) == false) {
GetObjectFile()->GetModule()->ReportWarning(
"unable to locate separate debug file (dwo, dwp). Debugging will be "
"degraded.");
}
return nullptr;
}
const lldb::offset_t file_offset = 0;
DataBufferSP dwo_file_data_sp;

View File

@ -560,6 +560,7 @@ protected:
/// address in the module.
lldb::addr_t m_first_code_address = LLDB_INVALID_ADDRESS;
lldb_private::StatsDuration m_parse_time;
std::atomic_flag m_dwo_warning_issued = ATOMIC_FLAG_INIT;
};
#endif // LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_SYMBOLFILEDWARF_H

View File

@ -0,0 +1,7 @@
// RUN: %clang --target=x86_64-pc-linux -g -gsplit-dwarf -c %s -o %t.o
// RUN: rm %t.dwo
// RUN: %lldb %t.o -o "br set -n main" -o exit 2>&1 | FileCheck %s
// CHECK: warning: {{.*}} unable to locate separate debug file (dwo, dwp). Debugging will be degraded.
int main() { return 47; }