[PATCH] D20936: [pdb] Parse module line info

Zachary Turner via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 2 16:04:53 PDT 2016


zturner created this revision.
zturner added reviewers: ruiu, rnk, majnemer, amccarth.
zturner added a subscriber: llvm-commits.

Rather than just dumping binary blocks for line info, we now pretty print individual line and column records.

To facilitate this, a couple of changes had to be made:

1. `ModuleSubstream` got moved from `DebugInfo/PDB` to `DebugInfo/CodeView`, and various codeview related types are defined there.  It turns out `DebugInfo/CodeView/Line.h` already defines many of these structures, but this is really old code that is not endian aware, doesn't interact well with `StreamInterface` and not very helpful for getting stuff out of a PDB.  Eventually we should migrate the old readobj `COFFDumper` code to these new structures, or at least merge their functionality somehow.

2. A `ModuleSubstream` visitor is introduced.  Depending on where your module substream array comes from, different subsets of record types can be expected.  We are already hand parsing these substream arrays in many places especially in `COFFDumper.cpp`.  In the future we can migrate these paths to the visitor as well, which should reduce a lot of code in `COFFDumper.cpp`.



http://reviews.llvm.org/D20936

Files:
  include/llvm/DebugInfo/CodeView/CodeView.h
  include/llvm/DebugInfo/CodeView/ModuleSubstream.h
  include/llvm/DebugInfo/CodeView/ModuleSubstreamVisitor.h
  include/llvm/DebugInfo/CodeView/StreamArray.h
  include/llvm/DebugInfo/CodeView/StreamReader.h
  include/llvm/DebugInfo/PDB/Raw/DbiStream.h
  include/llvm/DebugInfo/PDB/Raw/ModStream.h
  include/llvm/DebugInfo/PDB/Raw/ModuleSubstreamRecord.h
  include/llvm/DebugInfo/PDB/Raw/RawTypes.h
  lib/DebugInfo/CodeView/CMakeLists.txt
  lib/DebugInfo/CodeView/ModuleSubstream.cpp
  lib/DebugInfo/CodeView/ModuleSubstreamVisitor.cpp
  lib/DebugInfo/PDB/CMakeLists.txt
  lib/DebugInfo/PDB/Raw/ModStream.cpp
  lib/DebugInfo/PDB/Raw/ModuleSubstreamRecord.cpp
  test/DebugInfo/PDB/pdbdump-headers.test
  tools/llvm-pdbdump/llvm-pdbdump.cpp
  tools/llvm-readobj/COFFDumper.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D20936.59471.patch
Type: text/x-patch
Size: 29755 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160602/cb0fc077/attachment.bin>


More information about the llvm-commits mailing list