Skip to content

[lldb] Make conversions from llvm::Error explicit with Status::FromEr… #107163

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Sep 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions lldb/include/lldb/Utility/Status.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,9 @@ class Status {

~Status();

// llvm::Error support
explicit Status(llvm::Error error) { *this = std::move(error); }
const Status &operator=(llvm::Error error);
/// Avoid using this in new code. Migrate APIs to llvm::Expected instead.
static Status FromError(llvm::Error error);
/// FIXME: Replace this with a takeError method.
llvm::Error ToError() const;

/// Get the error string associated with the current error.
Expand Down Expand Up @@ -145,6 +145,7 @@ class Status {
bool Success() const;

protected:
Status(llvm::Error error);
/// Status code as an integer value.
ValueType m_code = 0;
/// The type of the above error code.
Expand Down
2 changes: 1 addition & 1 deletion lldb/source/API/SBDebugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ lldb::SBError SBDebugger::InitializeWithErrorHandling() {
SBError error;
if (auto e = g_debugger_lifetime->Initialize(
std::make_unique<SystemInitializerFull>(), LoadPlugin)) {
error.SetError(Status(std::move(e)));
error.SetError(Status::FromError(std::move(e)));
}
return error;
}
Expand Down
2 changes: 1 addition & 1 deletion lldb/source/API/SBTarget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1658,7 +1658,7 @@ SBError SBTarget::SetLabel(const char *label) {
if (!target_sp)
return Status::FromErrorString("Couldn't get internal target object.");

return Status(target_sp->SetLabel(label));
return Status::FromError(target_sp->SetLabel(label));
}

uint32_t SBTarget::GetDataByteSize() {
Expand Down
103 changes: 57 additions & 46 deletions lldb/source/Commands/CommandObjectBreakpoint.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,14 +89,16 @@ class lldb_private::BreakpointOptionGroup : public OptionGroup {
if (success)
m_bp_opts.SetAutoContinue(value);
else
error = CreateOptionParsingError(option_arg, short_option, long_option,
g_bool_parsing_error_message);
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
g_bool_parsing_error_message));
} break;
case 'i': {
uint32_t ignore_count;
if (option_arg.getAsInteger(0, ignore_count))
error = CreateOptionParsingError(option_arg, short_option, long_option,
g_int_parsing_error_message);
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
g_int_parsing_error_message));
else
m_bp_opts.SetIgnoreCount(ignore_count);
} break;
Expand All @@ -106,29 +108,31 @@ class lldb_private::BreakpointOptionGroup : public OptionGroup {
if (success) {
m_bp_opts.SetOneShot(value);
} else
error = CreateOptionParsingError(option_arg, short_option, long_option,
g_bool_parsing_error_message);
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
g_bool_parsing_error_message));
} break;
case 't': {
lldb::tid_t thread_id = LLDB_INVALID_THREAD_ID;
if (option_arg == "current") {
if (!execution_context) {
error = CreateOptionParsingError(
error = Status::FromError(CreateOptionParsingError(
option_arg, short_option, long_option,
"No context to determine current thread");
"No context to determine current thread"));
} else {
ThreadSP ctx_thread_sp = execution_context->GetThreadSP();
if (!ctx_thread_sp || !ctx_thread_sp->IsValid()) {
error =
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
"No currently selected thread");
"No currently selected thread"));
} else {
thread_id = ctx_thread_sp->GetID();
}
}
} else if (option_arg.getAsInteger(0, thread_id)) {
error = CreateOptionParsingError(option_arg, short_option, long_option,
g_int_parsing_error_message);
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
g_int_parsing_error_message));
}
if (thread_id != LLDB_INVALID_THREAD_ID)
m_bp_opts.SetThreadID(thread_id);
Expand All @@ -142,8 +146,9 @@ class lldb_private::BreakpointOptionGroup : public OptionGroup {
case 'x': {
uint32_t thread_index = UINT32_MAX;
if (option_arg.getAsInteger(0, thread_index)) {
error = CreateOptionParsingError(option_arg, short_option, long_option,
g_int_parsing_error_message);
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
g_int_parsing_error_message));
} else {
m_bp_opts.GetThreadSpec()->SetIndex(thread_index);
}
Expand Down Expand Up @@ -286,9 +291,9 @@ class CommandObjectBreakpointSet : public CommandObjectParsed {

case 'u':
if (option_arg.getAsInteger(0, m_column))
error =
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
g_int_parsing_error_message);
g_int_parsing_error_message));
break;

case 'E': {
Expand Down Expand Up @@ -326,8 +331,8 @@ class CommandObjectBreakpointSet : public CommandObjectParsed {
error_context = "Unsupported language type for exception breakpoint";
}
if (!error_context.empty())
error = CreateOptionParsingError(option_arg, short_option,
long_option, error_context);
error = Status::FromError(CreateOptionParsingError(
option_arg, short_option, long_option, error_context));
} break;

case 'f':
Expand All @@ -343,9 +348,9 @@ class CommandObjectBreakpointSet : public CommandObjectParsed {
bool success;
m_catch_bp = OptionArgParser::ToBoolean(option_arg, true, &success);
if (!success)
error =
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
g_bool_parsing_error_message);
g_bool_parsing_error_message));
} break;

case 'H':
Expand All @@ -362,24 +367,24 @@ class CommandObjectBreakpointSet : public CommandObjectParsed {
m_skip_prologue = eLazyBoolNo;

if (!success)
error =
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
g_bool_parsing_error_message);
g_bool_parsing_error_message));
} break;

case 'l':
if (option_arg.getAsInteger(0, m_line_num))
error =
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
g_int_parsing_error_message);
g_int_parsing_error_message));
break;

case 'L':
m_language = Language::GetLanguageTypeFromString(option_arg);
if (m_language == eLanguageTypeUnknown)
error =
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
g_language_parsing_error_message);
g_language_parsing_error_message));
break;

case 'm': {
Expand All @@ -392,9 +397,9 @@ class CommandObjectBreakpointSet : public CommandObjectParsed {
m_move_to_nearest_code = eLazyBoolNo;

if (!success)
error =
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
g_bool_parsing_error_message);
g_bool_parsing_error_message));
break;
}

Expand All @@ -412,8 +417,9 @@ class CommandObjectBreakpointSet : public CommandObjectParsed {
if (BreakpointID::StringIsBreakpointName(option_arg, error))
m_breakpoint_names.push_back(std::string(option_arg));
else
error = CreateOptionParsingError(
option_arg, short_option, long_option, "Invalid breakpoint name");
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
"Invalid breakpoint name"));
break;
}

Expand Down Expand Up @@ -451,9 +457,9 @@ class CommandObjectBreakpointSet : public CommandObjectParsed {
bool success;
m_throw_bp = OptionArgParser::ToBoolean(option_arg, true, &success);
if (!success)
error =
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
g_bool_parsing_error_message);
g_bool_parsing_error_message));
} break;

case 'X':
Expand All @@ -465,8 +471,8 @@ class CommandObjectBreakpointSet : public CommandObjectParsed {
OptionValueFileColonLine value;
Status fcl_err = value.SetValueFromString(option_arg);
if (!fcl_err.Success()) {
error = CreateOptionParsingError(option_arg, short_option,
long_option, fcl_err.AsCString());
error = Status::FromError(CreateOptionParsingError(
option_arg, short_option, long_option, fcl_err.AsCString()));
} else {
m_filenames.AppendIfUnique(value.GetFileSpec());
m_line_num = value.GetLineNumber();
Expand Down Expand Up @@ -1551,13 +1557,15 @@ class BreakpointNameOptionGroup : public OptionGroup {
break;
case 'B':
if (m_breakpoint.SetValueFromString(option_arg).Fail())
error = CreateOptionParsingError(option_arg, short_option, long_option,
g_int_parsing_error_message);
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
g_int_parsing_error_message));
break;
case 'D':
if (m_use_dummy.SetValueFromString(option_arg).Fail())
error = CreateOptionParsingError(option_arg, short_option, long_option,
g_bool_parsing_error_message);
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
g_bool_parsing_error_message));
break;
case 'H':
m_help_string.SetValueFromString(option_arg);
Expand Down Expand Up @@ -1610,26 +1618,29 @@ class BreakpointAccessOptionGroup : public OptionGroup {
if (success) {
m_permissions.SetAllowList(value);
} else
error = CreateOptionParsingError(option_arg, short_option, long_option,
g_bool_parsing_error_message);
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
g_bool_parsing_error_message));
} break;
case 'A': {
bool value, success;
value = OptionArgParser::ToBoolean(option_arg, false, &success);
if (success) {
m_permissions.SetAllowDisable(value);
} else
error = CreateOptionParsingError(option_arg, short_option, long_option,
g_bool_parsing_error_message);
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
g_bool_parsing_error_message));
} break;
case 'D': {
bool value, success;
value = OptionArgParser::ToBoolean(option_arg, false, &success);
if (success) {
m_permissions.SetAllowDelete(value);
} else
error = CreateOptionParsingError(option_arg, short_option, long_option,
g_bool_parsing_error_message);
error = Status::FromError(
CreateOptionParsingError(option_arg, short_option, long_option,
g_bool_parsing_error_message));
} break;
default:
llvm_unreachable("Unimplemented option");
Expand Down Expand Up @@ -2113,8 +2124,8 @@ class CommandObjectBreakpointRead : public CommandObjectParsed {
Status name_error;
if (!BreakpointID::StringIsBreakpointName(llvm::StringRef(option_arg),
name_error)) {
error = CreateOptionParsingError(option_arg, short_option,
long_option, name_error.AsCString());
error = Status::FromError(CreateOptionParsingError(
option_arg, short_option, long_option, name_error.AsCString()));
}
m_names.push_back(std::string(option_arg));
break;
Expand Down
10 changes: 5 additions & 5 deletions lldb/source/Commands/CommandObjectMemoryTag.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ class CommandObjectMemoryTagRead : public CommandObjectParsed {
process->GetMemoryTagManager();

if (!tag_manager_or_err) {
result.SetError(Status(tag_manager_or_err.takeError()));
result.SetError(Status::FromError(tag_manager_or_err.takeError()));
return;
}

Expand All @@ -102,15 +102,15 @@ class CommandObjectMemoryTagRead : public CommandObjectParsed {
tag_manager->MakeTaggedRange(start_addr, end_addr, memory_regions);

if (!tagged_range) {
result.SetError(Status(tagged_range.takeError()));
result.SetError(Status::FromError(tagged_range.takeError()));
return;
}

llvm::Expected<std::vector<lldb::addr_t>> tags = process->ReadMemoryTags(
tagged_range->GetRangeBase(), tagged_range->GetByteSize());

if (!tags) {
result.SetError(Status(tags.takeError()));
result.SetError(Status::FromError(tags.takeError()));
return;
}

Expand Down Expand Up @@ -230,7 +230,7 @@ class CommandObjectMemoryTagWrite : public CommandObjectParsed {
process->GetMemoryTagManager();

if (!tag_manager_or_err) {
result.SetError(Status(tag_manager_or_err.takeError()));
result.SetError(Status::FromError(tag_manager_or_err.takeError()));
return;
}

Expand Down Expand Up @@ -282,7 +282,7 @@ class CommandObjectMemoryTagWrite : public CommandObjectParsed {
memory_regions);

if (!tagged_range) {
result.SetError(Status(tagged_range.takeError()));
result.SetError(Status::FromError(tagged_range.takeError()));
return;
}

Expand Down
6 changes: 3 additions & 3 deletions lldb/source/Commands/CommandObjectStats.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,21 +87,21 @@ class CommandObjectStatsDump : public CommandObjectParsed {
OptionArgParser::ToBoolean("--targets", option_arg))
m_stats_options.SetIncludeTargets(*bool_or_error);
else
error = bool_or_error.takeError();
error = Status::FromError(bool_or_error.takeError());
break;
case 'm':
if (llvm::Expected<bool> bool_or_error =
OptionArgParser::ToBoolean("--modules", option_arg))
m_stats_options.SetIncludeModules(*bool_or_error);
else
error = bool_or_error.takeError();
error = Status::FromError(bool_or_error.takeError());
break;
case 't':
if (llvm::Expected<bool> bool_or_error =
OptionArgParser::ToBoolean("--transcript", option_arg))
m_stats_options.SetIncludeTranscript(*bool_or_error);
else
error = bool_or_error.takeError();
error = Status::FromError(bool_or_error.takeError());
break;
default:
llvm_unreachable("Unimplemented option");
Expand Down
2 changes: 1 addition & 1 deletion lldb/source/Commands/CommandObjectTrace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -361,7 +361,7 @@ class CommandObjectTraceSchema : public CommandObjectParsed {
Trace::FindPluginSchema(plugin_name))
result.AppendMessage(*schemaOrErr);
else
error = schemaOrErr.takeError();
error = Status::FromError(schemaOrErr.takeError());
}

if (error.Success()) {
Expand Down
2 changes: 1 addition & 1 deletion lldb/source/Core/PluginManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -723,7 +723,7 @@ Status PluginManager::SaveCore(const lldb::ProcessSP &process_sp,
llvm::Expected<bool> ret =
process_sp->SaveCore(options.GetOutputFile()->GetPath());
if (!ret)
return Status(ret.takeError());
return Status::FromError(ret.takeError());
if (ret.get())
return Status();
}
Expand Down
2 changes: 1 addition & 1 deletion lldb/source/Core/ThreadedCommunication.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ bool ThreadedCommunication::StartReadThread(Status *error_ptr) {
m_read_thread = *maybe_thread;
} else {
if (error_ptr)
*error_ptr = Status(maybe_thread.takeError());
*error_ptr = Status::FromError(maybe_thread.takeError());
else {
LLDB_LOG_ERROR(GetLog(LLDBLog::Host), maybe_thread.takeError(),
"failed to launch host thread: {0}");
Expand Down
2 changes: 1 addition & 1 deletion lldb/source/Core/ValueObjectVTable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ bool ValueObjectVTable::UpdateValue() {
llvm::Expected<LanguageRuntime::VTableInfo> vtable_info_or_err =
language_runtime->GetVTableInfo(*parent, /*check_type=*/true);
if (!vtable_info_or_err) {
m_error = vtable_info_or_err.takeError();
m_error = Status::FromError(vtable_info_or_err.takeError());
return false;
}

Expand Down
Loading
Loading