summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp
diff options
context:
space:
mode:
authorPavel Labath <labath@google.com>2015-02-23 10:19:16 +0000
committerPavel Labath <labath@google.com>2015-02-23 10:19:16 +0000
commitab970f5e08a976d4ea1ae64e4b3b9ff15a88aeb9 (patch)
tree7e4399b8d089d63afa6bb2eaf4f86755c45975da /lldb/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp
parent69963e72f349efc75db5ce4310e8be9f630b750c (diff)
downloadbcm5719-llvm-ab970f5e08a976d4ea1ae64e4b3b9ff15a88aeb9.tar.gz
bcm5719-llvm-ab970f5e08a976d4ea1ae64e4b3b9ff15a88aeb9.zip
UnwindPlan::Row refactor -- add support for CFA set by a DWARF expression
Summary: This change refactors UnwindPlan::Row to be able to store the fact that the CFA is value is set by evaluating a dwarf expression (DW_CFA_def_cfa_expression). This is achieved by creating a new class CFAValue and moving all CFA setting/getting code there. Note that code using the new CFAValue::isDWARFExpression is not yet present and will be added in a follow-up patch. Therefore, this patch should not change the functionality in any way. Test Plan: Ran tests on Mac and Linux. No regressions detected. Reviewers: jasonmolenda, clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D7755 llvm-svn: 230210
Diffstat (limited to 'lldb/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp')
-rw-r--r--lldb/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp5
1 files changed, 2 insertions, 3 deletions
diff --git a/lldb/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp b/lldb/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp
index fdd88b0a17d..bb3059a832e 100644
--- a/lldb/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp
+++ b/lldb/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp
@@ -587,7 +587,7 @@ ABIMacOSX_arm::CreateFunctionEntryUnwindPlan (UnwindPlan &unwind_plan)
UnwindPlan::RowSP row(new UnwindPlan::Row);
// Our Call Frame Address is the stack pointer value
- row->SetCFARegister (sp_reg_num);
+ row->GetCFAValue().SetIsRegisterPlusOffset (sp_reg_num, 0);
// The previous PC is in the LR
row->SetRegisterLocationToRegister(pc_reg_num, lr_reg_num, true);
@@ -613,8 +613,7 @@ ABIMacOSX_arm::CreateDefaultUnwindPlan (UnwindPlan &unwind_plan)
UnwindPlan::RowSP row(new UnwindPlan::Row);
const int32_t ptr_size = 4;
- row->SetCFARegister (fp_reg_num);
- row->SetCFAOffset (2 * ptr_size);
+ row->GetCFAValue().SetIsRegisterPlusOffset (fp_reg_num, 2 * ptr_size);
row->SetOffset (0);
row->SetRegisterLocationToAtCFAPlusOffset(fp_reg_num, ptr_size * -2, true);
OpenPOWER on IntegriCloud