Skip to content

Commit

Permalink
Refactor lldb-mi's prompt
Browse files Browse the repository at this point in the history
Summary:
This patch fixes/cleans code around of (gdb) prompt:
# Add CMICmnStreamStdout::WritePrompt
# Clean up CMICmnStreamStdout::TextToStdout (don't lock
  the m_mutex twice because it will be locked in CMICmnStreamStdout::WritePriv)
# Remove unused CMICmnStreamStdin::m_bShowPrompt field
# Refactor CMICmnLLDBDebuggerHandleEvents to use CMICmnStreamStdout::WritePrompt
  instead of TextToStdout("(gdb)")
# Refactor CMIDriver to use CMICmnStreamStdout::WritePrompt instead of
  ```
    if (bOk && m_rStdin.GetEnablePrompt())
        bOk = m_rStdOut.WriteMIResponse(m_rStdin.GetPrompt());
  ```

Test Plan: ./dotest.py -v --executable $BUILDDIR/bin/lldb tools/lldb-mi/

Reviewers: abidh

Reviewed By: abidh

Subscribers: lldb-commits, abidh

Differential Revision: http://reviews.llvm.org/D9737

llvm-svn: 237248
  • Loading branch information
k15tfu committed May 13, 2015
1 parent b526681 commit 0e919bc
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 23 deletions.
20 changes: 10 additions & 10 deletions lldb/tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp
Expand Up @@ -1022,7 +1022,7 @@ CMICmnLLDBDebuggerHandleEvents::HandleProcessEventStopSignal(bool &vwrbShouldBrk
const CMICmnMIValueResult miValueResult7("stopped-threads", miValueConst7);
bOk = bOk && miOutOfBandRecord.Add(miValueResult7);
bOk = bOk && MiOutOfBandRecordToStdout(miOutOfBandRecord);
bOk = bOk && TextToStdout("(gdb)");
bOk = bOk && CMICmnStreamStdout::WritePrompt();
}
else if (nStopReason == m_SIGSEGV)
{
Expand Down Expand Up @@ -1090,7 +1090,7 @@ CMICmnLLDBDebuggerHandleEvents::HandleProcessEventStopSignal(bool &vwrbShouldBrk
const CMICmnMIValueResult miValueResult4("stopped-threads", miValueConst4);
bOk = bOk && miOutOfBandRecord.Add(miValueResult4);
bOk = bOk && MiOutOfBandRecordToStdout(miOutOfBandRecord);
bOk = bOk && TextToStdout("(gdb)");
bOk = bOk && CMICmnStreamStdout::WritePrompt();
}
return bOk;
}
Expand Down Expand Up @@ -1128,7 +1128,7 @@ CMICmnLLDBDebuggerHandleEvents::HandleProcessEventStopException(void)
const CMICmnMIValueResult miValueResult4("stopped-threads", miValueConst4);
bOk = bOk && miOutOfBandRecord.Add(miValueResult4);
bOk = bOk && MiOutOfBandRecordToStdout(miOutOfBandRecord);
bOk = bOk && TextToStdout("(gdb)");
bOk = bOk && CMICmnStreamStdout::WritePrompt();

return bOk;
}
Expand Down Expand Up @@ -1248,7 +1248,7 @@ CMICmnLLDBDebuggerHandleEvents::MiStoppedAtBreakPoint(const MIuint64 vBrkPtId, c
const CMICmnMIValueResult miValueResult6("stopped-threads", miValueConst6);
bOk = bOk && miOutOfBandRecord.Add(miValueResult6);
bOk = bOk && MiOutOfBandRecordToStdout(miOutOfBandRecord);
bOk = bOk && TextToStdout("(gdb)");
bOk = bOk && CMICmnStreamStdout::WritePrompt();
return bOk;
}

Expand Down Expand Up @@ -1290,7 +1290,7 @@ CMICmnLLDBDebuggerHandleEvents::MiStoppedAtBreakPoint(const MIuint64 vBrkPtId, c
const CMICmnMIValueResult miValueResult9("stopped-threads", miValueConst9);
bOk = miOutOfBandRecord.Add(miValueResult9);
bOk = MiOutOfBandRecordToStdout(miOutOfBandRecord);
bOk = bOk && TextToStdout("(gdb)");
bOk = bOk && CMICmnStreamStdout::WritePrompt();
}

return MIstatus::success;
Expand Down Expand Up @@ -1321,7 +1321,7 @@ CMICmnLLDBDebuggerHandleEvents::HandleProcessEventStopReasonTrace(void)
const CMICmnMIValueResult miValueResult2("stopped-threads", miValueConst2);
bOk = miOutOfBandRecord.Add(miValueResult2);
bOk = MiOutOfBandRecordToStdout(miOutOfBandRecord);
bOk = bOk && TextToStdout("(gdb)");
bOk = bOk && CMICmnStreamStdout::WritePrompt();
return bOk;
}

Expand Down Expand Up @@ -1355,7 +1355,7 @@ CMICmnLLDBDebuggerHandleEvents::HandleProcessEventStopReasonTrace(void)
const CMICmnMIValueResult miValueResult9("stopped-threads", miValueConst9);
bOk = miOutOfBandRecord.Add(miValueResult9);
bOk = MiOutOfBandRecordToStdout(miOutOfBandRecord);
bOk = bOk && TextToStdout("(gdb)");
bOk = bOk && CMICmnStreamStdout::WritePrompt();
}

return bOk;
Expand Down Expand Up @@ -1447,7 +1447,7 @@ CMICmnLLDBDebuggerHandleEvents::HandleProcessEventStateRunning(void)
CMICmnMIValueResult miValueResult("thread-id", miValueConst);
CMICmnMIOutOfBandRecord miOutOfBandRecord(CMICmnMIOutOfBandRecord::eOutOfBand_Running, miValueResult);
bool bOk = MiOutOfBandRecordToStdout(miOutOfBandRecord);
bOk = bOk && TextToStdout("(gdb)");
bOk = bOk && CMICmnStreamStdout::WritePrompt();

return bOk;
}
Expand Down Expand Up @@ -1491,7 +1491,7 @@ CMICmnLLDBDebuggerHandleEvents::HandleProcessEventStateExited(void)
CMICmnMIOutOfBandRecord miOutOfBandRecord3(CMICmnMIOutOfBandRecord::eOutOfBand_Stopped, miValueResult4);
bOk = MiOutOfBandRecordToStdout(miOutOfBandRecord3);
}
bOk = bOk && TextToStdout("(gdb)");
bOk = bOk && CMICmnStreamStdout::WritePrompt();

return bOk;
}
Expand Down Expand Up @@ -1693,7 +1693,7 @@ CMICmnLLDBDebuggerHandleEvents::ChkForStateChanges(void)
++it;
}

return TextToStdout("(gdb)");
return CMICmnStreamStdout::WritePrompt();
}

//++ ------------------------------------------------------------------------------------
Expand Down
1 change: 0 additions & 1 deletion lldb/tools/lldb-mi/MICmnStreamStdin.cpp
Expand Up @@ -31,7 +31,6 @@
CMICmnStreamStdin::CMICmnStreamStdin(void)
: m_strPromptCurrent("(gdb)")
, m_bShowPrompt(true)
, m_bRedrawPrompt(true)
, m_pCmdBuffer(nullptr)
{
}
Expand Down
1 change: 0 additions & 1 deletion lldb/tools/lldb-mi/MICmnStreamStdin.h
Expand Up @@ -56,7 +56,6 @@ class CMICmnStreamStdin : public CMICmnBase, public MI::ISingleton<CMICmnStreamS
private:
CMIUtilString m_strPromptCurrent; // Command line prompt as shown to the user
bool m_bShowPrompt; // True = Yes prompt is shown/output to the user (stdout), false = no prompt
bool m_bRedrawPrompt; // True = Prompt needs to be redrawn
static const int m_constBufferSize = 2048;
MIchar *m_pCmdBuffer;
};
22 changes: 18 additions & 4 deletions lldb/tools/lldb-mi/MICmnStreamStdout.cpp
Expand Up @@ -216,9 +216,23 @@ CMICmnStreamStdout::Unlock(void)
bool
CMICmnStreamStdout::TextToStdout(const CMIUtilString &vrTxt)
{
const bool bLock = CMICmnStreamStdout::Instance().Lock();
const bool bOk = bLock && CMICmnStreamStdout::Instance().WriteMIResponse(vrTxt);
bLock &&CMICmnStreamStdout::Instance().Unlock();
const bool bSendToLog = true;
return CMICmnStreamStdout::Instance().WriteMIResponse(vrTxt, bSendToLog);
}

return bOk;
//++ ------------------------------------------------------------------------------------
// Details: Write prompt to stdout if it's enabled.
// Type: Static method.
// Args: None.
// Return: MIstatus::success - Function succeeded.
// MIstatus::failure - Function failed.
// Throws: None.
//--
bool
CMICmnStreamStdout::WritePrompt(void)
{
const CMICmnStreamStdin &rStdinMan = CMICmnStreamStdin::Instance();
if (rStdinMan.GetEnablePrompt())
return TextToStdout(rStdinMan.GetPrompt());
return MIstatus::success;
}
1 change: 1 addition & 0 deletions lldb/tools/lldb-mi/MICmnStreamStdout.h
Expand Up @@ -31,6 +31,7 @@ class CMICmnStreamStdout : public CMICmnBase, public MI::ISingleton<CMICmnStream
// Statics:
public:
static bool TextToStdout(const CMIUtilString &vrTxt);
static bool WritePrompt(void);

// Methods:
public:
Expand Down
11 changes: 4 additions & 7 deletions lldb/tools/lldb-mi/MIDriver.cpp
Expand Up @@ -576,8 +576,7 @@ CMIDriver::DoMainLoop(void)
}

// Draw prompt if desired
if (bOk && m_rStdin.GetEnablePrompt())
bOk = m_rStdOut.WriteMIResponse(m_rStdin.GetPrompt());
bOk = bOk && CMICmnStreamStdout::WritePrompt();

// Wait while the handler thread handles incoming events
CMICmnLLDBDebugger::Instance().WaitForHandleEvent();
Expand Down Expand Up @@ -1173,7 +1172,7 @@ CMIDriver::InitClientIDEToMIDriver(void) const
bool
CMIDriver::InitClientIDEEclipse(void) const
{
return CMICmnStreamStdout::TextToStdout("(gdb)");
return CMICmnStreamStdout::WritePrompt();
}

//++ ------------------------------------------------------------------------------------
Expand Down Expand Up @@ -1223,8 +1222,7 @@ CMIDriver::LocalDebugSessionStartupExecuteCommands(void)
const CMIUtilString strCmd(CMIUtilString::Format("-file-exec-and-symbols \"%s\"", m_strCmdLineArgExecuteableFileNamePath.AddSlashes().c_str()));
bool bOk = CMICmnStreamStdout::TextToStdout(strCmd);
bOk = bOk && InterpretCommand(strCmd);
if (bOk && m_rStdin.GetEnablePrompt())
bOk = m_rStdOut.WriteMIResponse(m_rStdin.GetPrompt());
bOk = bOk && CMICmnStreamStdout::WritePrompt();
return bOk;
}

Expand Down Expand Up @@ -1304,8 +1302,7 @@ CMIDriver::ExecuteCommandFile(const bool vbAsyncMode)
}

// Draw the prompt after command will be executed (if enabled)
if (bOk && m_rStdin.GetEnablePrompt())
bOk = m_rStdOut.WriteMIResponse(m_rStdin.GetPrompt());
bOk = bOk && CMICmnStreamStdout::WritePrompt();

// Exit if there is an error
if (!bOk)
Expand Down

0 comments on commit 0e919bc

Please sign in to comment.