>>! In D6182#5, @jasonmolenda wrote:
> Looks good, some very minor comments inlined, fine to commit after those are 
> tweaked.  Have you tried exercising the code?  Either with an architecture 
> default unwindplan in your ABI or with your eh_frame parser?  I'd like to 
> know that it actually works for you. :)

I have both powerpc64 and powerpc32 unwinding with the default unwindplan now 
(to be committed separately).  Past experience has taught me infrastructure 
first and separate when reviewing.

================
Comment at: source/Plugins/Process/Utility/RegisterContextLLDB.cpp:1422
@@ -1421,2 +1421,3 @@
         m_full_unwind_plan_sp = m_fallback_unwind_plan_sp;
+        uint32_t cfa_regnum = active_row->GetCFARegister();
         addr_t cfa_regval = LLDB_INVALID_ADDRESS;
----------------
jasonmolenda wrote:
> I don't see cfa_regnum being used in this code block.
Oops, missed this in my cleanup.  In my first iteration I was passing discrete 
information, but changed to passing the row itself instead.

================
Comment at: source/Plugins/Process/Utility/RegisterContextLLDB.cpp:1426
@@ -1424,3 +1425,3 @@
         {
             m_cfa = cfa_regval + active_row->GetCFAOffset ();
         }
----------------
jasonmolenda wrote:
> I think ReadCFAValueForRow should add active_row->GetCFAOffset to the cfa 
> register value itself (and the same thing up at line 575 for the previous 
> call to ReadCFAValueForRow.  I bet you can drop the cfa_regval variable 
> entirely and just have m_cfa.  This will break some UnwindLogMsg calls -- but 
> I think ReadCFAValueForRow() should UnwindLogMsg the CFA register value and 
> offset if it's a reg+offset CFA.
I debated doing this and went with the path of least code change, but wanted 
your opinion.  Trivial for me to change it.

================
Comment at: source/Plugins/Process/Utility/RegisterContextLLDB.cpp:1461
@@ +1460,3 @@
+            value = reg_value.GetAsUInt64();
+            UnwindLogMsg("dereferenced address: %p yields: %lx\n", tmp, value);
+            return error.Success();
----------------
jasonmolenda wrote:
> When printing an addr_t, you should use PRIx64.  e.g. "dereferenced address: 
> 0x%" PRIx64 " yields: 0x%" PRIx64, tmp, value);".  also, no \n at the end of 
> UnwindLogMsgs.
Gotcha.  This started out as a debug printf for me that I changed to log and 
didn't update.

================
Comment at: source/Symbol/UnwindPlan.cpp:23
@@ -22,2 +22,3 @@
 UnwindPlan::Row::RegisterLocation::operator == (const 
UnwindPlan::Row::RegisterLocation& rhs) const
 {
+    bool is_match = true;
----------------
jasonmolenda wrote:
> I don't have any problem with the changes to 
> UnwindPlan::Row::RegisterLocation::operator == - but what motivated this 
> change?  It seems like it's functionally the same.  Am I missing something? 
This was part of the patch you sent me.  I ripped out a chunk that didn't 
compile, and moved it down to UnwindPlan::Row::operator==(), and was left with 
this.  I'll revert this since it makes no sense to keep it as changed.

http://reviews.llvm.org/D6182



_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

Reply via email to