There are a variety of records that open scopes: function scopes, block
scopes, and inlined call site scopes. These symbol records contain
Parent and End fields with the offsets of other symbol records. The End
field contains the offset of the matching S_END or S_INLINESITE_END
record. The Parent field contains the offset of the parent record, or 0
if this is a top-level scope (i.e. a function).
With this change, llvm-pdbutil pretty -all no longer crashes on PDBs
produced by LLD. I haven't tried a real debugger yet.
I found a couple of additional symbols that I wonder if we need to handle.
From cvdump.h
We don't currently handle either of these and I've never seen a problem, but maybe you have some theories on why they might arise?
Also, if we're not supporting code (we aren't), then might as well delete S_WITH32. Otherwise you might as well add all the other managed symbols (e.g. S_MANPROC)