m_symfile_spec is in Module _only_ for the case where you told us where the 
symbol file was manually so that we could create the symbol file lazily only 
when we needed to. You might have /tmp/a.out as the file and 
/users/me/symbols/a.out as the symbol file and when you create the symbol file 
we will use Module::GetSymbolFileFileSpec() as a hint as to where to look. The 
problem is this path might be a path to a bundle, like a dSYM file on MacOSX. 
So the path might not be resolved and the right file inside the bundle might 
not be correct. So on MacOSX you might have /tmp/a.out as the module's object 
file path and "/tmp/a.out.dSYM" as the symbol file path. The SymbolVendorMacOSX 
will know what to do with this bundle path (it will actually create an object 
file with "/tmp/a.out.dSYM/Contents/Resources/DWARF/a.out", so though you are 
updating the m_symfile_spec, it won't be usable by anyone unless they first 
call Module::GetSymbolVendor() and then call Module::GetSymbolFileFileSp!
 ec(). So that isn't a great API. Granted this should be documented better in 
the GetSymbolFileFileSpec() prototype in the Module.h header file. So the 
previous code that was there is correct and no changes really need to be made 
since I wouldn't want anyone really using GetSymbolFileFileSpec() since they 
would have to know to call Module::GetSymbolVendor() first. Feel free to add a 
SymbolVendor::GetMainFileSpec() to SymbolVendor and place the following code in 
it:

  SymbolFile *symbol_file = symbol_vendor->GetSymbolFile();
  if (symbol_file)
  {
      ObjectFile *object_file = symbol_file->GetObjectFile();
      if (object_file)
          return object_file->GetFileSpec();
  }
  return FileSpec();

We should name the accessor SymbolVendor::GetMainFileSpec() because a 
SymbolVendor might use more than one file for the debug info. None currently 
do, but that is the idea behind SymbolVendor: do what you need to do to get the 
best debug info possible and use as many sources/files as required.


http://reviews.llvm.org/D8002

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/



_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

Reply via email to