diff --git a/lldb/source/Commands/CommandObjectTarget.cpp b/lldb/source/Commands/CommandObjectTarget.cpp index 4ef3fdd545ad..60c80904ad70 100644 --- a/lldb/source/Commands/CommandObjectTarget.cpp +++ b/lldb/source/Commands/CommandObjectTarget.cpp @@ -2740,10 +2740,15 @@ protected: } if (set_pc) { ThreadList &thread_list = process->GetThreadList(); - ThreadSP curr_thread(thread_list.GetSelectedThread()); RegisterContextSP reg_context( - curr_thread->GetRegisterContext()); - reg_context->SetPC(file_entry.GetLoadAddress(target)); + thread_list.GetSelectedThread()->GetRegisterContext()); + addr_t file_entry_addr = file_entry.GetLoadAddress(target); + if (!reg_context->SetPC(file_entry_addr)) { + result.AppendErrorWithFormat("failed to set PC value to " + "0x%" PRIx64 "\n", + file_entry_addr); + result.SetStatus(eReturnStatusFailed); + } } } } else {