labath marked 4 inline comments as done.
labath added inline comments.

================
Comment at: source/Plugins/SymbolFile/DWARF/AppleDWARFIndex.cpp:153
+    return true;
+  bool looking_for_methods = name_type_mask & eFunctionNameTypeMethod;
+  return looking_for_methods == die.IsMethod();
----------------
clayborg wrote:
> move up to line 150 and use this variable in the if statement instead of 
> repeating "name_type_mask & eFunctionNameTypeMethod" twice?
Done. I've created variables for both enum values, as having just one of them 
in the if statement looked weird.


================
Comment at: source/Plugins/SymbolFile/DWARF/DWARFDIE.cpp:222
+    return true;
+  return GetReferencedDIE(DW_AT_specification)
+      .GetParent()
----------------
clayborg wrote:
> labath wrote:
> > clayborg wrote:
> > > I can never remember when a DW_AT_abstract_origin might be used. Might be 
> > > nice to have a DWARFDIE method:
> > > 
> > > ```
> > > DWARFDIE DWARFDIE::GetAbstractOriginOrSpecification();
> > > ```
> > > this would return either the the DW_AT_specification or the 
> > > DW_AT_abstract_origin. If we go that route the this coce would become:
> > > 
> > > ```
> > > GetAbstractOriginOrSpecification().GetParent().IsStructUnionOrClass();
> > > ```
> > > 
> > How would this method know which DIE to return? In case of inlined methods 
> > you can have a chain of DIEs:
> > `DIE1 --- DW_AT_abstract_origin --> DIE2 --- DW_AT_specification --> DIE3`
> > Each of these dies will have a different parent.
> > 
> > The current function will check for the parent of DIE1 and DIE3 (this is 
> > what the manual index does) though to be fully correct maybe we should 
> > check all three of them (?) Or do you think checking the last DIE in that 
> > list should be always enough? That would seem to be the case for the dwarf 
> > I've seen, but I'm not sure if that is always correct..
> Yeah, unfortunately I can't elaborate too much without seeing a bad example. 
> If anything in the chain has a parent that is a struct/union or class might 
> be enough, so we could ask each DIE in the specification or abstract origin 
> chain if its parent is a struct/union/class and just return true if so?
I've reimplemented the function to do a proper recursive search for the parent, 
including a infinite-recursion guard.


https://reviews.llvm.org/D47470



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

Reply via email to