diff options
Diffstat (limited to 'lldb/source/Interpreter')
| -rw-r--r-- | lldb/source/Interpreter/CommandInterpreter.cpp | 5 | ||||
| -rw-r--r-- | lldb/source/Interpreter/OptionGroupArchitecture.cpp | 85 | ||||
| -rw-r--r-- | lldb/source/Interpreter/OptionGroupPlatform.cpp | 109 |
3 files changed, 197 insertions, 2 deletions
diff --git a/lldb/source/Interpreter/CommandInterpreter.cpp b/lldb/source/Interpreter/CommandInterpreter.cpp index 6dcc4a1eea5..95061523bf4 100644 --- a/lldb/source/Interpreter/CommandInterpreter.cpp +++ b/lldb/source/Interpreter/CommandInterpreter.cpp @@ -19,7 +19,7 @@ //#include "../Commands/CommandObjectCall.h" #include "../Commands/CommandObjectDisassemble.h" #include "../Commands/CommandObjectExpression.h" -#include "../Commands/CommandObjectFile.h" +//#include "../Commands/CommandObjectFile.h" #include "../Commands/CommandObjectFrame.h" #include "../Commands/CommandObjectHelp.h" #include "../Commands/CommandObjectImage.h" @@ -117,6 +117,7 @@ CommandInterpreter::Initialize () HandleCommand ("command alias po expression -o --", false, result); HandleCommand ("command alias up _regexp-up", false, result); HandleCommand ("command alias down _regexp-down", false, result); + HandleCommand ("command alias file target create", false, result); } @@ -165,7 +166,7 @@ CommandInterpreter::LoadCommandDictionary () m_command_dict["commands"] = CommandObjectSP (new CommandObjectMultiwordCommands (*this)); m_command_dict["disassemble"] = CommandObjectSP (new CommandObjectDisassemble (*this)); m_command_dict["expression"]= CommandObjectSP (new CommandObjectExpression (*this)); - m_command_dict["file"] = CommandObjectSP (new CommandObjectFile (*this)); +// m_command_dict["file"] = CommandObjectSP (new CommandObjectFile (*this)); m_command_dict["frame"] = CommandObjectSP (new CommandObjectMultiwordFrame (*this)); m_command_dict["help"] = CommandObjectSP (new CommandObjectHelp (*this)); m_command_dict["image"] = CommandObjectSP (new CommandObjectImage (*this)); diff --git a/lldb/source/Interpreter/OptionGroupArchitecture.cpp b/lldb/source/Interpreter/OptionGroupArchitecture.cpp new file mode 100644 index 00000000000..f96d704e3f1 --- /dev/null +++ b/lldb/source/Interpreter/OptionGroupArchitecture.cpp @@ -0,0 +1,85 @@ +//===-- OptionGroupArchitecture.cpp -----------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "OptionGroupArchitecture.h" + +// C Includes +// C++ Includes +// Other libraries and framework includes +// Project includes + +using namespace lldb; +using namespace lldb_private; + +OptionGroupArchitecture::OptionGroupArchitecture() : + m_arch_str () +{ +} + +OptionGroupArchitecture::~OptionGroupArchitecture () +{ +} + +OptionDefinition g_file_option_table[] = +{ + { LLDB_OPT_SET_1 , false, "arch" , 'a', required_argument, NULL, 0, eArgTypeArchitecture , "Specify the architecture for the target."}, +}; +const uint32_t k_num_file_options = sizeof(g_file_option_table)/sizeof(OptionDefinition); + +uint32_t +OptionGroupArchitecture::GetNumDefinitions () +{ + return k_num_file_options; +} + +const OptionDefinition * +OptionGroupArchitecture::GetDefinitions () +{ + return g_file_option_table; +} + +bool +OptionGroupArchitecture::GetArchitecture (Platform *platform, ArchSpec &arch) +{ + if (m_arch_str.empty()) + arch.Clear(); + else + arch.SetTriple(m_arch_str.c_str(), platform); + return arch.IsValid(); +} + + +Error +OptionGroupArchitecture::SetOptionValue (CommandInterpreter &interpreter, + uint32_t option_idx, + const char *option_arg) +{ + Error error; + char short_option = (char) g_file_option_table[option_idx].short_option; + + switch (short_option) + { + case 'a': + m_arch_str.assign (option_arg); + break; + + default: + error.SetErrorStringWithFormat ("Unrecognized option '%c'.\n", short_option); + break; + } + + return error; +} + +void +OptionGroupArchitecture::OptionParsingStarting (CommandInterpreter &interpreter) +{ + m_arch_str.clear(); +} + diff --git a/lldb/source/Interpreter/OptionGroupPlatform.cpp b/lldb/source/Interpreter/OptionGroupPlatform.cpp new file mode 100644 index 00000000000..59dbceb7626 --- /dev/null +++ b/lldb/source/Interpreter/OptionGroupPlatform.cpp @@ -0,0 +1,109 @@ +//===-- OptionGroupPlatform.cpp ---------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "lldb/Interpreter/OptionGroupPlatform.h" + +// C Includes +// C++ Includes +// Other libraries and framework includes +// Project includes +#include "lldb/Interpreter/CommandInterpreter.h" +#include "lldb/Target/Platform.h" + +using namespace lldb; +using namespace lldb_private; + +PlatformSP +OptionGroupPlatform::CreatePlatformWithOptions (CommandInterpreter &interpreter, bool make_selected, Error& error) +{ + PlatformSP platform_sp; + if (!m_platform_name.empty()) + { + platform_sp = Platform::Create (m_platform_name.c_str(), error); + + if (platform_sp) + { + interpreter.GetDebugger().GetPlatformList().Append (platform_sp, make_selected); + if (m_os_version_major != UINT32_MAX) + { + platform_sp->SetOSVersion (m_os_version_major, + m_os_version_minor, + m_os_version_update); + } + } + } + return platform_sp; +} + +void +OptionGroupPlatform::OptionParsingStarting (CommandInterpreter &interpreter) +{ + m_platform_name.clear(); + m_os_version_major = UINT32_MAX; + m_os_version_minor = UINT32_MAX; + m_os_version_update = UINT32_MAX; +} + +static OptionDefinition +g_option_table[] = +{ + { LLDB_OPT_SET_ALL, false, "platform" , 'p', required_argument, NULL, 0, eArgTypePlatform, "Specify name of the platform to use for this target, creating the platform if necessary."}, + { LLDB_OPT_SET_ALL, false, "sdk-version", 'v', required_argument, NULL, 0, eArgTypeNone, "Specify the initial SDK version to use prior to connecting." } +}; + +static const uint32_t k_option_table_size = sizeof(g_option_table)/sizeof (OptionDefinition); + +const OptionDefinition* +OptionGroupPlatform::GetDefinitions () +{ + if (m_include_platform_option) + return g_option_table; + return g_option_table + 1; +} + +uint32_t +OptionGroupPlatform::GetNumDefinitions () +{ + if (m_include_platform_option) + return k_option_table_size; + return k_option_table_size - 1; +} + + +Error +OptionGroupPlatform::SetOptionValue (CommandInterpreter &interpreter, + uint32_t option_idx, + const char *option_arg) +{ + Error error; + if (!m_include_platform_option) + --option_idx; + + char short_option = (char) g_option_table[option_idx].short_option; + + switch (short_option) + { + case 'p': + m_platform_name.assign (option_arg); + break; + + case 'v': + if (Args::StringToVersion (option_arg, + m_os_version_major, + m_os_version_minor, + m_os_version_update) == option_arg) + error.SetErrorStringWithFormat ("invalid version string '%s'", option_arg); + break; + + default: + error.SetErrorStringWithFormat ("Unrecognized option '%c'.\n", short_option); + break; + } + return error; +} |

