forked from OSchip/llvm-project
Fixed a crasher where entering 'help disasm' on the command line would crash lldb.
The reasom of the crash is because of a missing entry in the argument table corresponding to eArgTypeUnsignedInteger. Add such entry and modify the call site of the crash to go through a fail-fast API to retrieve the argument table. Add a regression test to TestHelp.py. llvm-svn: 135206
This commit is contained in:
parent
cbd3bb27d7
commit
331eff3995
|
@ -623,8 +623,9 @@ CommandObject::LookupArgumentName (const char *arg_name)
|
|||
&& arg_name[len-1] == '>')
|
||||
arg_name_str = arg_name_str.substr (1, len-2);
|
||||
|
||||
const ArgumentTableEntry *table = GetArgumentTable();
|
||||
for (int i = 0; i < eArgTypeLastArg; ++i)
|
||||
if (arg_name_str.compare (g_arguments_data[i].arg_name) == 0)
|
||||
if (arg_name_str.compare (table[i].arg_name) == 0)
|
||||
return_type = g_arguments_data[i].arg_type;
|
||||
|
||||
return return_type;
|
||||
|
@ -778,6 +779,7 @@ CommandObject::g_arguments_data[] =
|
|||
{ eArgTypeThreadID, "thread-id", CommandCompletions::eNoCompletion, { NULL, false }, "Thread ID number." },
|
||||
{ eArgTypeThreadIndex, "thread-index", CommandCompletions::eNoCompletion, { NULL, false }, "Index into the process' list of threads." },
|
||||
{ eArgTypeThreadName, "thread-name", CommandCompletions::eNoCompletion, { NULL, false }, "The thread's name." },
|
||||
{ eArgTypeUnsignedInteger, "unsigned-integer", CommandCompletions::eNoCompletion, { NULL, false }, "An unsigned integer." },
|
||||
{ eArgTypeUnixSignal, "unix-signal", CommandCompletions::eNoCompletion, { NULL, false }, "A valid Unix signal name or number (e.g. SIGKILL, KILL or 9)." },
|
||||
{ eArgTypeVarName, "variable-name", CommandCompletions::eNoCompletion, { NULL, false }, "The name of a variable in your program." },
|
||||
{ eArgTypeValue, "value", CommandCompletions::eNoCompletion, { NULL, false }, "A value could be anything, depending on where and how it is used." },
|
||||
|
|
|
@ -61,6 +61,11 @@ class HelpCommandTestCase(TestBase):
|
|||
self.expect("version",
|
||||
patterns = ['LLDB-' + (version_str if version_str else '[0-9]+')])
|
||||
|
||||
def test_help_should_not_crash_lldb(self):
|
||||
"""Command 'help disasm' should not crash lldb."""
|
||||
self.runCmd("help disasm", check=False)
|
||||
self.runCmd("help unsigned-integer")
|
||||
|
||||
def test_help_should_not_hang_emacsshell(self):
|
||||
"""Command 'settings set term-width 0' should not hang the help command."""
|
||||
self.runCmd("settings set term-width 0")
|
||||
|
|
Loading…
Reference in New Issue