clayborg requested changes to this revision.
clayborg added a comment.
This revision now requires changes to proceed.

So this problem exists both in the LLDB and LLVM DWARF parsers. I am not sure 
this fix is safe. I would rather fix this by fixing DWARFDIE class to "do the 
right thing". We should be able to teach the DWARFDIE class to replace its 
"m_die" with the updated "m_die" if a method ever causes DWARFDIE to need to 
expand all DIEs in a DWARFUnit. That seems like a much safer fix. Having 
m_first_die is not safe because it if you call DWARFDIE::GetFirstChild() it 
will just add 1 to the "m_die" and we will crash. All parent, sibling and child 
code just do pointer arithmetic to find their counterparts. So since DWARFDIE 
has the "DWARFUnit *m_cu;" and "DWARFDebugInfoEntry *m_die;" we should use 
DWARFDIE to abstract this from users. Anyone playing directly with 
DWARFDebugInfoEntry must know the rules and do the right thing or just use 
DWARFDIE.


https://reviews.llvm.org/D46810



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

Reply via email to