tberghammer added a comment.

Thanks for the explanation, sorry I haven't read your commit message carefully.

In case of non-split-dwarf a die_offset is sufficient to uniquely identify a 
DIE because it is an offset from the beginning of the debug_info section (we 
assume we have at most 1 debug_info section everywhere in LLDB) and we are 
already relying on this as we don't store the compile unit offset in the 
non-split dwarf case. Looking at the code setting the cu_offset to 
DW_INVALID_OFFSET will be more correct then what we are doing at the moment 
because DWARFDebugInfo::GetDIE will call DWARFDebugInfo::GetCompileUnit and 
that function will look for a compile unit based on the cu_offset if cu_offset 
!= DW_INVALID_OFFSET what is currently the case so it will return an incorrect 
compile unit in the non-split-dwarf case. Setting cu_offset to 
DW_INVALID_OFFSET would solve the issue as it will look for a compile unit 
based on the DIE offset what is correct in the non-split dwarf case (I think 
this change of behavior is the one fixing your test case).

My only concern with setting the SymbolFileUID to DW_INVALID_OFFSET is how will 
it work in case of MachO (I have very little knowledge about that code path) 
but I really hope we don't implicitly depend on the offset being set to 0 
instead of DW_INVALID_OFFSET what is meant to represent unused/invalid values 
so I expect it to work.


Repository:
  rL LLVM

https://reviews.llvm.org/D42563



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

Reply via email to