CommandObjectTarget.cpp revision 43b014aa33e20e61790e16ed69a2c57aae2fbc6e
124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- CommandObjectTarget.cpp ---------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "CommandObjectTarget.h" 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <errno.h> 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <sys/errno.h> 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes 1884cdc15005983e5244d665fa779e33c2b6fac95fJim Ingham#include "lldb/Interpreter/Args.h" 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/Debugger.h" 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/Timer.h" 2163094e0bb161580564954dee512955c1c79d3476Greg Clayton#include "lldb/Core/Debugger.h" 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Interpreter/CommandInterpreter.h" 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Interpreter/CommandReturnObject.h" 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Target/Process.h" 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Target/StackFrame.h" 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Target/Thread.h" 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerusing namespace lldb; 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerusing namespace lldb_private; 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#pragma mark CommandObjectTargetImageSearchPaths 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass CommandObjectTargetImageSearchPathsAdd : public CommandObject 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 37238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton CommandObjectTargetImageSearchPathsAdd (CommandInterpreter &interpreter) : 38238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton CommandObject (interpreter, 39238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton "target image-search-paths add", 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "Add new image search paths substitution pairs to the current target.", 4143b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice NULL) 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 4343b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice CommandArgumentEntry arg; 4443b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice CommandArgumentData old_prefix_arg; 4543b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice CommandArgumentData new_prefix_arg; 4643b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice 4743b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice // Define the first variant of this arg pair. 4843b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice old_prefix_arg.arg_type = eArgTypeOldPathPrefix; 4943b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice old_prefix_arg.arg_repetition = eArgRepeatPairPlus; 5043b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice 5143b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice // Define the first variant of this arg pair. 5243b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice new_prefix_arg.arg_type = eArgTypeNewPathPrefix; 5343b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice new_prefix_arg.arg_repetition = eArgRepeatPairPlus; 5443b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice 5543b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice // There are two required arguments that must always occur together, i.e. an argument "pair". Because they 5643b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice // must always occur together, they are treated as two variants of one argument rather than two independent 5743b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice // arguments. Push them both into the first argument position for m_arguments... 5843b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice 5943b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice arg.push_back (old_prefix_arg); 6043b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice arg.push_back (new_prefix_arg); 6143b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice 6243b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice m_arguments.push_back (arg); 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~CommandObjectTargetImageSearchPathsAdd () 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 70238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton Execute (Args& command, 7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner CommandReturnObject &result) 7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 73238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton Target *target = m_interpreter.GetDebugger().GetSelectedTarget().get(); 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (target) 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t argc = command.GetArgumentCount(); 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (argc & 1) 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.AppendError ("add requires an even number of arguments"); 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.SetStatus (eReturnStatusFailed); 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner for (uint32_t i=0; i<argc; i+=2) 8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char *from = command.GetArgumentAtIndex(i); 8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char *to = command.GetArgumentAtIndex(i+1); 8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (from[0] && to[0]) 9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool last_pair = ((argc - i) == 2); 9263094e0bb161580564954dee512955c1c79d3476Greg Clayton target->GetImageSearchPathList().Append (ConstString(from), 9363094e0bb161580564954dee512955c1c79d3476Greg Clayton ConstString(to), 9463094e0bb161580564954dee512955c1c79d3476Greg Clayton last_pair); // Notify if this is the last pair 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (from[0]) 9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.AppendError ("<path-prefix> can't be empty"); 10024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 10124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.AppendError ("<new-path-prefix> can't be empty"); 10224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.SetStatus (eReturnStatusFailed); 10324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 10424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 10524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 10624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 10724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 10824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 10924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.AppendError ("invalid target"); 11024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.SetStatus (eReturnStatusFailed); 11124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 11224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return result.Succeeded(); 11324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 11424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass CommandObjectTargetImageSearchPathsClear : public CommandObject 11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 11824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 11924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 120238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton CommandObjectTargetImageSearchPathsClear (CommandInterpreter &interpreter) : 121238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton CommandObject (interpreter, 122238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton "target image-search-paths clear", 123abb507ae79e20ab2dd8365049921df73a24c95a5Caroline Tice "Clear all current image search path substitution pairs from the current target.", 12424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "target image-search-paths clear") 12524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 12624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 12724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 12824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~CommandObjectTargetImageSearchPathsClear () 12924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 13024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 13124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 13224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 133238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton Execute (Args& command, 13424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner CommandReturnObject &result) 13524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 136238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton Target *target = m_interpreter.GetDebugger().GetSelectedTarget().get(); 13724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (target) 13824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 13924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool notify = true; 14024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner target->GetImageSearchPathList().Clear(notify); 14124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 14224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 14324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 14424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.AppendError ("invalid target"); 14524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.SetStatus (eReturnStatusFailed); 14624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 14724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return result.Succeeded(); 14824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 14924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 15024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 15124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass CommandObjectTargetImageSearchPathsInsert : public CommandObject 15224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 15324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 15424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 155238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton CommandObjectTargetImageSearchPathsInsert (CommandInterpreter &interpreter) : 156238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton CommandObject (interpreter, 157238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton "target image-search-paths insert", 158abb507ae79e20ab2dd8365049921df73a24c95a5Caroline Tice "Insert a new image search path substitution pair into the current target at the specified index.", 15943b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice NULL) 16024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 16143b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice CommandArgumentEntry arg1; 16243b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice CommandArgumentEntry arg2; 16343b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice CommandArgumentData index_arg; 16443b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice CommandArgumentData old_prefix_arg; 16543b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice CommandArgumentData new_prefix_arg; 16643b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice 16743b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice // Define the first and only variant of this arg. 16843b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice index_arg.arg_type = eArgTypeIndex; 16943b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice index_arg.arg_repetition = eArgRepeatPlain; 17043b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice 17143b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice // Put the one and only variant into the first arg for m_arguments: 17243b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice arg1.push_back (index_arg); 17343b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice 17443b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice // Define the first variant of this arg pair. 17543b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice old_prefix_arg.arg_type = eArgTypeOldPathPrefix; 17643b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice old_prefix_arg.arg_repetition = eArgRepeatPairPlus; 17743b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice 17843b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice // Define the first variant of this arg pair. 17943b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice new_prefix_arg.arg_type = eArgTypeNewPathPrefix; 18043b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice new_prefix_arg.arg_repetition = eArgRepeatPairPlus; 18143b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice 18243b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice // There are two required arguments that must always occur together, i.e. an argument "pair". Because they 18343b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice // must always occur together, they are treated as two variants of one argument rather than two independent 18443b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice // arguments. Push them both into the same argument position for m_arguments... 18543b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice 18643b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice arg2.push_back (old_prefix_arg); 18743b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice arg2.push_back (new_prefix_arg); 18843b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice 18943b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice // Add arguments to m_arguments. 19043b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice m_arguments.push_back (arg1); 19143b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice m_arguments.push_back (arg2); 19224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 19324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 19424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~CommandObjectTargetImageSearchPathsInsert () 19524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 19624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 19724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 19824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 199238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton Execute (Args& command, 20024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner CommandReturnObject &result) 20124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 202238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton Target *target = m_interpreter.GetDebugger().GetSelectedTarget().get(); 20324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (target) 20424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 20524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t argc = command.GetArgumentCount(); 20624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // check for at least 3 arguments and an odd nubmer of parameters 20724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (argc >= 3 && argc & 1) 20824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 20924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool success = false; 21024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 21124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t insert_idx = Args::StringToUInt32(command.GetArgumentAtIndex(0), UINT32_MAX, 0, &success); 21224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 21324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (!success) 21424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 21524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.AppendErrorWithFormat("<index> parameter is not an integer: '%s'.\n", command.GetArgumentAtIndex(0)); 21624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.SetStatus (eReturnStatusFailed); 21724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return result.Succeeded(); 21824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 21924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 22024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // shift off the index 22124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner command.Shift(); 22224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner argc = command.GetArgumentCount(); 22324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 22424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner for (uint32_t i=0; i<argc; i+=2, ++insert_idx) 22524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 22624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char *from = command.GetArgumentAtIndex(i); 22724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char *to = command.GetArgumentAtIndex(i+1); 22824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 22924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (from[0] && to[0]) 23024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 23124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool last_pair = ((argc - i) == 2); 23224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner target->GetImageSearchPathList().Insert (ConstString(from), 23324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ConstString(to), 23424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner insert_idx, 23524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner last_pair); 23624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 23724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 23824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 23924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (from[0]) 24024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.AppendError ("<path-prefix> can't be empty"); 24124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 24224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.AppendError ("<new-path-prefix> can't be empty"); 24324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.SetStatus (eReturnStatusFailed); 24424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return false; 24524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 24624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 24724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 24824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 24924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 25024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.AppendError ("insert requires at least three arguments"); 25124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.SetStatus (eReturnStatusFailed); 25224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return result.Succeeded(); 25324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 25424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 25524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 25624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 25724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 25824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.AppendError ("invalid target"); 25924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.SetStatus (eReturnStatusFailed); 26024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 26124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return result.Succeeded(); 26224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 26324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 26424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 26524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass CommandObjectTargetImageSearchPathsList : public CommandObject 26624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 26724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 26824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 269238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton CommandObjectTargetImageSearchPathsList (CommandInterpreter &interpreter) : 270238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton CommandObject (interpreter, 271238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton "target image-search-paths list", 272abb507ae79e20ab2dd8365049921df73a24c95a5Caroline Tice "List all current image search path substitution pairs in the current target.", 27324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "target image-search-paths list") 27424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 27524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 27624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 27724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~CommandObjectTargetImageSearchPathsList () 27824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 27924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 28024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 28124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 282238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton Execute (Args& command, 28324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner CommandReturnObject &result) 28424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 285238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton Target *target = m_interpreter.GetDebugger().GetSelectedTarget().get(); 28624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (target) 28724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 28824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (command.GetArgumentCount() != 0) 28924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 29024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.AppendError ("list takes no arguments"); 29124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.SetStatus (eReturnStatusFailed); 29224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return result.Succeeded(); 29324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 29424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 29524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner target->GetImageSearchPathList().Dump(&result.GetOutputStream()); 29624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 29724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 29824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 29924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.AppendError ("invalid target"); 30024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.SetStatus (eReturnStatusFailed); 30124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 30224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return result.Succeeded(); 30324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 30424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 30524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 30624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass CommandObjectTargetImageSearchPathsQuery : public CommandObject 30724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 30824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 30924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 310238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton CommandObjectTargetImageSearchPathsQuery (CommandInterpreter &interpreter) : 311238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton CommandObject (interpreter, 312238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton "target image-search-paths query", 313abb507ae79e20ab2dd8365049921df73a24c95a5Caroline Tice "Transform a path using the first applicable image search path.", 31443b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice NULL) 31524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 31643b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice CommandArgumentEntry arg; 31743b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice CommandArgumentData path_arg; 31843b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice 31943b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice // Define the first (and only) variant of this arg. 32043b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice path_arg.arg_type = eArgTypePath; 32143b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice path_arg.arg_repetition = eArgRepeatPlain; 32243b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice 32343b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice // There is only one variant this argument could be; put it into the argument entry. 32443b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice arg.push_back (path_arg); 32543b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice 32643b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice // Push the data for the first argument into the m_arguments vector. 32743b014aa33e20e61790e16ed69a2c57aae2fbc6eCaroline Tice m_arguments.push_back (arg); 32824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 32924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 33024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~CommandObjectTargetImageSearchPathsQuery () 33124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 33224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 33324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 33424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 335238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton Execute (Args& command, 33624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner CommandReturnObject &result) 33724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 338238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton Target *target = m_interpreter.GetDebugger().GetSelectedTarget().get(); 33924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (target) 34024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 34124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (command.GetArgumentCount() != 1) 34224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 34324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.AppendError ("query requires one argument"); 34424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.SetStatus (eReturnStatusFailed); 34524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return result.Succeeded(); 34624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 34724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 34824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ConstString orig(command.GetArgumentAtIndex(0)); 34924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ConstString transformed; 35024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (target->GetImageSearchPathList().RemapPath(orig, transformed)) 35124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.GetOutputStream().Printf("%s\n", transformed.GetCString()); 35224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 35324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.GetOutputStream().Printf("%s\n", orig.GetCString()); 35424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 35524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 35624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 35724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.AppendError ("invalid target"); 35824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner result.SetStatus (eReturnStatusFailed); 35924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 36024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return result.Succeeded(); 36124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 36224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 36324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 36424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// TODO: implement the target select later when we start doing multiple targets 36524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//#pragma mark CommandObjectTargetSelect 36624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 36724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner////------------------------------------------------------------------------- 36824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//// CommandObjectTargetSelect 36924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner////------------------------------------------------------------------------- 37024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 37124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//class CommandObjectTargetSelect : public CommandObject 37224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//{ 37324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//public: 37424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 37524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// CommandObjectTargetSelect () : 376238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton// CommandObject (interpreter, 377238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton// frame select", 37824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// "Select the current frame by index in the current thread.", 37924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// "frame select <frame-index>") 38024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// { 38124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// } 38224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 38324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// ~CommandObjectTargetSelect () 38424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// { 38524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// } 38624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 38724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// bool 38824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Execute (Args& command, 38963094e0bb161580564954dee512955c1c79d3476Greg Clayton// Debugger *context, 390238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton// CommandInterpreter &m_interpreter, 39124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// CommandReturnObject &result) 39224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// { 39324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// ExecutionContext exe_ctx (context->GetExecutionContext()); 39424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// if (exe_ctx.thread) 39524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// { 39624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// if (command.GetArgumentCount() == 1) 39724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// { 39824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// const char *frame_idx_cstr = command.GetArgumentAtIndex(0); 39924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 40024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// const uint32_t num_frames = exe_ctx.thread->GetStackFrameCount(); 40124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// const uint32_t frame_idx = Args::StringToUInt32 (frame_idx_cstr, UINT32_MAX, 0); 40224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// if (frame_idx < num_frames) 40324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// { 404c833295baeec641086f536e78050388af36784f8Jim Ingham// exe_ctx.thread->SetSelectedFrameByIndex (frame_idx); 405c833295baeec641086f536e78050388af36784f8Jim Ingham// exe_ctx.frame = exe_ctx.thread->GetSelectedFrame ().get(); 40624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 40724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// if (exe_ctx.frame) 40824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// { 40924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// if (DisplayFrameForExecutionContext (exe_ctx.thread, 41024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// exe_ctx.frame, 411238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton// m_interpreter, 41224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// result.GetOutputStream(), 41324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// true, 41424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// true, 41524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 3, 41624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 3)) 41724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// { 41824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// result.SetStatus (eReturnStatusSuccessFinishResult); 41924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// return result.Succeeded(); 42024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// } 42124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// } 42224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// } 42324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// if (frame_idx == UINT32_MAX) 42424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// result.AppendErrorWithFormat ("Invalid frame index: %s.\n", frame_idx_cstr); 42524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// else 42624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// result.AppendErrorWithFormat ("Frame index (%u) out of range.\n", frame_idx); 42724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// } 42824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// else 42924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// { 43024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// result.AppendError ("invalid arguments"); 43124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// result.AppendErrorWithFormat ("Usage: %s\n", m_cmd_syntax.c_str()); 43224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// } 43324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// } 43424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// else 43524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// { 43624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// result.AppendError ("no current thread"); 43724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// } 43824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// result.SetStatus (eReturnStatusFailed); 43924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// return false; 44024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// } 44124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//}; 44224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 44324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 44424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#pragma mark CommandObjectMultiwordTarget 44524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 44624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//------------------------------------------------------------------------- 44724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// CommandObjectMultiwordImageSearchPaths 44824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//------------------------------------------------------------------------- 44924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 45024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass CommandObjectMultiwordImageSearchPaths : public CommandObjectMultiword 45124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 45224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 45324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 45463094e0bb161580564954dee512955c1c79d3476Greg Clayton CommandObjectMultiwordImageSearchPaths (CommandInterpreter &interpreter) : 455238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton CommandObjectMultiword (interpreter, 456238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton "target image-search-paths", 45724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "A set of commands for operating on debugger target image search paths.", 45824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "target image-search-paths <subcommand> [<subcommand-options>]") 45924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 460238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton LoadSubCommand ("add", CommandObjectSP (new CommandObjectTargetImageSearchPathsAdd (interpreter))); 461238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton LoadSubCommand ("clear", CommandObjectSP (new CommandObjectTargetImageSearchPathsClear (interpreter))); 462238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton LoadSubCommand ("insert", CommandObjectSP (new CommandObjectTargetImageSearchPathsInsert (interpreter))); 463238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton LoadSubCommand ("list", CommandObjectSP (new CommandObjectTargetImageSearchPathsList (interpreter))); 464238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton LoadSubCommand ("query", CommandObjectSP (new CommandObjectTargetImageSearchPathsQuery (interpreter))); 46524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 46624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 46724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~CommandObjectMultiwordImageSearchPaths() 46824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 46924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 47024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 47124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 47224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 47324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#pragma mark CommandObjectMultiwordTarget 47424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 47524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//------------------------------------------------------------------------- 47624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// CommandObjectMultiwordTarget 47724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//------------------------------------------------------------------------- 47824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 47963094e0bb161580564954dee512955c1c79d3476Greg ClaytonCommandObjectMultiwordTarget::CommandObjectMultiwordTarget (CommandInterpreter &interpreter) : 480238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton CommandObjectMultiword (interpreter, 481238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton "target", 48224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "A set of commands for operating on debugger targets.", 48324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner "target <subcommand> [<subcommand-options>]") 48424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 485238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton LoadSubCommand ("image-search-paths", CommandObjectSP (new CommandObjectMultiwordImageSearchPaths (interpreter))); 48624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 48724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 48824943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerCommandObjectMultiwordTarget::~CommandObjectMultiwordTarget () 48924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 49024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 49124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 492