summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp25
-rw-r--r--lldb/source/Plugins/Process/POSIX/ProcessMessage.cpp3
-rw-r--r--lldb/source/Plugins/Process/POSIX/ProcessMessage.h6
-rw-r--r--lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp4
4 files changed, 16 insertions, 22 deletions
diff --git a/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp b/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
index 9fd51d2d640..329b7ea2360 100644
--- a/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
+++ b/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
@@ -855,7 +855,6 @@ ProcessMonitor::Launch(LaunchArgs *args)
{
ProcessMonitor *monitor = args->m_monitor;
ProcessFreeBSD &process = monitor->GetProcess();
- lldb::ProcessSP processSP = process.shared_from_this();
const char **argv = args->m_argv;
const char **envp = args->m_envp;
const char *stdin_path = args->m_stdin_path;
@@ -868,9 +867,6 @@ ProcessMonitor::Launch(LaunchArgs *args)
char err_str[err_len];
lldb::pid_t pid;
- lldb::ThreadSP inferior;
- Log *log (ProcessPOSIXLog::GetLogIfAllCategoriesSet (POSIX_LOG_PROCESS));
-
// Propagate the environment if one is not supplied.
if (envp == NULL || envp[0] == NULL)
envp = const_cast<const char **>(environ);
@@ -1002,14 +998,7 @@ ProcessMonitor::Launch(LaunchArgs *args)
if (!EnsureFDFlags(monitor->m_terminal_fd, O_NONBLOCK, args->m_error))
goto FINISH;
- // Update the process thread list with this new thread.
- inferior.reset(process.CreateNewPOSIXThread(*processSP, pid));
- if (log)
- log->Printf ("ProcessMonitor::%s() adding pid = %" PRIu64, __FUNCTION__, pid);
- process.GetThreadList().AddThread(inferior);
-
- // Let our process instance know the thread has stopped.
- process.SendMessage(ProcessMessage::Trace(pid));
+ process.SendMessage(ProcessMessage::Attach(pid));
FINISH:
return args->m_error.Success();
@@ -1059,9 +1048,6 @@ ProcessMonitor::Attach(AttachArgs *args)
ProcessMonitor *monitor = args->m_monitor;
ProcessFreeBSD &process = monitor->GetProcess();
- lldb::ProcessSP processSP = process.shared_from_this();
- ThreadList &tl = process.GetThreadList();
- lldb::ThreadSP inferior;
if (pid <= 1)
{
@@ -1084,14 +1070,9 @@ ProcessMonitor::Attach(AttachArgs *args)
goto FINISH;
}
- // Update the process thread list with the attached thread.
- inferior.reset(process.CreateNewPOSIXThread(*processSP, pid));
- tl.AddThread(inferior);
-
- // Let our process instance know the thread has stopped.
- process.SendMessage(ProcessMessage::Trace(pid));
+ process.SendMessage(ProcessMessage::Attach(pid));
- FINISH:
+FINISH:
return args->m_error.Success();
}
diff --git a/lldb/source/Plugins/Process/POSIX/ProcessMessage.cpp b/lldb/source/Plugins/Process/POSIX/ProcessMessage.cpp
index 60a29e07cea..bdb7804592d 100644
--- a/lldb/source/Plugins/Process/POSIX/ProcessMessage.cpp
+++ b/lldb/source/Plugins/Process/POSIX/ProcessMessage.cpp
@@ -218,6 +218,9 @@ ProcessMessage::PrintKind(Kind kind)
case eInvalidMessage:
str = "eInvalidMessage";
break;
+ case eAttachMessage:
+ str = "eAttachMessage";
+ break;
case eExitMessage:
str = "eExitMessage";
break;
diff --git a/lldb/source/Plugins/Process/POSIX/ProcessMessage.h b/lldb/source/Plugins/Process/POSIX/ProcessMessage.h
index c6c460c1344..720c9e76939 100644
--- a/lldb/source/Plugins/Process/POSIX/ProcessMessage.h
+++ b/lldb/source/Plugins/Process/POSIX/ProcessMessage.h
@@ -23,6 +23,7 @@ public:
enum Kind
{
eInvalidMessage,
+ eAttachMessage,
eExitMessage,
eLimboMessage,
eSignalMessage,
@@ -79,6 +80,11 @@ public:
lldb::tid_t GetTID() const { return m_tid; }
+ /// Indicates that the process @p pid has successfully attached.
+ static ProcessMessage Attach(lldb::pid_t pid) {
+ return ProcessMessage(pid, eAttachMessage);
+ }
+
/// Indicates that the thread @p tid is about to exit with status @p status.
static ProcessMessage Limbo(lldb::tid_t tid, int status) {
return ProcessMessage(tid, eLimboMessage, status);
diff --git a/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp b/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp
index 0e225f72152..5ab864f59a4 100644
--- a/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp
+++ b/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp
@@ -367,6 +367,10 @@ ProcessPOSIX::SendMessage(const ProcessMessage &message)
case ProcessMessage::eInvalidMessage:
return;
+ case ProcessMessage::eAttachMessage:
+ SetPrivateState(eStateStopped);
+ return;
+
case ProcessMessage::eLimboMessage:
assert(thread);
thread->SetState(eStateStopped);
OpenPOWER on IntegriCloud