labath added inline comments.

================
Comment at: 
source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp:875-876
+             row->GetCFAValue().GetRegisterNumber() == m_lldb_fp_regnum) {
+      current_sp_bytes_offset_from_cfa =
+          row->GetCFAValue().GetOffset() - stack_offset;
+    }
----------------
tberghammer wrote:
> Shouldn't you change the unwind information for the CFA here? For me saying 
> CFA=rbp seems like an incorrect thing to do, but not sure what would be the 
> correct value (Undefined? IsSame?). The impact is if an other register (or a 
> local variable) have a location specified as CFA+off then after this 
> instruction it will point to bogus location.
I think there has been some misunderstanding, as the your comment makes no 
sense to me. :)

This code only fires if CFA=rbp+offset, and that remains valid even after this 
instruction -- `lea` does not change the value of the rbp register, so any 
register rule that was valid before this instruction will remain valid after 
it. This only begins to make a difference after we process the `pop %rbp` 
instruction -- then we will update the CFA rule to read 
`CFA=rsp+current_sp_bytes_offset_from_cfa`.


https://reviews.llvm.org/D34750



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

Reply via email to