================ @@ -46,8 +46,59 @@ SaveCoreOptions::GetOutputFile() const { return m_file; } +void SaveCoreOptions::AddThread(lldb::tid_t tid) { + if (m_threads_to_save.count(tid) == 0) + m_threads_to_save.emplace(tid); +} + +bool SaveCoreOptions::RemoveThread(lldb::tid_t tid) { + if (m_threads_to_save.count(tid) == 0) { + m_threads_to_save.erase(tid); + return true; + } + + return false; +} + +size_t SaveCoreOptions::GetNumThreads() const { + return m_threads_to_save.size(); +} + +int64_t SaveCoreOptions::GetThreadAtIndex(size_t index) const { + auto iter = m_threads_to_save.begin(); + while (index >= 0 && iter != m_threads_to_save.end()) { + if (index == 0) + return *iter; + index--; + iter++; + } + + return -1; +} + +bool SaveCoreOptions::ShouldSaveThread(lldb::tid_t tid) const { + // If the user specified no threads to save, then we save all threads. + if (m_threads_to_save.empty()) + return true; + return m_threads_to_save.count(tid) > 0; +} + +Status SaveCoreOptions::EnsureValidConfiguration() const { + Status error; + std::string error_str; + if (!m_threads_to_save.empty() && GetStyle() == lldb::eSaveCoreFull) { + error_str += "Cannot save a full core with a subset of threads\n"; ---------------- Jlalond wrote:
I think you're right, but I don't actually know how to return a warning to the error that isn't a log. If you can point me to an example I'll make sure to implement it! https://github.com/llvm/llvm-project/pull/100443 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits