@@ -769,7 +769,6 @@ void UpdateValueTypeFromLocationDescription(Log *log, const DWARFUnit *dwarf_cu,
769
769
// /
770
770
// / \param exe_ctx Pointer to the execution context
771
771
// / \param module_sp shared_ptr contains the module if we have one
772
- // / \param error_ptr pointer to Status object if we have one
773
772
// / \param dw_op_type C-style string used to vary the error output
774
773
// / \param file_addr the file address we are trying to resolve and turn into a
775
774
// / load address
@@ -780,32 +779,22 @@ void UpdateValueTypeFromLocationDescription(Log *log, const DWARFUnit *dwarf_cu,
780
779
// / the load address succeed or an empty Optinal otherwise. If
781
780
// / check_sectionoffset is true we consider LLDB_INVALID_ADDRESS a
782
781
// / success if so_addr.IsSectionOffset() is true.
783
- static std::optional <lldb::addr_t >
782
+ static llvm::Expected <lldb::addr_t >
784
783
ResolveLoadAddress (ExecutionContext *exe_ctx, lldb::ModuleSP &module_sp,
785
- Status *error_ptr, const char *dw_op_type,
786
- lldb::addr_t file_addr, Address &so_addr,
787
- bool check_sectionoffset = false ) {
788
- if (!module_sp) {
789
- if (error_ptr)
790
- error_ptr->SetErrorStringWithFormat (
791
- " need module to resolve file address for %s" , dw_op_type);
792
- return {};
793
- }
784
+ const char *dw_op_type, lldb::addr_t file_addr,
785
+ Address &so_addr, bool check_sectionoffset = false ) {
786
+ if (!module_sp)
787
+ return llvm::createStringError (" need module to resolve file address for %s" ,
788
+ dw_op_type);
794
789
795
- if (!module_sp->ResolveFileAddress (file_addr, so_addr)) {
796
- if (error_ptr)
797
- error_ptr->SetErrorString (" failed to resolve file address in module" );
798
- return {};
799
- }
790
+ if (!module_sp->ResolveFileAddress (file_addr, so_addr))
791
+ return llvm::createStringError (" failed to resolve file address in module" );
800
792
801
- addr_t load_addr = so_addr.GetLoadAddress (exe_ctx->GetTargetPtr ());
793
+ const addr_t load_addr = so_addr.GetLoadAddress (exe_ctx->GetTargetPtr ());
802
794
803
795
if (load_addr == LLDB_INVALID_ADDRESS &&
804
- (check_sectionoffset && !so_addr.IsSectionOffset ())) {
805
- if (error_ptr)
806
- error_ptr->SetErrorString (" failed to resolve load address" );
807
- return {};
808
- }
796
+ (check_sectionoffset && !so_addr.IsSectionOffset ()))
797
+ return llvm::createStringError (" failed to resolve load address" );
809
798
810
799
return load_addr;
811
800
}
@@ -975,12 +964,11 @@ llvm::Expected<Value> DWARFExpression::Evaluate(
975
964
LLDB_INVALID_ADDRESS);
976
965
977
966
Address so_addr;
978
- Status load_err;
979
967
auto maybe_load_addr = ResolveLoadAddress (
980
- exe_ctx, module_sp, &load_err, " DW_OP_deref" , file_addr, so_addr);
968
+ exe_ctx, module_sp, " DW_OP_deref" , file_addr, so_addr);
981
969
982
970
if (!maybe_load_addr)
983
- return load_err. ToError ();
971
+ return maybe_load_addr. takeError ();
984
972
985
973
stack.back ().GetScalar () = *maybe_load_addr;
986
974
// Fall through to load address promotion code below.
@@ -1092,14 +1080,12 @@ llvm::Expected<Value> DWARFExpression::Evaluate(
1092
1080
auto file_addr =
1093
1081
stack.back ().GetScalar ().ULongLong (LLDB_INVALID_ADDRESS);
1094
1082
Address so_addr;
1095
- Status resolve_err;
1096
- auto maybe_load_addr =
1097
- ResolveLoadAddress (exe_ctx, module_sp, &resolve_err,
1098
- " DW_OP_deref_size" , file_addr, so_addr,
1099
- /* check_sectionoffset=*/ true );
1083
+ auto maybe_load_addr = ResolveLoadAddress (
1084
+ exe_ctx, module_sp, " DW_OP_deref_size" , file_addr, so_addr,
1085
+ /* check_sectionoffset=*/ true );
1100
1086
1101
1087
if (!maybe_load_addr)
1102
- return resolve_err. ToError ();
1088
+ return maybe_load_addr. takeError ();
1103
1089
1104
1090
addr_t load_addr = *maybe_load_addr;
1105
1091
0 commit comments