lldb::addr_t SBProcess::ReadPointerFromMemory (addr_t addr, lldb::SBError &sb_error) { lldb::addr_t ptr = LLDB_INVALID_ADDRESS; ProcessSP process_sp(GetSP()); if (process_sp) { Process::StopLocker stop_locker; if (stop_locker.TryLock(&process_sp->GetRunLock())) { Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); ptr = process_sp->ReadPointerFromMemory (addr, sb_error.ref()); } else { Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); if (log) log->Printf ("SBProcess(%p)::ReadPointerFromMemory() => error: process is running", static_cast<void*>(process_sp.get())); sb_error.SetErrorString("process is running"); } } else { sb_error.SetErrorString ("SBProcess is invalid"); } return ptr; }
uint32_t SBProcess::LoadImage (const lldb::SBFileSpec &sb_local_image_spec, const lldb::SBFileSpec &sb_remote_image_spec, lldb::SBError &sb_error) { ProcessSP process_sp(GetSP()); if (process_sp) { Process::StopLocker stop_locker; if (stop_locker.TryLock(&process_sp->GetRunLock())) { Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); PlatformSP platform_sp = process_sp->GetTarget().GetPlatform(); return platform_sp->LoadImage (process_sp.get(), *sb_local_image_spec, *sb_remote_image_spec, sb_error.ref()); } else { Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); if (log) log->Printf ("SBProcess(%p)::LoadImage() => error: process is running", static_cast<void*>(process_sp.get())); sb_error.SetErrorString("process is running"); } } return LLDB_INVALID_IMAGE_TOKEN; }
size_t SBProcess::ReadCStringFromMemory (addr_t addr, void *buf, size_t size, lldb::SBError &sb_error) { size_t bytes_read = 0; ProcessSP process_sp(GetSP()); if (process_sp) { Process::StopLocker stop_locker; if (stop_locker.TryLock(&process_sp->GetRunLock())) { Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); bytes_read = process_sp->ReadCStringFromMemory (addr, (char *)buf, size, sb_error.ref()); } else { Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); if (log) log->Printf ("SBProcess(%p)::ReadCStringFromMemory() => error: process is running", static_cast<void*>(process_sp.get())); sb_error.SetErrorString("process is running"); } } else { sb_error.SetErrorString ("SBProcess is invalid"); } return bytes_read; }
uint64_t SBProcess::ReadUnsignedFromMemory (addr_t addr, uint32_t byte_size, lldb::SBError &sb_error) { uint64_t value = 0; ProcessSP process_sp(GetSP()); if (process_sp) { Process::StopLocker stop_locker; if (stop_locker.TryLock(&process_sp->GetRunLock())) { Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); value = process_sp->ReadUnsignedIntegerFromMemory (addr, byte_size, 0, sb_error.ref()); } else { Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); if (log) log->Printf ("SBProcess(%p)::ReadUnsignedFromMemory() => error: process is running", static_cast<void*>(process_sp.get())); sb_error.SetErrorString("process is running"); } } else { sb_error.SetErrorString ("SBProcess is invalid"); } return value; }
void SBCommandReturnObject::SetError(lldb::SBError &error, const char *fallback_error_cstr) { if (m_opaque_ap) { if (error.IsValid()) m_opaque_ap->SetError(error.ref(), fallback_error_cstr); else if (fallback_error_cstr) m_opaque_ap->SetError(Error(), fallback_error_cstr); } }
uint32_t SBProcess::LoadImage (lldb::SBFileSpec &sb_image_spec, lldb::SBError &sb_error) { if (m_opaque_sp) { Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex()); return m_opaque_sp->LoadImage (*sb_image_spec, sb_error.ref()); } return LLDB_INVALID_IMAGE_TOKEN; }
lldb::SBTarget SBDebugger::CreateTarget (const char *filename, const char *target_triple, const char *platform_name, bool add_dependent_modules, lldb::SBError& sb_error) { SBTarget sb_target; TargetSP target_sp; if (m_opaque_sp) { sb_error.Clear(); FileSpec filename_spec (filename, true); OptionGroupPlatform platform_options (false); platform_options.SetPlatformName (platform_name); sb_error.ref() = m_opaque_sp->GetTargetList().CreateTarget (*m_opaque_sp, filename_spec, target_triple, add_dependent_modules, &platform_options, target_sp); if (sb_error.Success()) sb_target.SetSP (target_sp); } else { sb_error.SetErrorString("invalid target"); } LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); if (log) { log->Printf ("SBDebugger(%p)::CreateTarget (filename=\"%s\", triple=%s, platform_name=%s, add_dependent_modules=%u, error=%s) => SBTarget(%p)", m_opaque_sp.get(), filename, target_triple, platform_name, add_dependent_modules, sb_error.GetCString(), target_sp.get()); } return sb_target; }
bool SBValue::SetValueFromCString (const char *value_str, lldb::SBError& error) { bool success = false; ValueLocker locker; lldb::ValueObjectSP value_sp(GetSP(locker)); Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); if (value_sp) { success = value_sp->SetValueFromCString (value_str,error.ref()); } else error.SetErrorStringWithFormat ("Could not get value: %s", locker.GetError().AsCString()); if (log) log->Printf ("SBValue(%p)::SetValueFromCString(\"%s\") => %i", value_sp.get(), value_str, success); return success; }
uint32_t SBProcess::LoadImage (lldb::SBFileSpec &sb_image_spec, lldb::SBError &sb_error) { ProcessSP process_sp(GetSP()); if (process_sp) { Process::StopLocker stop_locker; if (stop_locker.TryLock(&process_sp->GetRunLock())) { Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex()); return process_sp->LoadImage (*sb_image_spec, sb_error.ref()); } else { LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); if (log) log->Printf ("SBProcess(%p)::LoadImage() => error: process is running", process_sp.get()); sb_error.SetErrorString("process is running"); } } return LLDB_INVALID_IMAGE_TOKEN; }