diff options
Diffstat (limited to 'lldb/source/Symbol/CompactUnwindInfo.cpp')
| -rw-r--r-- | lldb/source/Symbol/CompactUnwindInfo.cpp | 33 |
1 files changed, 9 insertions, 24 deletions
diff --git a/lldb/source/Symbol/CompactUnwindInfo.cpp b/lldb/source/Symbol/CompactUnwindInfo.cpp index 85bd22ffa78..8d2a27c0e17 100644 --- a/lldb/source/Symbol/CompactUnwindInfo.cpp +++ b/lldb/source/Symbol/CompactUnwindInfo.cpp @@ -720,8 +720,9 @@ CompactUnwindInfo::CreateUnwindPlan_x86_64 (Target &target, FunctionInfo &functi { case UNWIND_X86_64_MODE_RBP_FRAME: { - row->SetCFARegister (translate_to_eh_frame_regnum_x86_64 (UNWIND_X86_64_REG_RBP)); - row->SetCFAOffset (2 * wordsize); + row->GetCFAValue().SetIsRegisterPlusOffset ( + translate_to_eh_frame_regnum_x86_64 (UNWIND_X86_64_REG_RBP), + 2 * wordsize); row->SetOffset (0); row->SetRegisterLocationToAtCFAPlusOffset (x86_64_eh_regnum::rbp, wordsize * -2, true); row->SetRegisterLocationToAtCFAPlusOffset (x86_64_eh_regnum::rip, wordsize * -1, true); @@ -809,16 +810,9 @@ CompactUnwindInfo::CreateUnwindPlan_x86_64 (Target &target, FunctionInfo &functi } } - if (mode == UNWIND_X86_64_MODE_STACK_IND) - { - row->SetCFAOffset (stack_size); - } - else - { - row->SetCFAOffset (stack_size * wordsize); - } + int32_t offset = mode == UNWIND_X86_64_MODE_STACK_IND ? stack_size : stack_size * wordsize; + row->GetCFAValue().SetIsRegisterPlusOffset (x86_64_eh_regnum::rsp, offset); - row->SetCFARegister (x86_64_eh_regnum::rsp); row->SetOffset (0); row->SetRegisterLocationToAtCFAPlusOffset (x86_64_eh_regnum::rip, wordsize * -1, true); row->SetRegisterLocationToIsCFAPlusOffset (x86_64_eh_regnum::rsp, 0, true); @@ -1009,8 +1003,8 @@ CompactUnwindInfo::CreateUnwindPlan_i386 (Target &target, FunctionInfo &function { case UNWIND_X86_MODE_EBP_FRAME: { - row->SetCFARegister (translate_to_eh_frame_regnum_i386 (UNWIND_X86_REG_EBP)); - row->SetCFAOffset (2 * wordsize); + row->GetCFAValue().SetIsRegisterPlusOffset ( + translate_to_eh_frame_regnum_i386 (UNWIND_X86_REG_EBP), 2 * wordsize); row->SetOffset (0); row->SetRegisterLocationToAtCFAPlusOffset (i386_eh_regnum::ebp, wordsize * -2, true); row->SetRegisterLocationToAtCFAPlusOffset (i386_eh_regnum::eip, wordsize * -1, true); @@ -1091,17 +1085,8 @@ CompactUnwindInfo::CreateUnwindPlan_i386 (Target &target, FunctionInfo &function } } - row->SetCFARegister (i386_eh_regnum::esp); - - if (mode == UNWIND_X86_MODE_STACK_IND) - { - row->SetCFAOffset (stack_size); - } - else - { - row->SetCFAOffset (stack_size * wordsize); - } - + int32_t offset = mode == UNWIND_X86_MODE_STACK_IND ? stack_size : stack_size * wordsize; + row->GetCFAValue().SetIsRegisterPlusOffset (i386_eh_regnum::esp, offset); row->SetOffset (0); row->SetRegisterLocationToAtCFAPlusOffset (i386_eh_regnum::eip, wordsize * -1, true); row->SetRegisterLocationToIsCFAPlusOffset (i386_eh_regnum::esp, 0, true); |

