[cfe-dev] Interested in generating .PDBs without using LINK.EXE?

Michael Lewis via cfe-dev cfe-dev at lists.llvm.org
Mon Jul 25 21:48:04 PDT 2016


Hi all,

I'm cross-posting from the llvm-dev list so I apologize in advance if
that's a faux pas, I just wanted to be sure and snag the appropriate
audiences.


I work on a novel language that uses LLVM for machine-code generation. My
primary experience (and interest) is on Windows. One thing I really have
been wanting for my project is a good debugging experience. On Windows,
this means some combination of Visual Studio and WinDbg.

Of course I'm familiar with the lldb/VS integration efforts and I know
clang can emit .obj files that link to debuggable images via LINK.EXE.
However, for my own personal goals, relying on LINK to generate debug data
is a non-starter.

Thus I set out to build a PDB emitter that enables debugging of binaries
compiled with my toolchain. As of this weekend I've successfully generated
PDBs for a few test programs. My criteria for success are:

 - Functions are locatable by address in VS and WinDbg alike
 - Callstacks include accurate names of functions
 - Source indexing works to some extent (my front-end is a bit crippled in
this regard right now so I'm faking it, but the fakery looks pretty good!)


I lifted a technique from the open-source CV2PDB project which originated
with the D language community: I'm interfacing with MSPDB140.DLL to write
the actual MSF file to disk. This is purely a bootstrapping technique
though and I plan to fabricate "whole cloth" PDBs next.


A tiny bit of documentation on this can be found at [0].


My question (which again I also posed to the LLVM-dev list) - is there any
interest from the Clang community in this work? Is PDB emission a valuable
goal for anyone else? If so, how best can I contribute what I've assembled
to the greater effort?



Thanks!


 - Mike


[0] -
https://github.com/apoch/epoch-language/wiki/Knowledge-Dump---Debugging-Epoch-Programs
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160725/9c21a344/attachment.html>


More information about the cfe-dev mailing list