Skip symlinks to the original file when searching for debug info
Summary:
Symbols::LocateExecutableSymbolFile tries to locate the file in containing the debug info in a
splitdebug configuration. It tries to skip over the original file in its search path, but it was
easily fooled by symlinks. This changes the function to use llvm::sys::fs::equivalent, which can
correctly compare symlinks.
As a side effect, I had to fix one test because the address for the "abort" function resolves on
my system to "__GI_abort" now. With the debug info, the libc on my system contains two symbols
associated with the address of the abort function, and lldb prefers __GI_abort, possibly because
the debug info is associated with it. It would be nice at some point to have it prefer the public
symbol name.
Reviewers: emaste, zturner
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D7836
llvm-svn: 230476
diff --git a/lldb/source/Host/common/Symbols.cpp b/lldb/source/Host/common/Symbols.cpp
index 41f465a..1d80a97 100644
--- a/lldb/source/Host/common/Symbols.cpp
+++ b/lldb/source/Host/common/Symbols.cpp
@@ -87,7 +87,7 @@
const std::string &filename = files[idx_file];
FileSpec file_spec (filename.c_str(), true);
- if (file_spec == module_spec.GetFileSpec())
+ if (llvm::sys::fs::equivalent (file_spec.GetPath(), module_spec.GetFileSpec().GetPath()))
continue;
if (file_spec.Exists())