LLDB's TypeSystems Part 2: PDB
In my previous post, I described implementing PDB parsing as a can of worms. That might have been a bit of an understatement. PDB has been one "oh, it's gonna be twice as much work as I thought" after another. Implementing it has revealed many of the same issues as the TypeSystem
itself: lack of documentation, cryptic implementations, poor naming schemes, and unclear expectations. Despite all that, I was able to get it working.
That means TypeSystemRust
can be used for executables that target *-gnu
or *-msvc
. It's not quite done yet, but this is a massive step towards the TypeSystem
being fully complete. I want to talk a bit about the process, at least partially for posterity. As we'll see later, PDB itself is also not documented very well, so any additional literature could be helpful to someone down the line.
Fair warning, we're getting into the weeds. This is gonna be a long one.