summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2012-05-08 23:06:07 +0000
committerJim Ingham <jingham@apple.com>2012-05-08 23:06:07 +0000
commit8499e1a4cb1b8d3c1229f51e0d604f03c0285037 (patch)
treeda9507b0b85898aaae3bd4e0cf330eb4dc317899
parent3d6311d5f7e5078df992c5167b53a586cfb7213a (diff)
downloadbcm5719-llvm-8499e1a4cb1b8d3c1229f51e0d604f03c0285037.tar.gz
bcm5719-llvm-8499e1a4cb1b8d3c1229f51e0d604f03c0285037.zip
Print out a notification when the process of a target other than the currently selected target stops.
llvm-svn: 156433
-rw-r--r--lldb/include/lldb/API/SBDebugger.h3
-rw-r--r--lldb/include/lldb/Target/TargetList.h3
-rw-r--r--lldb/scripts/Python/interface/SBDebugger.i3
-rw-r--r--lldb/source/API/SBDebugger.cpp14
-rw-r--r--lldb/source/Target/TargetList.cpp13
-rw-r--r--lldb/tools/driver/Driver.cpp25
6 files changed, 56 insertions, 5 deletions
diff --git a/lldb/include/lldb/API/SBDebugger.h b/lldb/include/lldb/API/SBDebugger.h
index 0ec84f7de7f..a07c764bc94 100644
--- a/lldb/include/lldb/API/SBDebugger.h
+++ b/lldb/include/lldb/API/SBDebugger.h
@@ -127,6 +127,9 @@ public:
lldb::SBTarget
GetTargetAtIndex (uint32_t idx);
+
+ uint32_t
+ GetIndexOfTarget (lldb::SBTarget target);
lldb::SBTarget
FindTargetWithProcessID (pid_t pid);
diff --git a/lldb/include/lldb/Target/TargetList.h b/lldb/include/lldb/Target/TargetList.h
index 27663a5731d..2e5663aba57 100644
--- a/lldb/include/lldb/Target/TargetList.h
+++ b/lldb/include/lldb/Target/TargetList.h
@@ -142,6 +142,9 @@ public:
lldb::TargetSP
GetTargetAtIndex (uint32_t index) const;
+
+ uint32_t
+ GetIndexOfTarget (lldb::TargetSP target_sp) const;
//------------------------------------------------------------------
/// Find the target that contains has an executable whose path
diff --git a/lldb/scripts/Python/interface/SBDebugger.i b/lldb/scripts/Python/interface/SBDebugger.i
index 465c856f393..2fabc452fb9 100644
--- a/lldb/scripts/Python/interface/SBDebugger.i
+++ b/lldb/scripts/Python/interface/SBDebugger.i
@@ -209,6 +209,9 @@ public:
lldb::SBTarget
GetTargetAtIndex (uint32_t idx);
+ uint32_t
+ GetIndexOfTarget (lldb::SBTarget target);
+
lldb::SBTarget
FindTargetWithProcessID (pid_t pid);
diff --git a/lldb/source/API/SBDebugger.cpp b/lldb/source/API/SBDebugger.cpp
index be5190d8932..ce85544dce4 100644
--- a/lldb/source/API/SBDebugger.cpp
+++ b/lldb/source/API/SBDebugger.cpp
@@ -678,6 +678,20 @@ SBDebugger::GetTargetAtIndex (uint32_t idx)
return sb_target;
}
+uint32_t
+SBDebugger::GetIndexOfTarget (lldb::SBTarget target)
+{
+
+ lldb::TargetSP target_sp = target.GetSP();
+ if (!target_sp)
+ return UINT32_MAX;
+
+ if (!m_opaque_sp)
+ return UINT32_MAX;
+
+ return m_opaque_sp->GetTargetList().GetIndexOfTarget (target.GetSP());
+}
+
SBTarget
SBDebugger::FindTargetWithProcessID (pid_t pid)
{
diff --git a/lldb/source/Target/TargetList.cpp b/lldb/source/Target/TargetList.cpp
index 3ec4b08c190..3aaa77925e2 100644
--- a/lldb/source/Target/TargetList.cpp
+++ b/lldb/source/Target/TargetList.cpp
@@ -421,6 +421,19 @@ TargetList::GetTargetAtIndex (uint32_t idx) const
}
uint32_t
+TargetList::GetIndexOfTarget (lldb::TargetSP target_sp) const
+{
+ Mutex::Locker locker (m_target_list_mutex);
+ size_t num_targets = m_target_list.size();
+ for (size_t idx = 0; idx < num_targets; idx++)
+ {
+ if (target_sp == m_target_list[idx])
+ return idx;
+ }
+ return UINT32_MAX;
+}
+
+uint32_t
TargetList::SetSelectedTarget (Target* target)
{
Mutex::Locker locker (m_target_list_mutex);
diff --git a/lldb/tools/driver/Driver.cpp b/lldb/tools/driver/Driver.cpp
index b022f38b710..3c4deb93317 100644
--- a/lldb/tools/driver/Driver.cpp
+++ b/lldb/tools/driver/Driver.cpp
@@ -945,11 +945,26 @@ Driver::HandleProcessEvent (const SBEvent &event)
}
else
{
- SBCommandReturnObject result;
- UpdateSelectedThread ();
- m_debugger.GetCommandInterpreter().HandleCommand("process status", result, false);
- m_io_channel_ap->ErrWrite (result.GetError(), result.GetErrorSize(), ASYNC);
- m_io_channel_ap->OutWrite (result.GetOutput(), result.GetOutputSize(), ASYNC);
+ if (GetDebugger().GetSelectedTarget() == process.GetTarget())
+ {
+ SBCommandReturnObject result;
+ UpdateSelectedThread ();
+ m_debugger.GetCommandInterpreter().HandleCommand("process status", result, false);
+ m_io_channel_ap->ErrWrite (result.GetError(), result.GetErrorSize(), ASYNC);
+ m_io_channel_ap->OutWrite (result.GetOutput(), result.GetOutputSize(), ASYNC);
+ }
+ else
+ {
+ SBStream out_stream;
+ uint32_t target_idx = GetDebugger().GetIndexOfTarget(process.GetTarget());
+ if (target_idx != UINT32_MAX)
+ out_stream.Printf ("Target %d: (", target_idx);
+ else
+ out_stream.Printf ("Target <unknown index>: (");
+ process.GetTarget().GetDescription (out_stream, eDescriptionLevelBrief);
+ out_stream.Printf (") stopped.\n");
+ m_io_channel_ap->OutWrite (out_stream.GetData(), out_stream.GetSize(), ASYNC);
+ }
}
break;
}
OpenPOWER on IntegriCloud