Better support for POSIX paths in PDBs.
authorZachary Turner <zturner@google.com>
Thu, 11 Oct 2018 18:01:55 +0000 (18:01 +0000)
committerZachary Turner <zturner@google.com>
Thu, 11 Oct 2018 18:01:55 +0000 (18:01 +0000)
commite502f8b3158e7534f5c78a12d3ded3f15ebec216
tree5b9670c423b3d6924bf07b2f2e471e75206db6d5
parent1845645b0d689ce4562fec7ed7e7d975f0be987e
Better support for POSIX paths in PDBs.

While it doesn't make a *ton* of sense for POSIX paths to be
in PDBs, it's possible to occur in real scenarios involving
cross compilation.

The tools need to be able to handle this, because certain types
of debugging scenarios are possible without a running process
and so don't necessarily require you to be on a Windows system.
These include post-mortem debugging and binary forensics (e.g.
using a debugger to disassemble functions and examine symbols
without running the process).

There's changes in clang, LLD, and lldb in this patch.  After
this the cross-platform disassembly and source-list tests pass
on Linux.

Furthermore, the behavior of LLD can now be summarized by a much
simpler rule than before: Unless you specify /pdbsourcepath and
/pdbaltpath, the PDB ends up with paths that are valid within
the context of the machine that the link is performed on.

Differential Revision: https://reviews.llvm.org/D53149

llvm-svn: 344269
lld/COFF/PDB.cpp
lldb/lit/SymbolFile/NativePDB/source-list.cpp
lldb/source/Plugins/SymbolFile/NativePDB/CompileUnitIndex.cpp
lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp
llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp