forked from OSchip/llvm-project
rdar://problem/11535045
Make 'help arch' return the list of supported architectures. Add a convenience method StringList::Join(const char *separator) which is called from the help function for 'arch'. Also add a simple test case. llvm-svn: 157507
This commit is contained in:
parent
de22182b33
commit
ca7835c685
|
@ -51,6 +51,9 @@ public:
|
|||
const char *
|
||||
GetStringAtIndex (size_t idx) const;
|
||||
|
||||
const char *
|
||||
Join (const char *seperator);
|
||||
|
||||
void
|
||||
Clear ();
|
||||
|
||||
|
|
|
@ -95,6 +95,25 @@ StringList::GetStringAtIndex (size_t idx) const
|
|||
return NULL;
|
||||
}
|
||||
|
||||
const char *
|
||||
StringList::Join (const char *separator)
|
||||
{
|
||||
uint32_t size = GetSize();
|
||||
if (size == 0)
|
||||
return "";
|
||||
if (size == 1)
|
||||
return GetStringAtIndex(0);
|
||||
|
||||
std::string buf;
|
||||
for (uint32_t i = 0; i < size; ++i)
|
||||
{
|
||||
if (i > 0)
|
||||
buf.append(separator);
|
||||
buf.append(GetStringAtIndex(i));
|
||||
}
|
||||
return buf.c_str();;
|
||||
}
|
||||
|
||||
void
|
||||
StringList::Clear ()
|
||||
{
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include <ctype.h>
|
||||
|
||||
#include "lldb/Core/Address.h"
|
||||
#include "lldb/Core/ArchSpec.h"
|
||||
#include "lldb/Interpreter/Options.h"
|
||||
|
||||
// These are for the Sourcename completers.
|
||||
|
@ -845,13 +846,24 @@ CommandObject::GetArgumentDescriptionAsCString (const lldb::CommandArgumentType
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static
|
||||
const char *arch_helper()
|
||||
{
|
||||
StringList archs;
|
||||
ArchSpec::AutoComplete(NULL, archs);
|
||||
StreamString ss;
|
||||
ss.Printf("These are the supported architecture names:\n");
|
||||
ss.Printf("%s\n", archs.Join("\n"));
|
||||
return ss.GetData();
|
||||
}
|
||||
|
||||
CommandObject::ArgumentTableEntry
|
||||
CommandObject::g_arguments_data[] =
|
||||
{
|
||||
{ eArgTypeAddress, "address", CommandCompletions::eNoCompletion, { NULL, false }, "A valid address in the target program's execution space." },
|
||||
{ eArgTypeAliasName, "alias-name", CommandCompletions::eNoCompletion, { NULL, false }, "The name of an abbreviation (alias) for a debugger command." },
|
||||
{ eArgTypeAliasOptions, "options-for-aliased-command", CommandCompletions::eNoCompletion, { NULL, false }, "Command options to be used as part of an alias (abbreviation) definition. (See 'help commands alias' for more information.)" },
|
||||
{ eArgTypeArchitecture, "arch", CommandCompletions::eArchitectureCompletion, { NULL, false }, "The architecture name, e.g. i386 or x86_64." },
|
||||
{ eArgTypeArchitecture, "arch", CommandCompletions::eArchitectureCompletion, { arch_helper, true }, "The architecture name, e.g. i386 or x86_64." },
|
||||
{ eArgTypeBoolean, "boolean", CommandCompletions::eNoCompletion, { NULL, false }, "A Boolean value: 'true' or 'false'" },
|
||||
{ eArgTypeBreakpointID, "breakpt-id", CommandCompletions::eNoCompletion, { BreakpointIDHelpTextCallback, false }, NULL },
|
||||
{ eArgTypeBreakpointIDRange, "breakpt-id-list", CommandCompletions::eNoCompletion, { BreakpointIDRangeHelpTextCallback, false }, NULL },
|
||||
|
|
|
@ -65,6 +65,11 @@ class HelpCommandTestCase(TestBase):
|
|||
return None
|
||||
|
||||
|
||||
def test_help_arch(self):
|
||||
"""Test 'help arch' which should list of supported architectures."""
|
||||
self.expect("help arch",
|
||||
substrs = ['arm', 'x86_64', 'i386'])
|
||||
|
||||
def test_help_version(self):
|
||||
"""Test 'help version' and 'version' commands."""
|
||||
self.expect("help version",
|
||||
|
|
Loading…
Reference in New Issue