diff options
author | Zachary Turner <zturner@google.com> | 2016-09-23 17:48:13 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2016-09-23 17:48:13 +0000 |
commit | 8cef4b0bb4bae8598efa7cd1274e54f534b0f4a4 (patch) | |
tree | 1ce2972876d13303fcd7f12d5774f806921d3421 /lldb/source/Commands | |
parent | 6c46efba7818644ddab8d8c52940583c0672fd98 (diff) | |
download | bcm5719-llvm-8cef4b0bb4bae8598efa7cd1274e54f534b0f4a4.tar.gz bcm5719-llvm-8cef4b0bb4bae8598efa7cd1274e54f534b0f4a4.zip |
Update OptionGroup::SetValue to take StringRef.
Then deal with all the fallout.
Differential Revision: https://reviews.llvm.org/D24847
llvm-svn: 282265
Diffstat (limited to 'lldb/source/Commands')
-rw-r--r-- | lldb/source/Commands/CommandObjectBreakpoint.cpp | 19 | ||||
-rw-r--r-- | lldb/source/Commands/CommandObjectBreakpointCommand.cpp | 3 | ||||
-rw-r--r-- | lldb/source/Commands/CommandObjectCommands.cpp | 30 | ||||
-rw-r--r-- | lldb/source/Commands/CommandObjectExpression.cpp | 51 | ||||
-rw-r--r-- | lldb/source/Commands/CommandObjectExpression.h | 3 | ||||
-rw-r--r-- | lldb/source/Commands/CommandObjectMemory.cpp | 37 | ||||
-rw-r--r-- | lldb/source/Commands/CommandObjectPlatform.cpp | 23 | ||||
-rw-r--r-- | lldb/source/Commands/CommandObjectRegister.cpp | 3 | ||||
-rw-r--r-- | lldb/source/Commands/CommandObjectTarget.cpp | 4 | ||||
-rw-r--r-- | lldb/source/Commands/CommandObjectThread.cpp | 5 | ||||
-rw-r--r-- | lldb/source/Commands/CommandObjectType.cpp | 32 | ||||
-rw-r--r-- | lldb/source/Commands/CommandObjectWatchpointCommand.cpp | 5 |
12 files changed, 122 insertions, 93 deletions
diff --git a/lldb/source/Commands/CommandObjectBreakpoint.cpp b/lldb/source/Commands/CommandObjectBreakpoint.cpp index cb6d1d83907..4202068c680 100644 --- a/lldb/source/Commands/CommandObjectBreakpoint.cpp +++ b/lldb/source/Commands/CommandObjectBreakpoint.cpp @@ -217,7 +217,8 @@ public: break; case 'E': { - LanguageType language = Language::GetLanguageTypeFromString(option_arg); + LanguageType language = + Language::GetLanguageTypeFromString(option_strref); switch (language) { case eLanguageTypeC89: @@ -304,7 +305,7 @@ public: } case 'L': - m_language = Language::GetLanguageTypeFromString(option_arg); + m_language = Language::GetLanguageTypeFromString(option_strref); if (m_language == eLanguageTypeUnknown) error.SetErrorStringWithFormat( "Unknown language type: '%s' for breakpoint", option_arg); @@ -1772,28 +1773,29 @@ public: return llvm::makeArrayRef(g_breakpoint_name_options); } - Error SetOptionValue(uint32_t option_idx, const char *option_value, + Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, ExecutionContext *execution_context) override { Error error; const int short_option = g_breakpoint_name_options[option_idx].short_option; - llvm::StringRef option_strref(option_value ? option_value : ""); switch (short_option) { case 'N': - if (BreakpointID::StringIsBreakpointName(option_strref, error) && + if (BreakpointID::StringIsBreakpointName(option_value, error) && error.Success()) - m_name.SetValueFromString(option_strref); + m_name.SetValueFromString(option_value); break; case 'B': if (m_breakpoint.SetValueFromString(option_value).Fail()) error.SetErrorStringWithFormat( - "unrecognized value \"%s\" for breakpoint", option_value); + "unrecognized value \"%s\" for breakpoint", + option_value.str().c_str()); break; case 'D': if (m_use_dummy.SetValueFromString(option_value).Fail()) error.SetErrorStringWithFormat( - "unrecognized value \"%s\" for use-dummy", option_value); + "unrecognized value \"%s\" for use-dummy", + option_value.str().c_str()); break; default: @@ -1803,6 +1805,7 @@ public: } return error; } + Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete; void OptionParsingStarting(ExecutionContext *execution_context) override { m_name.Clear(); diff --git a/lldb/source/Commands/CommandObjectBreakpointCommand.cpp b/lldb/source/Commands/CommandObjectBreakpointCommand.cpp index e0a146f027a..f27fb7cf7bd 100644 --- a/lldb/source/Commands/CommandObjectBreakpointCommand.cpp +++ b/lldb/source/Commands/CommandObjectBreakpointCommand.cpp @@ -301,7 +301,8 @@ are no syntax errors may indicate that a function was declared but never called. case 's': m_script_language = (lldb::ScriptLanguage)Args::StringToOptionEnum( - option_arg, g_breakpoint_add_options[option_idx].enum_values, + llvm::StringRef::withNullAsEmpty(option_arg), + g_breakpoint_add_options[option_idx].enum_values, eScriptLanguageNone, error); if (m_script_language == eScriptLanguagePython || diff --git a/lldb/source/Commands/CommandObjectCommands.cpp b/lldb/source/Commands/CommandObjectCommands.cpp index ed367330d72..6f465b531c2 100644 --- a/lldb/source/Commands/CommandObjectCommands.cpp +++ b/lldb/source/Commands/CommandObjectCommands.cpp @@ -70,22 +70,25 @@ protected: ExecutionContext *execution_context) override { Error error; const int short_option = m_getopt_table[option_idx].val; + llvm::StringRef option_strref = + llvm::StringRef::withNullAsEmpty(option_arg); switch (short_option) { case 'c': - error = m_count.SetValueFromString(option_arg, eVarSetOperationAssign); + error = + m_count.SetValueFromString(option_strref, eVarSetOperationAssign); break; case 's': if (option_arg && strcmp("end", option_arg) == 0) { m_start_idx.SetCurrentValue(UINT64_MAX); m_start_idx.SetOptionWasSet(); } else - error = m_start_idx.SetValueFromString(option_arg, + error = m_start_idx.SetValueFromString(option_strref, eVarSetOperationAssign); break; case 'e': - error = - m_stop_idx.SetValueFromString(option_arg, eVarSetOperationAssign); + error = m_stop_idx.SetValueFromString(option_strref, + eVarSetOperationAssign); break; case 'C': m_clear.SetCurrentValue(true); @@ -260,18 +263,20 @@ protected: ExecutionContext *execution_context) override { Error error; const int short_option = m_getopt_table[option_idx].val; + llvm::StringRef option_strref = + llvm::StringRef::withNullAsEmpty(option_arg); switch (short_option) { case 'e': - error = m_stop_on_error.SetValueFromString(option_arg); + error = m_stop_on_error.SetValueFromString(option_strref); break; case 'c': - error = m_stop_on_continue.SetValueFromString(option_arg); + error = m_stop_on_continue.SetValueFromString(option_strref); break; case 's': - error = m_silent_run.SetValueFromString(option_arg); + error = m_silent_run.SetValueFromString(option_strref); break; default: @@ -371,20 +376,21 @@ protected: return llvm::makeArrayRef(g_alias_options); } - Error SetOptionValue(uint32_t option_idx, const char *option_value, + Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, ExecutionContext *execution_context) override { Error error; const int short_option = GetDefinitions()[option_idx].short_option; + std::string option_str(option_value); switch (short_option) { case 'h': - m_help.SetCurrentValue(option_value); + m_help.SetCurrentValue(option_str); m_help.SetOptionWasSet(); break; case 'H': - m_long_help.SetCurrentValue(option_value); + m_long_help.SetCurrentValue(option_str); m_long_help.SetOptionWasSet(); break; @@ -396,6 +402,7 @@ protected: return error; } + Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete; void OptionParsingStarting(ExecutionContext *execution_context) override { m_help.Clear(); @@ -1645,7 +1652,8 @@ protected: case 's': m_synchronicity = (ScriptedCommandSynchronicity)Args::StringToOptionEnum( - option_arg, GetDefinitions()[option_idx].enum_values, 0, error); + llvm::StringRef::withNullAsEmpty(option_arg), + GetDefinitions()[option_idx].enum_values, 0, error); if (!error.Success()) error.SetErrorStringWithFormat( "unrecognized value for synchronicity '%s'", option_arg); diff --git a/lldb/source/Commands/CommandObjectExpression.cpp b/lldb/source/Commands/CommandObjectExpression.cpp index 4a041df24f1..11a4721a924 100644 --- a/lldb/source/Commands/CommandObjectExpression.cpp +++ b/lldb/source/Commands/CommandObjectExpression.cpp @@ -70,11 +70,10 @@ static OptionDefinition g_expression_options[] = { }; Error CommandObjectExpression::CommandOptions::SetOptionValue( - uint32_t option_idx, const char *option_arg, + uint32_t option_idx, llvm::StringRef option_arg, ExecutionContext *execution_context) { Error error; - auto option_strref = llvm::StringRef::withNullAsEmpty(option_arg); const int short_option = GetDefinitions()[option_idx].short_option; switch (short_option) { @@ -82,66 +81,68 @@ Error CommandObjectExpression::CommandOptions::SetOptionValue( language = Language::GetLanguageTypeFromString(option_arg); if (language == eLanguageTypeUnknown) error.SetErrorStringWithFormat( - "unknown language type: '%s' for expression", option_arg); + "unknown language type: '%s' for expression", + option_arg.str().c_str()); break; case 'a': { bool success; bool result; - result = Args::StringToBoolean(option_strref, true, &success); + result = Args::StringToBoolean(option_arg, true, &success); if (!success) error.SetErrorStringWithFormat( - "invalid all-threads value setting: \"%s\"", option_arg); + "invalid all-threads value setting: \"%s\"", + option_arg.str().c_str()); else try_all_threads = result; } break; case 'i': { bool success; - bool tmp_value = Args::StringToBoolean(option_strref, true, &success); + bool tmp_value = Args::StringToBoolean(option_arg, true, &success); if (success) ignore_breakpoints = tmp_value; else error.SetErrorStringWithFormat( - "could not convert \"%s\" to a boolean value.", option_arg); + "could not convert \"%s\" to a boolean value.", + option_arg.str().c_str()); break; } case 'j': { bool success; - bool tmp_value = Args::StringToBoolean(option_strref, true, &success); + bool tmp_value = Args::StringToBoolean(option_arg, true, &success); if (success) allow_jit = tmp_value; else error.SetErrorStringWithFormat( - "could not convert \"%s\" to a boolean value.", option_arg); + "could not convert \"%s\" to a boolean value.", + option_arg.str().c_str()); break; } - case 't': { - bool success; - uint32_t result; - result = StringConvert::ToUInt32(option_arg, 0, 0, &success); - if (success) - timeout = result; - else + case 't': + if (option_arg.getAsInteger(0, timeout)) { + timeout = 0; error.SetErrorStringWithFormat("invalid timeout setting \"%s\"", - option_arg); - } break; + option_arg.str().c_str()); + } + break; case 'u': { bool success; - bool tmp_value = Args::StringToBoolean(option_strref, true, &success); + bool tmp_value = Args::StringToBoolean(option_arg, true, &success); if (success) unwind_on_error = tmp_value; else error.SetErrorStringWithFormat( - "could not convert \"%s\" to a boolean value.", option_arg); + "could not convert \"%s\" to a boolean value.", + option_arg.str().c_str()); break; } case 'v': - if (!option_arg) { + if (!option_arg.empty()) { m_verbosity = eLanguageRuntimeDescriptionDisplayVerbosityFull; break; } @@ -150,7 +151,8 @@ Error CommandObjectExpression::CommandOptions::SetOptionValue( option_arg, GetDefinitions()[option_idx].enum_values, 0, error); if (!error.Success()) error.SetErrorStringWithFormat( - "unrecognized value for description-verbosity '%s'", option_arg); + "unrecognized value for description-verbosity '%s'", + option_arg.str().c_str()); break; case 'g': @@ -165,12 +167,13 @@ Error CommandObjectExpression::CommandOptions::SetOptionValue( case 'X': { bool success; - bool tmp_value = Args::StringToBoolean(option_strref, true, &success); + bool tmp_value = Args::StringToBoolean(option_arg, true, &success); if (success) auto_apply_fixits = tmp_value ? eLazyBoolYes : eLazyBoolNo; else error.SetErrorStringWithFormat( - "could not convert \"%s\" to a boolean value.", option_arg); + "could not convert \"%s\" to a boolean value.", + option_arg.str().c_str()); break; } diff --git a/lldb/source/Commands/CommandObjectExpression.h b/lldb/source/Commands/CommandObjectExpression.h index 01593aeeec9..7aacc922f0c 100644 --- a/lldb/source/Commands/CommandObjectExpression.h +++ b/lldb/source/Commands/CommandObjectExpression.h @@ -34,8 +34,9 @@ public: llvm::ArrayRef<OptionDefinition> GetDefinitions() override; - Error SetOptionValue(uint32_t option_idx, const char *option_value, + Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, ExecutionContext *execution_context) override; + Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete; void OptionParsingStarting(ExecutionContext *execution_context) override; diff --git a/lldb/source/Commands/CommandObjectMemory.cpp b/lldb/source/Commands/CommandObjectMemory.cpp index c35f7b42c64..6914b2a4917 100644 --- a/lldb/source/Commands/CommandObjectMemory.cpp +++ b/lldb/source/Commands/CommandObjectMemory.cpp @@ -73,17 +73,18 @@ public: return llvm::makeArrayRef(g_read_memory_options); } - Error SetOptionValue(uint32_t option_idx, const char *option_arg, + Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, ExecutionContext *execution_context) override { Error error; const int short_option = g_read_memory_options[option_idx].short_option; switch (short_option) { case 'l': - error = m_num_per_line.SetValueFromString(option_arg); + error = m_num_per_line.SetValueFromString(option_value); if (m_num_per_line.GetCurrentValue() == 0) error.SetErrorStringWithFormat( - "invalid value for --num-per-line option '%s'", option_arg); + "invalid value for --num-per-line option '%s'", + option_value.str().c_str()); break; case 'b': @@ -91,7 +92,7 @@ public: break; case 't': - error = m_view_as_type.SetValueFromString(option_arg); + error = m_view_as_type.SetValueFromString(option_value); break; case 'r': @@ -99,7 +100,7 @@ public: break; case 'E': - error = m_offset.SetValueFromString(option_arg); + error = m_offset.SetValueFromString(option_value); break; default: @@ -109,6 +110,7 @@ public: } return error; } + Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete; void OptionParsingStarting(ExecutionContext *execution_context) override { m_num_per_line.Clear(); @@ -908,7 +910,7 @@ public: return llvm::makeArrayRef(g_memory_find_option_table); } - Error SetOptionValue(uint32_t option_idx, const char *option_arg, + Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, ExecutionContext *execution_context) override { Error error; const int short_option = @@ -916,20 +918,20 @@ public: switch (short_option) { case 'e': - m_expr.SetValueFromString(option_arg); + m_expr.SetValueFromString(option_value); break; case 's': - m_string.SetValueFromString(option_arg); + m_string.SetValueFromString(option_value); break; case 'c': - if (m_count.SetValueFromString(option_arg).Fail()) + if (m_count.SetValueFromString(option_value).Fail()) error.SetErrorString("unrecognized value for count"); break; case 'o': - if (m_offset.SetValueFromString(option_arg).Fail()) + if (m_offset.SetValueFromString(option_value).Fail()) error.SetErrorString("unrecognized value for dump-offset"); break; @@ -940,6 +942,7 @@ public: } return error; } + Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete; void OptionParsingStarting(ExecutionContext *execution_context) override { m_expr.Clear(); @@ -1204,7 +1207,7 @@ public: return llvm::makeArrayRef(g_memory_write_option_table); } - Error SetOptionValue(uint32_t option_idx, const char *option_arg, + Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, ExecutionContext *execution_context) override { Error error; const int short_option = @@ -1212,20 +1215,19 @@ public: switch (short_option) { case 'i': - m_infile.SetFile(option_arg, true); + m_infile.SetFile(option_value, true); if (!m_infile.Exists()) { m_infile.Clear(); error.SetErrorStringWithFormat("input file does not exist: '%s'", - option_arg); + option_value.str().c_str()); } break; case 'o': { - bool success; - m_infile_offset = StringConvert::ToUInt64(option_arg, 0, 0, &success); - if (!success) { + if (option_value.getAsInteger(0, m_infile_offset)) { + m_infile_offset = 0; error.SetErrorStringWithFormat("invalid offset string '%s'", - option_arg); + option_value.str().c_str()); } } break; @@ -1236,6 +1238,7 @@ public: } return error; } + Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete; void OptionParsingStarting(ExecutionContext *execution_context) override { m_infile.Clear(); diff --git a/lldb/source/Commands/CommandObjectPlatform.cpp b/lldb/source/Commands/CommandObjectPlatform.cpp index bc52af82301..702fee9badd 100644 --- a/lldb/source/Commands/CommandObjectPlatform.cpp +++ b/lldb/source/Commands/CommandObjectPlatform.cpp @@ -34,8 +34,10 @@ using namespace lldb; using namespace lldb_private; -static mode_t ParsePermissionString(const char *permissions) { - if (strlen(permissions) != 9) +static mode_t ParsePermissionString(const char *) = delete; + +static mode_t ParsePermissionString(llvm::StringRef permissions) { + if (permissions.size() != 9) return (mode_t)(-1); bool user_r, user_w, user_x, group_r, group_w, group_x, world_r, world_w, world_x; @@ -76,32 +78,31 @@ static OptionDefinition g_permissions_options[] = { // clang-format on }; -class OptionPermissions : public lldb_private::OptionGroup { +class OptionPermissions : public OptionGroup { public: OptionPermissions() {} ~OptionPermissions() override = default; lldb_private::Error - SetOptionValue(uint32_t option_idx, const char *option_arg, + SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg, ExecutionContext *execution_context) override { Error error; char short_option = (char)GetDefinitions()[option_idx].short_option; switch (short_option) { case 'v': { - bool ok; - uint32_t perms = StringConvert::ToUInt32(option_arg, 777, 8, &ok); - if (!ok) + if (option_arg.getAsInteger(8, m_permissions)) { + m_permissions = 0777; error.SetErrorStringWithFormat("invalid value for permissions: %s", - option_arg); - else - m_permissions = perms; + option_arg.str().c_str()); + } + } break; case 's': { mode_t perms = ParsePermissionString(option_arg); if (perms == (mode_t)-1) error.SetErrorStringWithFormat("invalid value for permissions: %s", - option_arg); + option_arg.str().c_str()); else m_permissions = perms; } break; diff --git a/lldb/source/Commands/CommandObjectRegister.cpp b/lldb/source/Commands/CommandObjectRegister.cpp index fe74d26671d..89b11887003 100644 --- a/lldb/source/Commands/CommandObjectRegister.cpp +++ b/lldb/source/Commands/CommandObjectRegister.cpp @@ -260,7 +260,7 @@ protected: alternate_name.Clear(); } - Error SetOptionValue(uint32_t option_idx, const char *option_value, + Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, ExecutionContext *execution_context) override { Error error; const int short_option = GetDefinitions()[option_idx].short_option; @@ -294,6 +294,7 @@ protected: } return error; } + Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete; // Instance variables to hold the values for command options. OptionValueArray set_indexes; diff --git a/lldb/source/Commands/CommandObjectTarget.cpp b/lldb/source/Commands/CommandObjectTarget.cpp index d794c91816f..635bb0a04c0 100644 --- a/lldb/source/Commands/CommandObjectTarget.cpp +++ b/lldb/source/Commands/CommandObjectTarget.cpp @@ -1980,8 +1980,8 @@ public: switch (short_option) { case 's': m_sort_order = (SortOrder)Args::StringToOptionEnum( - option_arg, GetDefinitions()[option_idx].enum_values, - eSortOrderNone, error); + llvm::StringRef::withNullAsEmpty(option_arg), + GetDefinitions()[option_idx].enum_values, eSortOrderNone, error); break; default: diff --git a/lldb/source/Commands/CommandObjectThread.cpp b/lldb/source/Commands/CommandObjectThread.cpp index 136f003d883..3e75e646182 100644 --- a/lldb/source/Commands/CommandObjectThread.cpp +++ b/lldb/source/Commands/CommandObjectThread.cpp @@ -381,7 +381,7 @@ public: OptionEnumValueElement *enum_values = GetDefinitions()[option_idx].enum_values; m_run_mode = (lldb::RunMode)Args::StringToOptionEnum( - option_arg, enum_values, eOnlyDuringStepping, error); + option_strref, enum_values, eOnlyDuringStepping, error); } break; case 'e': { @@ -957,7 +957,8 @@ public: OptionEnumValueElement *enum_values = GetDefinitions()[option_idx].enum_values; lldb::RunMode run_mode = (lldb::RunMode)Args::StringToOptionEnum( - option_arg, enum_values, eOnlyDuringStepping, error); + llvm::StringRef::withNullAsEmpty(option_arg), enum_values, + eOnlyDuringStepping, error); if (error.Success()) { if (run_mode == eAllThreads) diff --git a/lldb/source/Commands/CommandObjectType.cpp b/lldb/source/Commands/CommandObjectType.cpp index 4f470f0d68e..c2747fd1bd2 100644 --- a/lldb/source/Commands/CommandObjectType.cpp +++ b/lldb/source/Commands/CommandObjectType.cpp @@ -562,7 +562,7 @@ private: m_custom_type_name.clear(); } - Error SetOptionValue(uint32_t option_idx, const char *option_value, + Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, ExecutionContext *execution_context) override { Error error; const int short_option = @@ -571,11 +571,10 @@ private: switch (short_option) { case 'C': - m_cascade = Args::StringToBoolean( - llvm::StringRef::withNullAsEmpty(option_value), true, &success); + m_cascade = Args::StringToBoolean(option_value, true, &success); if (!success) error.SetErrorStringWithFormat("invalid value for cascade: %s", - option_value); + option_value.str().c_str()); break; case 'p': m_skip_pointers = true; @@ -600,6 +599,7 @@ private: return error; } + Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete; // Instance variables to hold the values for command options. @@ -784,7 +784,8 @@ protected: m_category = std::string(option_arg); break; case 'l': - m_language = Language::GetLanguageTypeFromString(option_arg); + m_language = Language::GetLanguageTypeFromString( + llvm::StringRef::withNullAsEmpty(option_arg)); break; default: error.SetErrorStringWithFormat("unrecognized option '%c'", @@ -1031,14 +1032,15 @@ class CommandObjectTypeFormatterList : public CommandObjectParsed { ExecutionContext *execution_context) override { Error error; const int short_option = m_getopt_table[option_idx].val; - + llvm::StringRef option_strref = + llvm::StringRef::withNullAsEmpty(option_arg); switch (short_option) { case 'w': - m_category_regex.SetCurrentValue(option_arg); + m_category_regex.SetCurrentValue(option_strref); m_category_regex.SetOptionWasSet(); break; case 'l': - error = m_category_language.SetValueFromString(option_arg); + error = m_category_language.SetValueFromString(option_strref); if (error.Success()) m_category_language.SetOptionWasSet(); break; @@ -1814,10 +1816,11 @@ class CommandObjectTypeCategoryDefine : public CommandObjectParsed { switch (short_option) { case 'e': - m_define_enabled.SetValueFromString("true"); + m_define_enabled.SetValueFromString(llvm::StringRef("true")); break; case 'l': - error = m_cate_language.SetValueFromString(option_arg); + error = m_cate_language.SetValueFromString( + llvm::StringRef::withNullAsEmpty(option_arg)); break; default: error.SetErrorStringWithFormat("unrecognized option '%c'", @@ -1920,7 +1923,8 @@ class CommandObjectTypeCategoryEnable : public CommandObjectParsed { switch (short_option) { case 'l': if (option_arg) { - m_language = Language::GetLanguageTypeFromString(option_arg); + m_language = Language::GetLanguageTypeFromString( + llvm::StringRef::withNullAsEmpty(option_arg)); if (m_language == lldb::eLanguageTypeUnknown) error.SetErrorStringWithFormat("unrecognized language '%s'", option_arg); @@ -2097,7 +2101,8 @@ class CommandObjectTypeCategoryDisable : public CommandObjectParsed { switch (short_option) { case 'l': if (option_arg) { - m_language = Language::GetLanguageTypeFromString(option_arg); + m_language = Language::GetLanguageTypeFromString( + llvm::StringRef::withNullAsEmpty(option_arg)); if (m_language == lldb::eLanguageTypeUnknown) error.SetErrorStringWithFormat("unrecognized language '%s'", option_arg); @@ -2802,7 +2807,7 @@ protected: return llvm::makeArrayRef(g_type_lookup_options); } - Error SetOptionValue(uint32_t option_idx, const char *option_value, + Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, ExecutionContext *execution_context) override { Error error; @@ -2825,6 +2830,7 @@ protected: return error; } + Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete; void OptionParsingStarting(ExecutionContext *execution_context) override { m_show_help = false; diff --git a/lldb/source/Commands/CommandObjectWatchpointCommand.cpp b/lldb/source/Commands/CommandObjectWatchpointCommand.cpp index 9377d2abd23..dadf2a3c511 100644 --- a/lldb/source/Commands/CommandObjectWatchpointCommand.cpp +++ b/lldb/source/Commands/CommandObjectWatchpointCommand.cpp @@ -331,8 +331,9 @@ are no syntax errors may indicate that a function was declared but never called. case 's': m_script_language = (lldb::ScriptLanguage)Args::StringToOptionEnum( - option_arg, GetDefinitions()[option_idx].enum_values, - eScriptLanguageNone, error); + llvm::StringRef::withNullAsEmpty(option_arg), + GetDefinitions()[option_idx].enum_values, eScriptLanguageNone, + error); m_use_script_language = (m_script_language == eScriptLanguagePython || m_script_language == eScriptLanguageDefault); |