See my other email. You can abstract this, but it doesn't seem worth it unless 
PDB has some really powerful way to express variable locations?

> On Mar 11, 2016, at 11:39 AM, Zachary Turner via lldb-dev 
> <lldb-dev@lists.llvm.org> wrote:
> 
> Can we abstract this somehow?  Converting all my debug info to DWARF seems 
> like a non-starter, as it doesn't look like you can just do it partially, you 
> have to go all the way (just based on glancing at the DWARFExpression header 
> file)
> 
> On Fri, Mar 11, 2016 at 11:38 AM Jim Ingham <jing...@apple.com> wrote:
> lldb uses DWARF expressions internally as a convenient language to represent 
> locations of values.  We had to pick some representation, and the DWARF 
> expression was powerful enough for our purposes, meant we didn't have to 
> reinvent something that already existed, and had the added benefit that if 
> you did your DWARF then you don't have to transcode.
> 
> Jim
> 
> > On Mar 11, 2016, at 11:32 AM, Zachary Turner via lldb-dev 
> > <lldb-dev@lists.llvm.org> wrote:
> >
> > 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 <ztur...@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*?
> > _______________________________________________
> > lldb-dev mailing list
> > lldb-dev@lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
> 
> _______________________________________________
> lldb-dev mailing list
> lldb-dev@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to