diff options
author | Greg Clayton <gclayton@apple.com> | 2012-01-30 09:04:36 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2012-01-30 09:04:36 +0000 |
commit | acdbe8163798063d625caa28c4137af0f222d328 (patch) | |
tree | 686b3282ccf3bfaab1038932499a4caeefdd0ab4 /lldb/source/API/SBProcess.cpp | |
parent | 2962e7b6569c9d1188045c88122649550f37393e (diff) | |
download | bcm5719-llvm-acdbe8163798063d625caa28c4137af0f222d328.tar.gz bcm5719-llvm-acdbe8163798063d625caa28c4137af0f222d328.zip |
lldb::SBTarget and lldb::SBProcess are now thread hardened. They both still
contain shared pointers to the lldb_private::Target and lldb_private::Process
objects respectively as we won't want the target or process just going away.
Also cleaned up the lldb::SBModule to remove dangerous pointer accessors.
For any code the public API files, we should always be grabbing shared
pointers to any objects for the current class, and any other classes prior
to running code with them.
llvm-svn: 149238
Diffstat (limited to 'lldb/source/API/SBProcess.cpp')
-rw-r--r-- | lldb/source/API/SBProcess.cpp | 301 |
1 files changed, 171 insertions, 130 deletions
diff --git a/lldb/source/API/SBProcess.cpp b/lldb/source/API/SBProcess.cpp index 3422efbdb94..4b4e840e63d 100644 --- a/lldb/source/API/SBProcess.cpp +++ b/lldb/source/API/SBProcess.cpp @@ -125,10 +125,11 @@ SBProcess::RemoteLaunch (char const **argv, error.get()); } - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - if (m_opaque_sp->GetState() == eStateConnected) + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + if (process_sp->GetState() == eStateConnected) { if (stop_at_entry) launch_flags |= eLaunchFlagStopAtEntry; @@ -137,14 +138,14 @@ SBProcess::RemoteLaunch (char const **argv, stderr_path, working_directory, launch_flags); - Module *exe_module = m_opaque_sp->GetTarget().GetExecutableModulePointer(); + Module *exe_module = process_sp->GetTarget().GetExecutableModulePointer(); if (exe_module) launch_info.SetExecutableFile(exe_module->GetFileSpec(), true); if (argv) launch_info.GetArguments().AppendArguments (argv); if (envp) launch_info.GetEnvironmentEntries ().SetArguments (envp); - error.SetError (m_opaque_sp->Launch (launch_info)); + error.SetError (process_sp->Launch (launch_info)); } else { @@ -159,7 +160,7 @@ SBProcess::RemoteLaunch (char const **argv, if (log) { SBStream sstr; error.GetDescription (sstr); - log->Printf ("SBProcess(%p)::RemoteLaunch (...) => SBError (%p): %s", m_opaque_sp.get(), error.get(), sstr.GetData()); + log->Printf ("SBProcess(%p)::RemoteLaunch (...) => SBError (%p): %s", process_sp.get(), error.get(), sstr.GetData()); } return error.Success(); @@ -168,14 +169,15 @@ SBProcess::RemoteLaunch (char const **argv, bool SBProcess::RemoteAttachToProcessWithID (lldb::pid_t pid, lldb::SBError& error) { - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - if (m_opaque_sp->GetState() == eStateConnected) + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + if (process_sp->GetState() == eStateConnected) { ProcessAttachInfo attach_info; attach_info.SetProcessID (pid); - error.SetError (m_opaque_sp->Attach (attach_info)); + error.SetError (process_sp->Attach (attach_info)); } else { @@ -191,7 +193,7 @@ SBProcess::RemoteAttachToProcessWithID (lldb::pid_t pid, lldb::SBError& error) if (log) { SBStream sstr; error.GetDescription (sstr); - log->Printf ("SBProcess(%p)::RemoteAttachToProcessWithID (%llu) => SBError (%p): %s", m_opaque_sp.get(), pid, error.get(), sstr.GetData()); + log->Printf ("SBProcess(%p)::RemoteAttachToProcessWithID (%llu) => SBError (%p): %s", process_sp.get(), pid, error.get(), sstr.GetData()); } return error.Success(); @@ -204,15 +206,16 @@ SBProcess::GetNumThreads () LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); uint32_t num_threads = 0; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); const bool can_update = true; - num_threads = m_opaque_sp->GetThreadList().GetSize(can_update); + num_threads = process_sp->GetThreadList().GetSize(can_update); } if (log) - log->Printf ("SBProcess(%p)::GetNumThreads () => %d", m_opaque_sp.get(), num_threads); + log->Printf ("SBProcess(%p)::GetNumThreads () => %d", process_sp.get(), num_threads); return num_threads; } @@ -224,16 +227,17 @@ SBProcess::GetSelectedThread () const SBThread sb_thread; ThreadSP thread_sp; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - thread_sp = m_opaque_sp->GetThreadList().GetSelectedThread(); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + thread_sp = process_sp->GetThreadList().GetSelectedThread(); sb_thread.SetThread (thread_sp); } if (log) { - log->Printf ("SBProcess(%p)::GetSelectedThread () => SBThread(%p)", m_opaque_sp.get(), thread_sp.get()); + log->Printf ("SBProcess(%p)::GetSelectedThread () => SBThread(%p)", process_sp.get(), thread_sp.get()); } return sb_thread; @@ -246,14 +250,15 @@ SBProcess::GetTarget() const SBTarget sb_target; TargetSP target_sp; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - target_sp = m_opaque_sp->GetTarget().shared_from_this(); + target_sp = process_sp->GetTarget().shared_from_this(); sb_target.SetSP (target_sp); } if (log) - log->Printf ("SBProcess(%p)::GetTarget () => SBTarget(%p)", m_opaque_sp.get(), target_sp.get()); + log->Printf ("SBProcess(%p)::GetTarget () => SBTarget(%p)", process_sp.get(), target_sp.get()); return sb_target; } @@ -265,15 +270,16 @@ SBProcess::PutSTDIN (const char *src, size_t src_len) LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); size_t ret_val = 0; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { Error error; - ret_val = m_opaque_sp->PutSTDIN (src, src_len, error); + ret_val = process_sp->PutSTDIN (src, src_len, error); } if (log) log->Printf ("SBProcess(%p)::PutSTDIN (src=\"%s\", src_len=%d) => %lu", - m_opaque_sp.get(), + process_sp.get(), src, (uint32_t) src_len, ret_val); @@ -285,16 +291,17 @@ size_t SBProcess::GetSTDOUT (char *dst, size_t dst_len) const { size_t bytes_read = 0; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { Error error; - bytes_read = m_opaque_sp->GetSTDOUT (dst, dst_len, error); + bytes_read = process_sp->GetSTDOUT (dst, dst_len, error); } LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); if (log) log->Printf ("SBProcess(%p)::GetSTDOUT (dst=\"%.*s\", dst_len=%zu) => %zu", - m_opaque_sp.get(), (int) bytes_read, dst, dst_len, bytes_read); + process_sp.get(), (int) bytes_read, dst, dst_len, bytes_read); return bytes_read; } @@ -303,16 +310,17 @@ size_t SBProcess::GetSTDERR (char *dst, size_t dst_len) const { size_t bytes_read = 0; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { Error error; - bytes_read = m_opaque_sp->GetSTDERR (dst, dst_len, error); + bytes_read = process_sp->GetSTDERR (dst, dst_len, error); } LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); if (log) log->Printf ("SBProcess(%p)::GetSTDERR (dst=\"%.*s\", dst_len=%zu) => %zu", - m_opaque_sp.get(), (int) bytes_read, dst, dst_len, bytes_read); + process_sp.get(), (int) bytes_read, dst, dst_len, bytes_read); return bytes_read; } @@ -323,14 +331,15 @@ SBProcess::ReportEventState (const SBEvent &event, FILE *out) const if (out == NULL) return; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { const StateType event_state = SBProcess::GetStateFromEvent (event); char message[1024]; int message_len = ::snprintf (message, sizeof (message), "Process %llu %s\n", - m_opaque_sp->GetID(), + process_sp->GetID(), SBDebugger::StateAsCString (event_state)); if (message_len > 0) @@ -341,14 +350,15 @@ SBProcess::ReportEventState (const SBEvent &event, FILE *out) const void SBProcess::AppendEventStateReport (const SBEvent &event, SBCommandReturnObject &result) { - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { const StateType event_state = SBProcess::GetStateFromEvent (event); char message[1024]; ::snprintf (message, sizeof (message), "Process %llu %s\n", - m_opaque_sp->GetID(), + process_sp->GetID(), SBDebugger::StateAsCString (event_state)); result.AppendMessage (message); @@ -358,10 +368,11 @@ SBProcess::AppendEventStateReport (const SBEvent &event, SBCommandReturnObject & bool SBProcess::SetSelectedThread (const SBThread &thread) { - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - return m_opaque_sp->GetThreadList().SetSelectedThreadByID (thread.GetThreadID()); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + return process_sp->GetThreadList().SetSelectedThreadByID (thread.GetThreadID()); } return false; } @@ -372,15 +383,16 @@ SBProcess::SetSelectedThreadByID (uint32_t tid) LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); bool ret_val = false; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - ret_val = m_opaque_sp->GetThreadList().SetSelectedThreadByID (tid); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + ret_val = process_sp->GetThreadList().SetSelectedThreadByID (tid); } if (log) log->Printf ("SBProcess(%p)::SetSelectedThreadByID (tid=0x%4.4x) => %s", - m_opaque_sp.get(), tid, (ret_val ? "true" : "false")); + process_sp.get(), tid, (ret_val ? "true" : "false")); return ret_val; } @@ -392,17 +404,18 @@ SBProcess::GetThreadAtIndex (size_t index) SBThread sb_thread; ThreadSP thread_sp; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - thread_sp = m_opaque_sp->GetThreadList().GetThreadAtIndex(index); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + thread_sp = process_sp->GetThreadList().GetThreadAtIndex(index); sb_thread.SetThread (thread_sp); } if (log) { log->Printf ("SBProcess(%p)::GetThreadAtIndex (index=%d) => SBThread(%p)", - m_opaque_sp.get(), (uint32_t) index, thread_sp.get()); + process_sp.get(), (uint32_t) index, thread_sp.get()); } return sb_thread; @@ -413,16 +426,17 @@ SBProcess::GetState () { StateType ret_val = eStateInvalid; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - ret_val = m_opaque_sp->GetState(); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + ret_val = process_sp->GetState(); } LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); if (log) log->Printf ("SBProcess(%p)::GetState () => %s", - m_opaque_sp.get(), + process_sp.get(), lldb_private::StateAsCString (ret_val)); return ret_val; @@ -433,15 +447,16 @@ int SBProcess::GetExitStatus () { int exit_status = 0; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - exit_status = m_opaque_sp->GetExitStatus (); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + exit_status = process_sp->GetExitStatus (); } LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); if (log) log->Printf ("SBProcess(%p)::GetExitStatus () => %i (0x%8.8x)", - m_opaque_sp.get(), exit_status, exit_status); + process_sp.get(), exit_status, exit_status); return exit_status; } @@ -450,15 +465,16 @@ const char * SBProcess::GetExitDescription () { const char *exit_desc = NULL; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - exit_desc = m_opaque_sp->GetExitDescription (); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + exit_desc = process_sp->GetExitDescription (); } LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); if (log) log->Printf ("SBProcess(%p)::GetExitDescription () => %s", - m_opaque_sp.get(), exit_desc); + process_sp.get(), exit_desc); return exit_desc; } @@ -466,12 +482,13 @@ lldb::pid_t SBProcess::GetProcessID () { lldb::pid_t ret_val = LLDB_INVALID_PROCESS_ID; - if (m_opaque_sp) - ret_val = m_opaque_sp->GetID(); + ProcessSP process_sp(GetSP()); + if (process_sp) + ret_val = process_sp->GetID(); LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); if (log) - log->Printf ("SBProcess(%p)::GetProcessID () => %llu", m_opaque_sp.get(), ret_val); + log->Printf ("SBProcess(%p)::GetProcessID () => %llu", process_sp.get(), ret_val); return ret_val; } @@ -480,12 +497,13 @@ ByteOrder SBProcess::GetByteOrder () const { ByteOrder byteOrder = eByteOrderInvalid; - if (m_opaque_sp) - byteOrder = m_opaque_sp->GetTarget().GetArchitecture().GetByteOrder(); + ProcessSP process_sp(GetSP()); + if (process_sp) + byteOrder = process_sp->GetTarget().GetArchitecture().GetByteOrder(); LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); if (log) - log->Printf ("SBProcess(%p)::GetByteOrder () => %d", m_opaque_sp.get(), byteOrder); + log->Printf ("SBProcess(%p)::GetByteOrder () => %d", process_sp.get(), byteOrder); return byteOrder; } @@ -494,12 +512,13 @@ uint32_t SBProcess::GetAddressByteSize () const { uint32_t size = 0; - if (m_opaque_sp) - size = m_opaque_sp->GetTarget().GetArchitecture().GetAddressByteSize(); + ProcessSP process_sp(GetSP()); + if (process_sp) + size = process_sp->GetTarget().GetArchitecture().GetAddressByteSize(); LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); if (log) - log->Printf ("SBProcess(%p)::GetAddressByteSize () => %d", m_opaque_sp.get(), size); + log->Printf ("SBProcess(%p)::GetAddressByteSize () => %d", process_sp.get(), size); return size; } @@ -508,22 +527,25 @@ SBError SBProcess::Continue () { LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); - if (log) - log->Printf ("SBProcess(%p)::Continue ()...", m_opaque_sp.get()); SBError sb_error; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + + if (log) + log->Printf ("SBProcess(%p)::Continue ()...", process_sp.get()); + + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); - Error error (m_opaque_sp->Resume()); + Error error (process_sp->Resume()); if (error.Success()) { - if (m_opaque_sp->GetTarget().GetDebugger().GetAsyncExecution () == false) + if (process_sp->GetTarget().GetDebugger().GetAsyncExecution () == false) { if (log) - log->Printf ("SBProcess(%p)::Continue () waiting for process to stop...", m_opaque_sp.get()); - m_opaque_sp->WaitForProcessToStop (NULL); + log->Printf ("SBProcess(%p)::Continue () waiting for process to stop...", process_sp.get()); + process_sp->WaitForProcessToStop (NULL); } } sb_error.SetError(error); @@ -535,7 +557,7 @@ SBProcess::Continue () { SBStream sstr; sb_error.GetDescription (sstr); - log->Printf ("SBProcess(%p)::Continue () => SBError (%p): %s", m_opaque_sp.get(), sb_error.get(), sstr.GetData()); + log->Printf ("SBProcess(%p)::Continue () => SBError (%p): %s", process_sp.get(), sb_error.get(), sstr.GetData()); } return sb_error; @@ -546,10 +568,11 @@ SBError SBProcess::Destroy () { SBError sb_error; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - sb_error.SetError(m_opaque_sp->Destroy()); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + sb_error.SetError(process_sp->Destroy()); } else sb_error.SetErrorString ("SBProcess is invalid"); @@ -560,7 +583,7 @@ SBProcess::Destroy () SBStream sstr; sb_error.GetDescription (sstr); log->Printf ("SBProcess(%p)::Destroy () => SBError (%p): %s", - m_opaque_sp.get(), + process_sp.get(), sb_error.get(), sstr.GetData()); } @@ -573,10 +596,11 @@ SBError SBProcess::Stop () { SBError sb_error; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - sb_error.SetError (m_opaque_sp->Halt()); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + sb_error.SetError (process_sp->Halt()); } else sb_error.SetErrorString ("SBProcess is invalid"); @@ -587,7 +611,7 @@ SBProcess::Stop () SBStream sstr; sb_error.GetDescription (sstr); log->Printf ("SBProcess(%p)::Stop () => SBError (%p): %s", - m_opaque_sp.get(), + process_sp.get(), sb_error.get(), sstr.GetData()); } @@ -599,10 +623,11 @@ SBError SBProcess::Kill () { SBError sb_error; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - sb_error.SetError (m_opaque_sp->Destroy()); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + sb_error.SetError (process_sp->Destroy()); } else sb_error.SetErrorString ("SBProcess is invalid"); @@ -613,7 +638,7 @@ SBProcess::Kill () SBStream sstr; sb_error.GetDescription (sstr); log->Printf ("SBProcess(%p)::Kill () => SBError (%p): %s", - m_opaque_sp.get(), + process_sp.get(), sb_error.get(), sstr.GetData()); } @@ -625,10 +650,11 @@ SBError SBProcess::Detach () { SBError sb_error; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - sb_error.SetError (m_opaque_sp->Detach()); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + sb_error.SetError (process_sp->Detach()); } else sb_error.SetErrorString ("SBProcess is invalid"); @@ -640,10 +666,11 @@ SBError SBProcess::Signal (int signo) { SBError sb_error; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - sb_error.SetError (m_opaque_sp->Signal (signo)); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + sb_error.SetError (process_sp->Signal (signo)); } else sb_error.SetErrorString ("SBProcess is invalid"); @@ -653,7 +680,7 @@ SBProcess::Signal (int signo) SBStream sstr; sb_error.GetDescription (sstr); log->Printf ("SBProcess(%p)::Signal (signo=%i) => SBError (%p): %s", - m_opaque_sp.get(), + process_sp.get(), signo, sb_error.get(), sstr.GetData()); @@ -666,10 +693,11 @@ SBProcess::GetThreadByID (tid_t tid) { SBThread sb_thread; ThreadSP thread_sp; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - thread_sp = m_opaque_sp->GetThreadList().FindThreadByID (tid); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + thread_sp = process_sp->GetThreadList().FindThreadByID (tid); sb_thread.SetThread (thread_sp); } @@ -677,7 +705,7 @@ SBProcess::GetThreadByID (tid_t tid) if (log) { log->Printf ("SBProcess(%p)::GetThreadByID (tid=0x%4.4llx) => SBThread (%p)", - m_opaque_sp.get(), + process_sp.get(), tid, thread_sp.get()); } @@ -718,10 +746,12 @@ SBProcess::GetBroadcaster () const { LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); - SBBroadcaster broadcaster(m_opaque_sp.get(), false); + ProcessSP process_sp(GetSP()); + + SBBroadcaster broadcaster(process_sp.get(), false); if (log) - log->Printf ("SBProcess(%p)::GetBroadcaster () => SBBroadcaster (%p)", m_opaque_sp.get(), + log->Printf ("SBProcess(%p)::GetBroadcaster () => SBBroadcaster (%p)", process_sp.get(), broadcaster.get()); return broadcaster; @@ -734,21 +764,23 @@ SBProcess::ReadMemory (addr_t addr, void *dst, size_t dst_len, SBError &sb_error size_t bytes_read = 0; + ProcessSP process_sp(GetSP()); + if (log) { log->Printf ("SBProcess(%p)::ReadMemory (addr=0x%llx, dst=%p, dst_len=%zu, SBError (%p))...", - m_opaque_sp.get(), + process_sp.get(), addr, dst, dst_len, sb_error.get()); } - - if (m_opaque_sp) + + if (process_sp) { Error error; - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - bytes_read = m_opaque_sp->ReadMemory (addr, dst, dst_len, error); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + bytes_read = process_sp->ReadMemory (addr, dst, dst_len, error); sb_error.SetError (error); } else @@ -761,7 +793,7 @@ SBProcess::ReadMemory (addr_t addr, void *dst, size_t dst_len, SBError &sb_error SBStream sstr; sb_error.GetDescription (sstr); log->Printf ("SBProcess(%p)::ReadMemory (addr=0x%llx, dst=%p, dst_len=%zu, SBError (%p): %s) => %zu", - m_opaque_sp.get(), + process_sp.get(), addr, dst, dst_len, @@ -777,11 +809,12 @@ size_t SBProcess::ReadCStringFromMemory (addr_t addr, void *buf, size_t size, lldb::SBError &sb_error) { size_t bytes_read = 0; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { Error error; - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - bytes_read = m_opaque_sp->ReadCStringFromMemory (addr, (char *)buf, size, error); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + bytes_read = process_sp->ReadCStringFromMemory (addr, (char *)buf, size, error); sb_error.SetError (error); } else @@ -794,11 +827,12 @@ SBProcess::ReadCStringFromMemory (addr_t addr, void *buf, size_t size, lldb::SBE uint64_t SBProcess::ReadUnsignedFromMemory (addr_t addr, uint32_t byte_size, lldb::SBError &sb_error) { - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { Error error; - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - uint64_t value = m_opaque_sp->ReadUnsignedIntegerFromMemory (addr, byte_size, 0, error); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + uint64_t value = process_sp->ReadUnsignedIntegerFromMemory (addr, byte_size, 0, error); sb_error.SetError (error); return value; } @@ -813,11 +847,12 @@ lldb::addr_t SBProcess::ReadPointerFromMemory (addr_t addr, lldb::SBError &sb_error) { lldb::addr_t ptr = LLDB_INVALID_ADDRESS; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { Error error; - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - ptr = m_opaque_sp->ReadPointerFromMemory (addr, error); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + ptr = process_sp->ReadPointerFromMemory (addr, error); sb_error.SetError (error); } else @@ -833,21 +868,24 @@ SBProcess::WriteMemory (addr_t addr, const void *src, size_t src_len, SBError &s size_t bytes_written = 0; LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); + + ProcessSP process_sp(GetSP()); + if (log) { log->Printf ("SBProcess(%p)::WriteMemory (addr=0x%llx, src=%p, dst_len=%zu, SBError (%p))...", - m_opaque_sp.get(), + process_sp.get(), addr, src, src_len, sb_error.get()); } - if (m_opaque_sp) + if (process_sp) { Error error; - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - bytes_written = m_opaque_sp->WriteMemory (addr, src, src_len, error); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + bytes_written = process_sp->WriteMemory (addr, src, src_len, error); sb_error.SetError (error); } @@ -856,7 +894,7 @@ SBProcess::WriteMemory (addr_t addr, const void *src, size_t src_len, SBError &s SBStream sstr; sb_error.GetDescription (sstr); log->Printf ("SBProcess(%p)::WriteMemory (addr=0x%llx, src=%p, dst_len=%zu, SBError (%p): %s) => %zu", - m_opaque_sp.get(), + process_sp.get(), addr, src, src_len, @@ -873,17 +911,18 @@ SBProcess::GetDescription (SBStream &description) { Stream &strm = description.ref(); - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { char path[PATH_MAX]; GetTarget().GetExecutable().GetPath (path, sizeof(path)); - Module *exe_module = m_opaque_sp->GetTarget().GetExecutableModulePointer(); + Module *exe_module = process_sp->GetTarget().GetExecutableModulePointer(); const char *exe_name = NULL; if (exe_module) exe_name = exe_module->GetFileSpec().GetFilename().AsCString(); strm.Printf ("SBProcess: pid = %llu, state = %s, threads = %d%s%s", - m_opaque_sp->GetID(), + process_sp->GetID(), lldb_private::StateAsCString (GetState()), GetNumThreads(), exe_name ? ", executable = " : "", @@ -898,10 +937,11 @@ SBProcess::GetDescription (SBStream &description) uint32_t SBProcess::LoadImage (lldb::SBFileSpec &sb_image_spec, lldb::SBError &sb_error) { - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - return m_opaque_sp->LoadImage (*sb_image_spec, sb_error.ref()); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + return process_sp->LoadImage (*sb_image_spec, sb_error.ref()); } return LLDB_INVALID_IMAGE_TOKEN; } @@ -910,10 +950,11 @@ lldb::SBError SBProcess::UnloadImage (uint32_t image_token) { lldb::SBError sb_error; - if (m_opaque_sp) + ProcessSP process_sp(GetSP()); + if (process_sp) { - Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); - sb_error.SetError (m_opaque_sp->UnloadImage (image_token)); + Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); + sb_error.SetError (process_sp->UnloadImage (image_token)); } else sb_error.SetErrorString("invalid process"); |