[lldb-dev] LLDB support for symbol files (PDB vs DWARF implementation)

Daniel Olivier via lldb-dev lldb-dev at lists.llvm.org
Tue Nov 28 06:49:13 PST 2017


My goal is to process symbol files (i.e. PE-COFF/PDB, ELF/DWARF), and so I sought to examine how this is done in lldb. However, without first studying the code for an unreasonable amount of time, I just want to ask this simple question.

Consider the header files that pertain to symbol files in llvm (i.e. $LLVM_ROOT/include/llvm/DebugInfo) and lldb (i.e. $LLVM_ROOT/tools/lldb/source/Plugins/SymbolFile/).

For PDB support, I see only two classes (.cpp/.h file pairs, in $LLDB_ROOT/source/Plugins/SymbolFile/PDB), PDBASTParser and SymbolFilePDB, which appear to leverage the LLVM PDB implementation, and act as a facade to the LLVM implementation. This pattern doesn't repeat in the case of the DWARF format, where the file and class hierarchy appears duplicated, and yet are also quite different.

Its hard to describe the differences and similarities I see between the DWARF files, but so far, I can only guess that the differences are historical (forked and never re-merged), and that lldb only ever needed to read these files (the base LLVM implementation being more complete, in order to be able to generate them in the first place and merge or manipulate them once they are created).

Can anyone briefly explain the architectural choices made here?


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20171128/102a5df4/attachment-0001.html>

More information about the lldb-dev mailing list