[Lldb-commits] [PATCH] D56543: DWARF: Add some support for non-native directory separators
Greg Clayton via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Thu Jan 10 10:25:58 PST 2019
clayborg requested changes to this revision.
clayborg added a comment.
This revision now requires changes to proceed.
DW_AT_comp_dir isn't enough. See inline suggestions.
================
Comment at: source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp:775-787
+void DWARFUnit::ComputePathStyle() {
+ m_path_style = FileSpec::Style::native;
+ const DWARFDebugInfoEntry *die = GetUnitDIEPtrOnly();
+ if (!die)
+ return;
+ llvm::StringRef comp_dir =
+ die->GetAttributeValueAsString(m_dwarf, this, DW_AT_comp_dir, NULL);
----------------
I would suggest adding a "FileSpec DWARFUnit::GetFileSpec()" and moving code from SymbolFileDWARF::ParseCompileUnit into this function:
```
FileSpec cu_file_spec(cu_die.GetName());
if (cu_file_spec) {
// If we have a full path to the compile unit, we don't need to
// resolve the file. This can be expensive e.g. when the source
// files are
// NFS mounted.
if (cu_file_spec.IsRelative()) {
const char *cu_comp_dir{
cu_die.GetAttributeValueAsString(DW_AT_comp_dir, nullptr)};
cu_file_spec.PrependPathComponent(resolveCompDir(cu_comp_dir));
}
```
We might even cache the FileSpec object inside DWARFUnit so it doesn't have to be recomputed?
Then use this resolved path. DW_AT_comp_dir isn't always there, sometimes the DW_AT_name is a full path only. So we should centralize this in DWARFUnit. We might want to make a function like:
```
void DWARFUnit::ResolveCompileUnitDirectoryRelativeFile(FileSpec &spec);
```
And then have "FileSpec DWARFUnit::GetFileSpec()" call it. I was looking at the other uses of DW_AT_comp_dir in the source, and the line tables tend to need to resolve relative paths. A few other locations. Might be nice to get the DWARFUnit and resolve the path using that? We can add "FileSpec DWARFDie::GetPath()" accessor, could even add a "void DWARFDie::ResolveRelativePath(FileSpec &)"
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D56543/new/
https://reviews.llvm.org/D56543
More information about the lldb-commits
mailing list