[lldb-dev] SymbolFile::FindGlobalVariables

Zachary Turner via lldb-dev lldb-dev at lists.llvm.org
Fri Mar 11 11:32:38 PST 2016


Also why does the lldb_private::Variable() class take a DWARFExpression to
its constructor?  Seems like this is wrong in the face of non-DWARF debug
information.

On Fri, Mar 11, 2016 at 11:02 AM Zachary Turner <zturner at google.com> wrote:

> I'm trying to implement this function for PDB.  There are two overloads:
>
> uint32_t
> FindGlobalVariables (const ConstString &name, const CompilerDeclContext
> *parent_decl_ctx, bool append, uint32_t max_matches, VariableList&
> variables)
>
> uint32_t
> FindGlobalVariables(const RegularExpression& regex, bool append, uint32_t
> max_matches, VariableList& variables)
>
> I know how to implement the second overload, but not the first.  What is a
> CompilerDeclContext?  Some comments in the DWARF implementation of the
> function seem to imply it's related to namespaces, but there's a lot of
> strange code that I don't understand.  What is the relationship between a
> namespace and a symbol file?  And why does
> `DeclContextMatchesThisSymbolFile` contain no code at all that accesses any
> property of the symbol file?  It just checks if
> decl_ctx->GetTypeSystem()->GetMinimumLanguage(nullptr)
> == decl_ctx->GetTypeSystem(), which appears to have nothing to do with any
> symbol file.
>
> What user command or debugger operation results in FindGlobalVariables
> getting called with this particular overload, and how does it build the
> CompilerDeclContext?
>
> On another note, why is the decl context stored as void* instead of having
> an actual wrapper with an abstract interface such as ClangDeclContext /
> JavaDeclContext, etc that all inherit from LanguageDeclContext, and pass
> the LanguageDeclContext around instead of a void*?
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20160311/2563fb62/attachment.html>


More information about the lldb-dev mailing list