summaryrefslogtreecommitdiff
path: root/lldb/source/Target/RegisterContextUnwind.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Target/RegisterContextUnwind.cpp')
-rw-r--r--lldb/source/Target/RegisterContextUnwind.cpp23
1 files changed, 12 insertions, 11 deletions
diff --git a/lldb/source/Target/RegisterContextUnwind.cpp b/lldb/source/Target/RegisterContextUnwind.cpp
index e2d712cb72ea..95e8abd763d5 100644
--- a/lldb/source/Target/RegisterContextUnwind.cpp
+++ b/lldb/source/Target/RegisterContextUnwind.cpp
@@ -1661,12 +1661,14 @@ RegisterContextUnwind::SavedLocationForRegister(
unwindplan_registerkind);
Value cfa_val = Scalar(m_cfa);
cfa_val.SetValueType(Value::ValueType::LoadAddress);
- Value result;
- Status error;
- if (dwarfexpr.Evaluate(&exe_ctx, this, 0, &cfa_val, nullptr, result,
- &error)) {
+ llvm::Expected<Value> result =
+ dwarfexpr.Evaluate(&exe_ctx, this, 0, &cfa_val, nullptr);
+ if (!result) {
+ LLDB_LOG_ERROR(log, result.takeError(),
+ "DWARF expression failed to evaluate: {0}");
+ } else {
addr_t val;
- val = result.GetScalar().ULongLong();
+ val = result->GetScalar().ULongLong();
if (unwindplan_regloc.IsDWARFExpression()) {
regloc.type = UnwindLLDB::RegisterLocation::eRegisterValueInferred;
regloc.location.inferred_value = val;
@@ -2029,11 +2031,10 @@ bool RegisterContextUnwind::ReadFrameAddress(
DWARFExpressionList dwarfexpr(opcode_ctx, dwarfdata, nullptr);
dwarfexpr.GetMutableExpressionAtAddress()->SetRegisterKind(
row_register_kind);
- Value result;
- Status error;
- if (dwarfexpr.Evaluate(&exe_ctx, this, 0, nullptr, nullptr, result,
- &error)) {
- address = result.GetScalar().ULongLong();
+ llvm::Expected<Value> result =
+ dwarfexpr.Evaluate(&exe_ctx, this, 0, nullptr, nullptr);
+ if (result) {
+ address = result->GetScalar().ULongLong();
if (ABISP abi_sp = m_thread.GetProcess()->GetABI())
address = abi_sp->FixCodeAddress(address);
@@ -2042,7 +2043,7 @@ bool RegisterContextUnwind::ReadFrameAddress(
return true;
}
UnwindLogMsg("Failed to set CFA value via DWARF expression: %s",
- error.AsCString());
+ llvm::toString(result.takeError()).c_str());
break;
}
case UnwindPlan::Row::FAValue::isRaSearch: {