@@ -2603,17 +2603,16 @@ static llvm::Expected<addr_t> ReadRegisterAsAddress(RegisterContext ®ctx,
26032603
26042604// / Functional wrapper to read a pointer from process memory at `addr +
26052605// / offset`.
2606- static llvm::Expected<addr_t >
2607- ReadPtrFromAddr (Process &process, llvm::Expected<addr_t > addr, int offset = 0 ) {
2608- if (!addr)
2609- return addr;
2606+ static llvm::Expected<addr_t > ReadPtrFromAddr (Process &process, addr_t addr,
2607+ int offset = 0 ) {
26102608 Status error;
2611- addr_t ptr = process.ReadPointerFromMemory (* addr + offset, error);
2609+ addr_t ptr = process.ReadPointerFromMemory (addr + offset, error);
26122610 if (ptr != LLDB_INVALID_ADDRESS)
26132611 return ptr;
26142612 return llvm::createStringError (" SwiftLanguageRuntime: Failed to read ptr "
2615- " from memory address 0x%8.8" PRIx64,
2616- *addr + offset);
2613+ " from memory address 0x%8.8" PRIx64
2614+ " Error was %s" ,
2615+ addr + offset, error.AsCString ());
26172616}
26182617
26192618// / Computes the Canonical Frame Address (CFA) by converting the abstract
@@ -2703,7 +2702,9 @@ static llvm::Expected<addr_t> ReadAsyncContextRegisterFromUnwind(
27032702 case RestoreType::atCFAPlusOffset: {
27042703 llvm::Expected<addr_t > cfa =
27052704 GetCFA (process, regctx, unwind_regkind, row->GetCFAValue ());
2706- return ReadPtrFromAddr (process, std::move (cfa), regloc.GetOffset ());
2705+ if (!cfa)
2706+ return cfa.takeError ();
2707+ return ReadPtrFromAddr (process, *cfa, regloc.GetOffset ());
27072708 }
27082709 case RestoreType::isCFAPlusOffset: {
27092710 if (llvm::Expected<addr_t > cfa =
@@ -2736,7 +2737,7 @@ SwiftLanguageRuntime::GetRuntimeUnwindPlan(ProcessSP process_sp,
27362737 LLDB_SCOPED_TIMER ();
27372738 auto log_expected = [](llvm::Error error) {
27382739 Log *log = GetLog (LLDBLog::Unwind);
2739- LLDB_LOG_ERROR (log, std::move (error), " SwiftLanguageRuntime: error {0}" );
2740+ LLDB_LOG_ERROR (log, std::move (error), " {0}" );
27402741 return UnwindPlanSP ();
27412742 };
27422743
0 commit comments