Spoke too quickly. Support -list-features and -info-gdb-mi-commands are implemented.
-----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Paul Maybee Sent: Thursday, March 12, 2015 12:41 PM To: [email protected]; Hafiz Abid Qadeer Cc: [email protected] Subject: Re: [Lldb-commits] [lldb] r232077 - Add -p and -r options to lldb-mi command -file-exec-file-and-symbols to support iOS debugging on macOS. There is capabilities support spec'ed: https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Support-Commands.html#GDB_002fMI-Support-Commands It's not implemented in the lldb-mi. Be nice to have though. -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of [email protected] Sent: Thursday, March 12, 2015 12:11 PM To: Hafiz Abid Qadeer Cc: [email protected] Subject: Re: [Lldb-commits] [lldb] r232077 - Add -p and -r options to lldb-mi command -file-exec-file-and-symbols to support iOS debugging on macOS. Now that we have "non-standard" commands - can we add another extension command to the MI that says "I am an LLDB MI" so that a client could do reasonable things depending on who it is talking to? It's been years since I worked on the gdb MI, but I don't remember it having any kind of "capabilities" command. Still, might be a good thing to add. Jim > On Mar 12, 2015, at 11:35 AM, Hafiz Abid Qadeer <[email protected]> wrote: > > Author: abidh > Date: Thu Mar 12 13:35:54 2015 > New Revision: 232077 > > URL: http://llvm.org/viewvc/llvm-project?rev=232077&view=rev > Log: > Add -p and -r options to lldb-mi command -file-exec-file-and-symbols to > support iOS debugging on macOS. > > The patch adds 2 options which are not present in the GDB MI. Those have been > described in MIExtensions.txt. > > Patch from Chuck Ries. > > > Added: > lldb/trunk/tools/lldb-mi/MIExtensions.txt > Modified: > lldb/trunk/tools/lldb-mi/MICmdCmdFile.cpp > lldb/trunk/tools/lldb-mi/MICmdCmdFile.h > > Modified: lldb/trunk/tools/lldb-mi/MICmdCmdFile.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-mi/MICmdCmdF > ile.cpp?rev=232077&r1=232076&r2=232077&view=diff > ====================================================================== > ======== > --- lldb/trunk/tools/lldb-mi/MICmdCmdFile.cpp (original) > +++ lldb/trunk/tools/lldb-mi/MICmdCmdFile.cpp Thu Mar 12 13:35:54 2015 > @@ -29,7 +29,9 @@ > #include "MICmnLLDBDebugSessionInfo.h" > #include "MIUtilFileStd.h" > #include "MICmdArgValFile.h" > +#include "MICmdArgValString.h" > #include "MICmdArgValOptionLong.h" > +#include "MICmdArgValOptionShort.h" > > //++ > ---------------------------------------------------------------------- > -------------- // Details: CMICmdCmdFileExecAndSymbols constructor. > @@ -41,6 +43,8 @@ > CMICmdCmdFileExecAndSymbols::CMICmdCmdFileExecAndSymbols(void) > : m_constStrArgNameFile("file") > , m_constStrArgThreadGrp("thread-group") > + , m_constStrArgNamedPlatformName("p") > + , m_constStrArgNamedRemotePath("r") > { > // Command factory matches this name with that received from the stdin > stream > m_strMiCmd = "file-exec-and-symbols"; @@ -75,6 +79,12 @@ > CMICmdCmdFileExecAndSymbols::ParseArgs(v > bool bOk = m_setCmdArgs.Add( > *(new CMICmdArgValOptionLong(m_constStrArgThreadGrp, false, false, > CMICmdArgValListBase::eArgValType_ThreadGrp, 1))); > bOk = bOk && m_setCmdArgs.Add(*(new > CMICmdArgValFile(m_constStrArgNameFile, true, true))); > + bOk = bOk && > + m_setCmdArgs.Add(*(new > CMICmdArgValOptionShort(m_constStrArgNamedPlatformName, false, true, > + > CMICmdArgValListBase::eArgValType_String, 1))); > + bOk = bOk && > + m_setCmdArgs.Add(*(new > + CMICmdArgValOptionShort(m_constStrArgNamedRemotePath, false, true, > + > + CMICmdArgValListBase::eArgValType_StringQuotedNumberPath, 1))); > return (bOk && ParseValidateCmdOptions()); } > > @@ -93,13 +103,21 @@ bool > CMICmdCmdFileExecAndSymbols::Execute(void) > { > CMICMDBASE_GETOPTION(pArgNamedFile, File, m_constStrArgNameFile); > + CMICMDBASE_GETOPTION(pArgPlatformName, OptionShort, > m_constStrArgNamedPlatformName); > + CMICMDBASE_GETOPTION(pArgRemotePath, OptionShort, > + m_constStrArgNamedRemotePath); > CMICmdArgValFile *pArgFile = static_cast<CMICmdArgValFile > *>(pArgNamedFile); > const CMIUtilString &strExeFilePath(pArgFile->GetValue()); > + bool bPlatformName = pArgPlatformName->GetFound(); > + CMIUtilString platformName; > + if (bPlatformName) > + { > + pArgPlatformName->GetExpectedOption<CMICmdArgValString, > CMIUtilString>(platformName); > + } > CMICmnLLDBDebugSessionInfo > &rSessionInfo(CMICmnLLDBDebugSessionInfo::Instance()); > lldb::SBDebugger &rDbgr = rSessionInfo.GetDebugger(); > lldb::SBError error; > const MIchar *pTargetTriple = nullptr; // Let LLDB discover the triple > required > - const MIchar *pTargetPlatformName = ""; > + const MIchar *pTargetPlatformName = platformName.c_str(); > const bool bAddDepModules = false; > lldb::SBTarget target = rDbgr.CreateTarget(strExeFilePath.c_str(), > pTargetTriple, pTargetPlatformName, bAddDepModules, error); > CMIUtilString strWkDir; > @@ -119,6 +137,16 @@ CMICmdCmdFileExecAndSymbols::Execute(voi > SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_FNFAILED), > m_cmdData.strMiCmd.c_str(), "SetCurrentPlatformSDKRoot()")); > return MIstatus::failure; > } > + if (pArgRemotePath->GetFound()) > + { > + CMIUtilString remotePath; > + pArgRemotePath->GetExpectedOption<CMICmdArgValString, > CMIUtilString>(remotePath); > + lldb::SBModule module = target.FindModule(target.GetExecutable()); > + if (module.IsValid()) > + { > + module.SetPlatformFileSpec(lldb::SBFileSpec(remotePath.c_str())); > + } > + } > lldb::SBStream err; > if (error.Fail()) > { > > Modified: lldb/trunk/tools/lldb-mi/MICmdCmdFile.h > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-mi/MICmdCmdF > ile.h?rev=232077&r1=232076&r2=232077&view=diff > ====================================================================== > ======== > --- lldb/trunk/tools/lldb-mi/MICmdCmdFile.h (original) > +++ lldb/trunk/tools/lldb-mi/MICmdCmdFile.h Thu Mar 12 13:35:54 2015 > @@ -39,7 +39,8 @@ > // Details: MI command class. MI commands derived from the command base class. > // *this class implements MI command "file-exec-and-symbols". > // This command does not follow the MI documentation exactly. > -// Gotchas: None. > +// Gotchas: This command has additonal flags that were not available in GDB > MI. > +// See MIextensions.txt for details. > // Authors: Illya Rudkin 25/02/2014. > // Changes: None. > //-- > @@ -69,4 +70,6 @@ class CMICmdCmdFileExecAndSymbols : publ > const CMIUtilString m_constStrArgNameFile; > const CMIUtilString > m_constStrArgThreadGrp; // Not handled by *this command. Not > specified in MI spec but Eclipse gives this option sometimes > + const CMIUtilString m_constStrArgNamedPlatformName; // Added to support > iOS platform selection > + const CMIUtilString m_constStrArgNamedRemotePath; // Added to > + support iOS device remote file location > }; > > Added: lldb/trunk/tools/lldb-mi/MIExtensions.txt > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-mi/MIExtensi > ons.txt?rev=232077&view=auto > ====================================================================== > ======== > --- lldb/trunk/tools/lldb-mi/MIExtensions.txt (added) > +++ lldb/trunk/tools/lldb-mi/MIExtensions.txt Thu Mar 12 13:35:54 2015 > @@ -0,0 +1,10 @@ > +-file-exec-and-symbols now takes two new (optional) options: > + > +Synopsis > + > + -file-exec-and-symbols <file> [-p <platform>] [-r <remote-file>] > + > +Specify the executable file to be debugged. This file is the one from which > the symbol table is also read. > +When debugging remote targets specify a remote-file for execution and a file > from which symbols are read. > +The optional platform is the name of the platform, e.g., "remote-ios" > +or "ios-simulator". The remote-file is the on-device path to the exe. > > > _______________________________________________ > lldb-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits _______________________________________________ lldb-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits _______________________________________________ lldb-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits _______________________________________________ lldb-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
