<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jan 29, 2015, at 10:20 AM, Zachary Turner <<a href="mailto:zturner@google.com" class="">zturner@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">I've been working on adding pdb reading support to llvm. This started as a tool for dumping info from a pdb (similar to llvm-dwarfdump), which has been checked in and currently has limited support for dumping pdb.<div class=""><br class=""></div><div class="">There's still more to be done on the pdb dumping tool, but at this point -- to reduce duplicated effort -- I think it makes the most sense to start moving some of this logic into a library in llvm, and then change llvm-pdbdump to use the library. Later, once the library is more comprehensive, I plan to then use it in LLDB for reading PDBs while debugging on Windows.</div><div class=""><br class=""></div><div class="">I think the best way to do this is to move all of the code in lib/DebugInfo to lib/DebugInfo/dwarf, and then make another folder called lib/DebugInfo/pdb. These would then be compiled into two separate libraries.</div></div></div></blockquote><div><br class=""></div><div>so you would have libDebugInfoDWARF and libDebugInfoPDB. Would you still have libDebugInfo at all?</div><div><br class=""></div><div>I ask because there is the DIContext abstraction that’s not tied to a particular debug format (It’s used by llvm-symbolizer, and I guess you have some interest in having that working on windows PDB files). But DIContext.cpp as one method, thus having a library for just that might be really overkill.</div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="">Another approach is to just put the PDB code in the same folder as the dwarf code, but I don't like this approach for a number of reasons:</div><div class=""><br class=""></div><div class="">1) Not every consumer of DebugInfo wants both types of DebugInfo.</div><div class="">2) The pdb reading code relies <b class="">very heavily</b> on Windows APIs, and will not compile on other platforms. This is solvable with some CMake machinery, but it's ugly and unwarranted in my opinion.</div><div class=""><br class=""></div><div class="">So as a first step in this direction I'd like to propose moving the code in lib/DebugInfo to lib/DebugInfo/dwarf, and then updating the rest of llvm accordingly.</div><div class=""><br class=""></div><div class="">Thoughts? Comments? Suggestions?</div><div class="">Zach</div></div>
</div></blockquote></div><br class=""></body></html>