The code that reads the name map and the pdb header information was still lingering in llvm-pdbdump.
The NameMap, it turns out, is a common data structure used in other places in the PDB file as well. So the ability to parse a name map out of a PDB file will be useful for us down the line. So I abstracted that into a PDBNameMap class. It's very simple right now, but at least it can be re-used on an arbitrary stream.
I'm also moving towards an approach where we have concrete implementations of each stream type that provides friendly class-like access to the fields of different streams. The basic layout and format of which streams are what is described here [https://github.com/Microsoft/microsoft-pdb/]. Currently llvm-pdbdump has only attempted to parse data out of Stream 1 -- called the PDB Stream -- so I made a class called PDBInfoStream which provides convenient access to fields of the PDB stream. In the future we would probably add PDBDbiStream, and PDBModuleStream, etc.
This patch loses some of the output of llvm-pdbdump -dump-headers, because previously it was dumping every entry in the name map. And now that the name map parsing is handled separately, I felt it wasn't important to print so much detail anymore. Let me know if you disagree.
It's a little unusual to have these be members be support::ulittle32_t. Instead, can you have them be uint32_t and initialize them via readInteger?