summaryrefslogtreecommitdiffstats
path: root/lldb/source/Commands
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2016-09-23 17:48:13 +0000
committerZachary Turner <zturner@google.com>2016-09-23 17:48:13 +0000
commit8cef4b0bb4bae8598efa7cd1274e54f534b0f4a4 (patch)
tree1ce2972876d13303fcd7f12d5774f806921d3421 /lldb/source/Commands
parent6c46efba7818644ddab8d8c52940583c0672fd98 (diff)
downloadbcm5719-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.cpp19
-rw-r--r--lldb/source/Commands/CommandObjectBreakpointCommand.cpp3
-rw-r--r--lldb/source/Commands/CommandObjectCommands.cpp30
-rw-r--r--lldb/source/Commands/CommandObjectExpression.cpp51
-rw-r--r--lldb/source/Commands/CommandObjectExpression.h3
-rw-r--r--lldb/source/Commands/CommandObjectMemory.cpp37
-rw-r--r--lldb/source/Commands/CommandObjectPlatform.cpp23
-rw-r--r--lldb/source/Commands/CommandObjectRegister.cpp3
-rw-r--r--lldb/source/Commands/CommandObjectTarget.cpp4
-rw-r--r--lldb/source/Commands/CommandObjectThread.cpp5
-rw-r--r--lldb/source/Commands/CommandObjectType.cpp32
-rw-r--r--lldb/source/Commands/CommandObjectWatchpointCommand.cpp5
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);
OpenPOWER on IntegriCloud