[cfe-dev] [RFC] New ClangDebuggerSupport Library

Robinson, Paul via cfe-dev cfe-dev at lists.llvm.org
Wed Nov 9 18:21:45 PST 2016



> -----Original Message-----
> From: cfe-dev [mailto:cfe-dev-bounces at lists.llvm.org] On Behalf Of Chris
> Bieneman via cfe-dev
> Sent: Wednesday, November 09, 2016 2:26 PM
> To: cfe-dev
> Subject: [cfe-dev] [RFC] New ClangDebuggerSupport Library
> 
> Hello cfe-dev,
> 
> I would like to propose a new Clang library for implementing functionality
> that is used by LLDB. I see this as the first step in a long process of
> refactoring the language interfaces for LLDB.
> 
> The short-term goal is for this library is to be a place for us to rebuild
> functionality that exists in LLDB today and relies heavily on the
> implementation of Clang. As we rebuild the functionality we will build a
> suite of testing tools in Clang that exercise this library and more
> general Clang functionality in the same ways that LLDB will.
> 
> As bits of functionality become fully implemented and tested, we will
> migrate LLDB to using the Clang implementations, allowing LLDB to remove
> its own copies. This will provide the Clang community with a higher
> confidence that changes in Clang do not break LLDB, and it will provide
> LLDB with better test coverage of the Clang functionality.
> 
> The long-term goal of this library is to provide the implementation for
> what could some day become a defined debugger<->frontend interface for
> providing modularized (maybe even plugin-based) language debugging support
> in LLDB. In the distant future I could see us being able to tell people
> building new frontends that we have a defined interface they need to
> implement for the debugger, and once implemented the debugger should “Just
> Work”.
> 
> The first bit of functionality that I would like to build up into the
> ClangDebuggerSupport library is materialization of Clang AST types from
> DWARF. To support this development I intend to add a new tool in Clang
> that reads DWARF types, generates a Clang AST, and prints the AST. I will
> also add DWARF support to obj2yaml and yaml2obj, so we will be able to
> write YAML LIT tests for the functionality.

I am not familiar with obj2yaml and yaml2obj, and I'm not finding any real
documentation for them on the website.  But I can guess something about 
them, and if I'm guessing anywhere close, having them understand DWARF 
seems like a useful testing tool for debug info, independent of all the 
rest of your proposal.

Would you be using LLVM's existing DWARF reader? Or replacing it with
something from LLDB?  Adding a DWARF reader to Clang doesn't seem like
the right choice, the object-file details really belong to LLVM.

To achieve your longer-term goal, LLDB would need to be completely
isolated from AST and have no "native" understanding of the format.
And yet, a library capable of evaluating a source-language expression 
would need to be able to call back into the debugger in order to read
and write process memory.  An interesting design challenge for sure.
--paulr

> 
> If people are in favor of this general approach I’ll begin working in this
> direction, and I’ll probably add the new library sometime next month.
> 
> Thoughts?
> -Chris
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev


More information about the cfe-dev mailing list