This is a first attempt at getting SymbolFilePDB working with line table support. A few notes:
- This won't compile until a corresponding patch goes in on the LLVM side. The patch is done on my side, but not committed yet.
- Right now only line tables and compilation units are supported. In particular, this means that "target modules dump line-table <file>" works, and displays output like this:
(lldb) file d:\src\llvmbuild\ninja\tools\lldb\unittests\SymbolFile\PDB\Inputs\test-pdb.exe Current executable set to 'd:\src\llvmbuild\ninja\tools\lldb\unittests\SymbolFile\PDB\Inputs\test-pdb.exe' (i686). (lldb) target modules dump line-table test-pdb.cpp Line table for test-pdb.cpp in `test-pdb.exe 0x00401020: :4 0x00401030: :6 0x00401033: :8 0x00401035: :9
- I checked in some unittests with 2 precompiled binaries and a PDB file for testing purposes. I opted for unittests and checked-in binaries here for a number of reasons.
- The SB API does not provide a way to test something this low level.
- Obviously not every platform has the ability to create PDB files.
- With the help of some magic compiler switches, the binaries are very small.
- At some point or another this will be unavoidable, as we will want to test "PDB file generated by MSVC on Windows can be read on Linux"
- I don't feel comfortable checking in something with no tests.
Should we make a SBHostOS::Initialize() and move this code and the windows specific #include statements into that file? Not sure how `#if defined()` up this file is, but it is something to think about.