[Lldb-commits] [PATCH] D38568: [lldb] Enable using out-of-tree dwps

Alexander Shaposhnikov via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Tue Oct 10 16:28:47 PDT 2017


This revision was automatically updated to reflect the committed changes.
Closed by commit rL315387: [lldb] Enable using out-of-tree dwps (authored by alexshap).

Changed prior to commit:
  https://reviews.llvm.org/D38568?vs=118250&id=118504#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D38568

Files:
  lldb/trunk/source/Host/common/Symbols.cpp
  lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp


Index: lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
===================================================================
--- lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
+++ lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
@@ -30,6 +30,7 @@
 
 #include "lldb/Host/FileSystem.h"
 #include "lldb/Host/Host.h"
+#include "lldb/Host/Symbols.h"
 
 #include "lldb/Interpreter/OptionValueFileSpecList.h"
 #include "lldb/Interpreter/OptionValueProperties.h"
@@ -4352,7 +4353,11 @@
 
 SymbolFileDWARFDwp *SymbolFileDWARF::GetDwpSymbolFile() {
   llvm::call_once(m_dwp_symfile_once_flag, [this]() {
-    FileSpec dwp_filespec(m_obj_file->GetFileSpec().GetPath() + ".dwp", false);
+    ModuleSpec module_spec;
+    module_spec.GetFileSpec() = m_obj_file->GetFileSpec();
+    module_spec.GetSymbolFileSpec() =
+        FileSpec(m_obj_file->GetFileSpec().GetPath() + ".dwp", false);
+    FileSpec dwp_filespec = Symbols::LocateExecutableSymbolFile(module_spec);
     if (dwp_filespec.Exists()) {
       m_dwp_symfile = SymbolFileDWARFDwp::Create(GetObjectFile()->GetModule(),
                                                  dwp_filespec);
Index: lldb/trunk/source/Host/common/Symbols.cpp
===================================================================
--- lldb/trunk/source/Host/common/Symbols.cpp
+++ lldb/trunk/source/Host/common/Symbols.cpp
@@ -285,7 +285,12 @@
           if (num_specs == 1) {
             ModuleSpec mspec;
             if (specs.GetModuleSpecAtIndex(0, mspec)) {
-              if (mspec.GetUUID() == module_uuid)
+              // Skip the uuids check if module_uuid is invalid.
+              // For example, this happens for *.dwp files since
+              // at the moment llvm-dwp doesn't output build ids,
+              // nor does binutils dwp.
+              if (!module_uuid.IsValid() ||
+                  module_uuid == mspec.GetUUID())
                 return file_spec;
             }
           }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D38568.118504.patch
Type: text/x-patch
Size: 1977 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20171010/721279f3/attachment.bin>


More information about the lldb-commits mailing list