diff options
| author | James McIlree <jmcilree@apple.com> | 2011-03-04 00:31:13 +0000 |
|---|---|---|
| committer | James McIlree <jmcilree@apple.com> | 2011-03-04 00:31:13 +0000 |
| commit | 9631aae211e557f1ddad20a30d4b4276b853bbec (patch) | |
| tree | 4b89527ff9e428a421bc8eab3190182eabd719bc /lldb/source/API | |
| parent | 54366f12cb614f3d3546e39ff12f4ca0a5d161fe (diff) | |
| download | bcm5719-llvm-9631aae211e557f1ddad20a30d4b4276b853bbec.tar.gz bcm5719-llvm-9631aae211e557f1ddad20a30d4b4276b853bbec.zip | |
Expose ConnectRemote API through SBTarget and SBProcess.
Patch verified by Greg Clayton prior to checkin.
llvm-svn: 126974
Diffstat (limited to 'lldb/source/API')
| -rw-r--r-- | lldb/source/API/SBProcess.cpp | 82 | ||||
| -rw-r--r-- | lldb/source/API/SBTarget.cpp | 35 |
2 files changed, 117 insertions, 0 deletions
diff --git a/lldb/source/API/SBProcess.cpp b/lldb/source/API/SBProcess.cpp index b56df41ac05..4566f76687f 100644 --- a/lldb/source/API/SBProcess.cpp +++ b/lldb/source/API/SBProcess.cpp @@ -95,6 +95,88 @@ SBProcess::IsValid() const return m_opaque_sp.get() != NULL; } +bool +SBProcess::RemoteLaunch (char const **argv, + char const **envp, + const char *stdin_path, + const char *stdout_path, + const char *stderr_path, + const char *working_directory, + uint32_t launch_flags, + bool stop_at_entry, + lldb::SBError& error) +{ + LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); + if (log) { + log->Printf ("SBProcess(%p)::RemoteLaunch (argv=%p, envp=%p, stdin=%s, stdout=%s, stderr=%s, working-dir=%s, launch_flags=0x%x, stop_at_entry=%i, &error (%p))...", + m_opaque_sp.get(), + argv, + envp, + stdin_path ? stdin_path : "NULL", + stdout_path ? stdout_path : "NULL", + stderr_path ? stderr_path : "NULL", + working_directory ? working_directory : "NULL", + launch_flags, + stop_at_entry, + error.get()); + } + + if (m_opaque_sp) + { + Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); + if (m_opaque_sp->GetState() == eStateConnected) + { + error.SetError (m_opaque_sp->Launch (argv, envp, launch_flags, stdin_path, stdout_path, stderr_path, working_directory)); + } + else + { + error.SetErrorString ("must be in eStateConnected to call RemoteLaunch"); + } + } + else + { + error.SetErrorString ("unable to attach pid"); + } + + if (log) { + SBStream sstr; + error.GetDescription (sstr); + log->Printf ("SBProcess(%p)::RemoteLaunch (...) => SBError (%p): %s", error.get(), sstr.GetData()); + } + + return error.Success(); +} + +bool +SBProcess::RemoteAttachToProcessWithID (lldb::pid_t pid, lldb::SBError& error) +{ + if (m_opaque_sp) + { + Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); + if (m_opaque_sp->GetState() == eStateConnected) + { + error.SetError (m_opaque_sp->Attach (pid)); + } + else + { + error.SetErrorString ("must be in eStateConnected to call RemoteAttachToProcessWithID"); + } + } + else + { + error.SetErrorString ("unable to attach pid"); + } + + LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); + if (log) { + SBStream sstr; + error.GetDescription (sstr); + log->Printf ("SBProcess(%p)::RemoteAttachToProcessWithID (%d) => SBError (%p): %s", error.get(), sstr.GetData()); + } + + return error.Success(); +} + uint32_t SBProcess::GetNumThreads () diff --git a/lldb/source/API/SBTarget.cpp b/lldb/source/API/SBTarget.cpp index 7358a386946..d1a1f275e33 100644 --- a/lldb/source/API/SBTarget.cpp +++ b/lldb/source/API/SBTarget.cpp @@ -366,6 +366,41 @@ SBTarget::AttachToProcessWithName } +lldb::SBProcess +SBTarget::ConnectRemote +( + SBListener &listener, + const char *url, + const char *plugin_name, + SBError& error +) +{ + SBProcess sb_process; + if (m_opaque_sp) + { + Mutex::Locker api_locker (m_opaque_sp->GetAPIMutex()); + if (listener.IsValid()) + sb_process.SetProcess (m_opaque_sp->CreateProcess (listener.ref(), plugin_name)); + else + sb_process.SetProcess (m_opaque_sp->CreateProcess (m_opaque_sp->GetDebugger().GetListener(), plugin_name)); + + + if (sb_process.IsValid()) + { + error.SetError (sb_process->ConnectRemote (url)); + } + else + { + error.SetErrorString ("unable to create lldb_private::Process"); + } + } + else + { + error.SetErrorString ("SBTarget is invalid"); + } + return sb_process; +} + SBFileSpec SBTarget::GetExecutable () { |

