summaryrefslogtreecommitdiffstats
path: root/lldb/tools/lldb-mi
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2018-05-24 16:45:59 +0000
committerAdrian Prantl <aprantl@apple.com>2018-05-24 16:45:59 +0000
commit512ccd7e6fbfbfb774ecd42902a4634b5e750f35 (patch)
tree5516602c501779b0f9dad3d8ecf5118fecda8969 /lldb/tools/lldb-mi
parente790f6fb06810acdd0b078d11617900026eab622 (diff)
downloadbcm5719-llvm-512ccd7e6fbfbfb774ecd42902a4634b5e750f35.tar.gz
bcm5719-llvm-512ccd7e6fbfbfb774ecd42902a4634b5e750f35.zip
[lldb-mi] Add possibility to set breakpoints without selecting a target.
Now it's possible to set breakpoints before selecting a target, they will be set to the dummy target and then copied to an each added one. Patch by Alexander Polyakov! Differential Revision: https://reviews.llvm.org/D46588 llvm-svn: 333205
Diffstat (limited to 'lldb/tools/lldb-mi')
-rw-r--r--lldb/tools/lldb-mi/MICmdCmdBreak.cpp15
-rw-r--r--lldb/tools/lldb-mi/MICmnLLDBDebugSessionInfo.cpp5
2 files changed, 15 insertions, 5 deletions
diff --git a/lldb/tools/lldb-mi/MICmdCmdBreak.cpp b/lldb/tools/lldb-mi/MICmdCmdBreak.cpp
index 020ac982d11..caad9192366 100644
--- a/lldb/tools/lldb-mi/MICmdCmdBreak.cpp
+++ b/lldb/tools/lldb-mi/MICmdCmdBreak.cpp
@@ -148,6 +148,11 @@ bool CMICmdCmdBreakInsert::Execute() {
CMICMDBASE_GETOPTION(pArgRestrictBrkPtToThreadId, OptionShort,
m_constStrArgNamedRestrictBrkPtToThreadId);
+ // Ask LLDB for the target to check if we have valid or dummy one.
+ CMICmnLLDBDebugSessionInfo &rSessionInfo(
+ CMICmnLLDBDebugSessionInfo::Instance());
+ lldb::SBTarget sbTarget = rSessionInfo.GetTarget();
+
m_bBrkPtEnabled = !pArgDisableBrkPt->GetFound();
m_bBrkPtIsTemp = pArgTempBrkPt->GetFound();
m_bHaveArgOptionThreadGrp = pArgThreadGroup->GetFound();
@@ -157,7 +162,12 @@ bool CMICmdCmdBreakInsert::Execute() {
nThreadGrp);
m_strArgOptionThreadGrp = CMIUtilString::Format("i%d", nThreadGrp);
}
- m_bBrkPtIsPending = pArgPendingBrkPt->GetFound();
+
+ if (sbTarget == rSessionInfo.GetDebugger().GetDummyTarget())
+ m_bBrkPtIsPending = true;
+ else
+ m_bBrkPtIsPending = pArgPendingBrkPt->GetFound();
+
if (pArgLocation->GetFound())
m_brkName = pArgLocation->GetValue();
else if (m_bBrkPtIsPending) {
@@ -225,9 +235,6 @@ bool CMICmdCmdBreakInsert::Execute() {
// Ask LLDB to create a breakpoint
bool bOk = MIstatus::success;
- CMICmnLLDBDebugSessionInfo &rSessionInfo(
- CMICmnLLDBDebugSessionInfo::Instance());
- lldb::SBTarget sbTarget = rSessionInfo.GetTarget();
switch (eBrkPtType) {
case eBreakPoint_ByAddress:
m_brkPt = sbTarget.BreakpointCreateByAddress(nAddress);
diff --git a/lldb/tools/lldb-mi/MICmnLLDBDebugSessionInfo.cpp b/lldb/tools/lldb-mi/MICmnLLDBDebugSessionInfo.cpp
index 6e76c23036f..9a173d1007e 100644
--- a/lldb/tools/lldb-mi/MICmnLLDBDebugSessionInfo.cpp
+++ b/lldb/tools/lldb-mi/MICmnLLDBDebugSessionInfo.cpp
@@ -871,7 +871,10 @@ lldb::SBListener &CMICmnLLDBDebugSessionInfo::GetListener() const {
// Throws: None.
//--
lldb::SBTarget CMICmnLLDBDebugSessionInfo::GetTarget() const {
- return GetDebugger().GetSelectedTarget();
+ auto target = GetDebugger().GetSelectedTarget();
+ if (target.IsValid())
+ return target;
+ return GetDebugger().GetDummyTarget();
}
//++
OpenPOWER on IntegriCloud