diff --git a/lldb/include/lldb/API/SBCommandReturnObject.h b/lldb/include/lldb/API/SBCommandReturnObject.h --- a/lldb/include/lldb/API/SBCommandReturnObject.h +++ b/lldb/include/lldb/API/SBCommandReturnObject.h @@ -74,6 +74,8 @@ void AppendWarning(const char *message); + void AppendError(const char *message); + bool GetDescription(lldb::SBStream &description); void SetImmediateOutputFile(FILE *fh); // DEPRECATED @@ -103,7 +105,7 @@ void SetError(lldb::SBError &error, const char *fallback_error_cstr = nullptr); - void SetError(const char *error_cstr); + void SetError(const char *error_cstr); // DEPRECATED: use AppendError protected: friend class SBCommandInterpreter; diff --git a/lldb/include/lldb/Interpreter/CommandReturnObject.h b/lldb/include/lldb/Interpreter/CommandReturnObject.h --- a/lldb/include/lldb/Interpreter/CommandReturnObject.h +++ b/lldb/include/lldb/Interpreter/CommandReturnObject.h @@ -132,8 +132,6 @@ void SetError(const Status &error, const char *fallback_error_cstr = nullptr); - void SetError(llvm::StringRef error_cstr); - lldb::ReturnStatus GetStatus(); void SetStatus(lldb::ReturnStatus status); diff --git a/lldb/source/API/SBCommandReturnObject.cpp b/lldb/source/API/SBCommandReturnObject.cpp --- a/lldb/source/API/SBCommandReturnObject.cpp +++ b/lldb/source/API/SBCommandReturnObject.cpp @@ -210,6 +210,13 @@ ref().AppendWarning(message); } +void SBCommandReturnObject::AppendError(const char *message) { + LLDB_RECORD_METHOD(void, SBCommandReturnObject, AppendError, (const char *), + message); + + ref().AppendError(message); +} + CommandReturnObject *SBCommandReturnObject::operator->() const { return &**m_opaque_up; } @@ -363,7 +370,7 @@ error_cstr); if (error_cstr) - ref().SetError(error_cstr); + ref().AppendError(error_cstr); } namespace lldb_private { diff --git a/lldb/source/Commands/CommandObjectBreakpoint.cpp b/lldb/source/Commands/CommandObjectBreakpoint.cpp --- a/lldb/source/Commands/CommandObjectBreakpoint.cpp +++ b/lldb/source/Commands/CommandObjectBreakpoint.cpp @@ -1798,7 +1798,7 @@ protected: bool DoExecute(Args &command, CommandReturnObject &result) override { if (!m_name_options.m_name.OptionWasSet()) { - result.SetError("No name option provided."); + result.AppendError("No name option provided."); return false; } @@ -1812,7 +1812,7 @@ size_t num_breakpoints = breakpoints.GetSize(); if (num_breakpoints == 0) { - result.SetError("No breakpoints, cannot add names."); + result.AppendError("No breakpoints, cannot add names."); return false; } @@ -1824,7 +1824,7 @@ if (result.Succeeded()) { if (valid_bp_ids.GetSize() == 0) { - result.SetError("No breakpoints specified, cannot add names."); + result.AppendError("No breakpoints specified, cannot add names."); return false; } size_t num_valid_ids = valid_bp_ids.GetSize(); @@ -1883,7 +1883,7 @@ protected: bool DoExecute(Args &command, CommandReturnObject &result) override { if (!m_name_options.m_name.OptionWasSet()) { - result.SetError("No name option provided."); + result.AppendError("No name option provided."); return false; } @@ -1897,7 +1897,7 @@ size_t num_breakpoints = breakpoints.GetSize(); if (num_breakpoints == 0) { - result.SetError("No breakpoints, cannot delete names."); + result.AppendError("No breakpoints, cannot delete names."); return false; } @@ -1909,7 +1909,7 @@ if (result.Succeeded()) { if (valid_bp_ids.GetSize() == 0) { - result.SetError("No breakpoints specified, cannot delete names."); + result.AppendError("No breakpoints specified, cannot delete names."); return false; } ConstString bp_name(m_name_options.m_name.GetCurrentValue()); diff --git a/lldb/source/Commands/CommandObjectMultiword.cpp b/lldb/source/Commands/CommandObjectMultiword.cpp --- a/lldb/source/Commands/CommandObjectMultiword.cpp +++ b/lldb/source/Commands/CommandObjectMultiword.cpp @@ -396,6 +396,6 @@ CommandObject *proxy_command = GetProxyCommandObject(); if (proxy_command) return proxy_command->Execute(args_string, result); - result.SetError(GetUnsupportedError()); + result.AppendError(GetUnsupportedError()); return false; } diff --git a/lldb/source/Commands/CommandObjectProcess.cpp b/lldb/source/Commands/CommandObjectProcess.cpp --- a/lldb/source/Commands/CommandObjectProcess.cpp +++ b/lldb/source/Commands/CommandObjectProcess.cpp @@ -1649,7 +1649,7 @@ TraceSP trace_sp = process_sp->GetTarget().GetTrace(); if (llvm::Error err = trace_sp->Stop()) - result.SetError(toString(std::move(err))); + result.AppendError(toString(std::move(err))); else result.SetStatus(eReturnStatusSuccessFinishResult); diff --git a/lldb/source/Commands/CommandObjectReproducer.cpp b/lldb/source/Commands/CommandObjectReproducer.cpp --- a/lldb/source/Commands/CommandObjectReproducer.cpp +++ b/lldb/source/Commands/CommandObjectReproducer.cpp @@ -162,7 +162,8 @@ return loader; // This is a soft error because this is expected to fail during capture. - result.SetError("Not specifying a reproducer is only support during replay."); + result.AppendError( + "Not specifying a reproducer is only support during replay."); result.SetStatus(eReturnStatusSuccessFinishNoResult); return nullptr; } @@ -276,7 +277,7 @@ auto &r = Reproducer::Instance(); if (!r.IsCapturing() && !r.IsReplaying()) { - result.SetError( + result.AppendError( "forcing a crash is only supported when capturing a reproducer."); result.SetStatus(eReturnStatusSuccessFinishNoResult); return false; @@ -583,7 +584,7 @@ return true; } case eReproducerProviderNone: - result.SetError("No valid provider specified."); + result.AppendError("No valid provider specified."); return false; } diff --git a/lldb/source/Commands/CommandObjectThread.cpp b/lldb/source/Commands/CommandObjectThread.cpp --- a/lldb/source/Commands/CommandObjectThread.cpp +++ b/lldb/source/Commands/CommandObjectThread.cpp @@ -1728,7 +1728,7 @@ true /* condense_trivial */, m_options.m_unreported); // If we didn't find a TID, stop here and return an error. if (!success) { - result.SetError("Error dumping plans:"); + result.AppendError("Error dumping plans:"); result.AppendError(tmp_strm.GetString()); return false; } @@ -1966,7 +1966,7 @@ TraceSP trace_sp = process_sp->GetTarget().GetTrace(); if (llvm::Error err = trace_sp->Stop(tids)) - result.SetError(toString(std::move(err))); + result.AppendError(toString(std::move(err))); else result.SetStatus(eReturnStatusSuccessFinishResult); @@ -2091,7 +2091,7 @@ trace_sp->GetCursorPosition(*thread_sp)) - m_consecutive_repetitions * count; if (position < 0) - result.SetError("error: no more data"); + result.AppendError("error: no more data"); else trace_sp->DumpTraceInstructions(*thread_sp, result.GetOutputStream(), count, position, m_options.m_raw); diff --git a/lldb/source/Commands/CommandObjectTrace.cpp b/lldb/source/Commands/CommandObjectTrace.cpp --- a/lldb/source/Commands/CommandObjectTrace.cpp +++ b/lldb/source/Commands/CommandObjectTrace.cpp @@ -251,7 +251,7 @@ bool DoExecute(Args &command, CommandReturnObject &result) override { Status error; if (command.empty()) { - result.SetError( + result.AppendError( "trace schema cannot be invoked without a plug-in as argument"); return false; } diff --git a/lldb/source/Commands/CommandObjectType.cpp b/lldb/source/Commands/CommandObjectType.cpp --- a/lldb/source/Commands/CommandObjectType.cpp +++ b/lldb/source/Commands/CommandObjectType.cpp @@ -2744,7 +2744,7 @@ bool DoExecute(llvm::StringRef raw_command_line, CommandReturnObject &result) override { if (raw_command_line.empty()) { - result.SetError( + result.AppendError( "type lookup cannot be invoked without a type name as argument"); return false; } diff --git a/lldb/source/Interpreter/CommandObject.cpp b/lldb/source/Interpreter/CommandObject.cpp --- a/lldb/source/Interpreter/CommandObject.cpp +++ b/lldb/source/Interpreter/CommandObject.cpp @@ -256,7 +256,7 @@ if (GetFlags().Test(eCommandProcessMustBeTraced)) { Target *target = m_exe_ctx.GetTargetPtr(); if (target && !target->GetTrace()) { - result.SetError("Process is not being traced."); + result.AppendError("Process is not being traced."); return false; } } diff --git a/lldb/source/Interpreter/CommandReturnObject.cpp b/lldb/source/Interpreter/CommandReturnObject.cpp --- a/lldb/source/Interpreter/CommandReturnObject.cpp +++ b/lldb/source/Interpreter/CommandReturnObject.cpp @@ -106,12 +106,7 @@ void CommandReturnObject::SetError(const Status &error, const char *fallback_error_cstr) { assert(error.Fail() && "Expected a failed Status"); - SetError(error.AsCString(fallback_error_cstr)); -} - -void CommandReturnObject::SetError(llvm::StringRef error_str) { - SetStatus(eReturnStatusFailed); - AppendError(error_str); + AppendError(error.AsCString(fallback_error_cstr)); } // Similar to AppendError, but do not prepend 'Status: ' to message, and don't