diff options
author | Enrico Granata <egranata@apple.com> | 2013-02-21 23:57:25 +0000 |
---|---|---|
committer | Enrico Granata <egranata@apple.com> | 2013-02-21 23:57:25 +0000 |
commit | d2f16e2c2dfb8a5b46c8e7222eb75d16c7453eb5 (patch) | |
tree | f6464f6aebb6eee53c399462e0911b78af0c234a /lldb/source/Interpreter/CommandInterpreter.cpp | |
parent | fe03e40d837ed2291de7f667d760709358f50c1f (diff) | |
download | bcm5719-llvm-d2f16e2c2dfb8a5b46c8e7222eb75d16c7453eb5.tar.gz bcm5719-llvm-d2f16e2c2dfb8a5b46c8e7222eb75d16c7453eb5.zip |
<rdar://problem/13265017>
The notion of Crossref command has long been forgotten, and there is nothing using CommandObjectCrossref in the current LLDB codebase
However, this was causing a conflict with process plugins and command aliases ending up in an infinite loop under situations such as:
(lldb) command alias monitor process plugin packet monitor
(lldb) process att -n Calendar
Process 28709 stopped
Executable module set to "/Applications/Calendar.app/Contents/MacOS/Calendar".
Architecture set to: x86_64-apple-macosx.
(lldb) command alias monitor process plugin packet monitor
This fixes the loop (and consequent crash) by disposing of Crossref commands and related code
llvm-svn: 175831
Diffstat (limited to 'lldb/source/Interpreter/CommandInterpreter.cpp')
-rw-r--r-- | lldb/source/Interpreter/CommandInterpreter.cpp | 33 |
1 files changed, 0 insertions, 33 deletions
diff --git a/lldb/source/Interpreter/CommandInterpreter.cpp b/lldb/source/Interpreter/CommandInterpreter.cpp index 89ed5641acf..b28ed64b252 100644 --- a/lldb/source/Interpreter/CommandInterpreter.cpp +++ b/lldb/source/Interpreter/CommandInterpreter.cpp @@ -355,34 +355,15 @@ CommandInterpreter::LoadCommandDictionary () { Timer scoped_timer (__PRETTY_FUNCTION__, __PRETTY_FUNCTION__); - // **** IMPORTANT **** IMPORTANT *** IMPORTANT *** **** IMPORTANT **** IMPORTANT *** IMPORTANT *** - // - // Command objects that are used as cross reference objects (i.e. they inherit from CommandObjectCrossref) - // *MUST* be created and put into the command dictionary *BEFORE* any multi-word commands (which may use - // the cross-referencing stuff) are created!!! - // - // **** IMPORTANT **** IMPORTANT *** IMPORTANT *** **** IMPORTANT **** IMPORTANT *** IMPORTANT *** - - - // Command objects that inherit from CommandObjectCrossref must be created before other command objects - // are created. This is so that when another command is created that needs to go into a crossref object, - // the crossref object exists and is ready to take the cross reference. Put the cross referencing command - // objects into the CommandDictionary now, so they are ready for use when the other commands get created. - - // Non-CommandObjectCrossref commands can now be created. - lldb::ScriptLanguage script_language = m_debugger.GetScriptLanguage(); m_command_dict["apropos"] = CommandObjectSP (new CommandObjectApropos (*this)); m_command_dict["breakpoint"]= CommandObjectSP (new CommandObjectMultiwordBreakpoint (*this)); - //m_command_dict["call"] = CommandObjectSP (new CommandObjectCall (*this)); m_command_dict["command"] = 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["frame"] = CommandObjectSP (new CommandObjectMultiwordFrame (*this)); m_command_dict["help"] = CommandObjectSP (new CommandObjectHelp (*this)); - /// m_command_dict["image"] = CommandObjectSP (new CommandObjectImage (*this)); m_command_dict["log"] = CommandObjectSP (new CommandObjectLog (*this)); m_command_dict["memory"] = CommandObjectSP (new CommandObjectMemory (*this)); m_command_dict["platform"] = CommandObjectSP (new CommandObjectPlatform (*this)); @@ -2139,20 +2120,6 @@ CommandInterpreter::Confirm (const char *message, bool default_answer) return response; } - -void -CommandInterpreter::CrossRegisterCommand (const char * dest_cmd, const char * object_type) -{ - CommandObjectSP cmd_obj_sp = GetCommandSPExact (dest_cmd, true); - - if (cmd_obj_sp) - { - CommandObject *cmd_obj = cmd_obj_sp.get(); - if (cmd_obj->IsCrossRefObject ()) - cmd_obj->AddObject (object_type); - } -} - OptionArgVectorSP CommandInterpreter::GetAliasOptions (const char *alias_name) { |