<div dir="ltr">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.</div><br><div class="gmail_quote"><div dir="ltr">On Fri, Mar 11, 2016 at 11:02 AM Zachary Turner <<a href="mailto:zturner@google.com">zturner@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I'm trying to implement this function for PDB.  There are two overloads:<div><br></div><div><div>uint32_t</div><div>FindGlobalVariables (const ConstString &name, const CompilerDeclContext *parent_decl_ctx, bool append, uint32_t max_matches, VariableList& variables)</div></div><div><br></div><div><div>uint32_t</div><div>FindGlobalVariables(const RegularExpression& regex, bool append, uint32_t max_matches, VariableList& variables)</div></div><div><br></div><div>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.</div><div><br></div><div>What user command or debugger operation results in FindGlobalVariables getting called with this particular overload, and how does it build the CompilerDeclContext?</div><div><br></div><div>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*?</div></div></blockquote></div>