FIx a bug with PC-register handling in a RA register.
authorJustin Hibbits <jrh29@alumni.cwru.edu>
Wed, 12 Nov 2014 15:14:12 +0000 (15:14 +0000)
committerJustin Hibbits <jrh29@alumni.cwru.edu>
Wed, 12 Nov 2014 15:14:12 +0000 (15:14 +0000)
The addition of RegisterNumber introduced a bug where if the PC is stored in a
return address register, such as on ARM and PowerPC, this register number is
retrieved and used, but never checked in the row if it's saved.  Correct this by
setting the variable that's used to the new register number.

Patch by Jason Molenda.

llvm-svn: 221790

lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp

index 1b47929..93ef56f 100644 (file)
@@ -1190,6 +1190,7 @@ RegisterContextLLDB::SavedLocationForRegister (uint32_t lldb_regnum, lldb_privat
             {
                 
                 return_address_reg.init (m_thread, m_full_unwind_plan_sp->GetRegisterKind(), m_full_unwind_plan_sp->GetReturnAddressRegister());
+                regnum = return_address_reg;
                 UnwindLogMsg ("requested caller's saved PC but this UnwindPlan uses a RA reg; getting %s (%d) instead",
                               return_address_reg.GetName(), return_address_reg.GetAsKind (eRegisterKindLLDB));
             }