diff --git a/lldb/include/lldb/Target/Process.h b/lldb/include/lldb/Target/Process.h index 8bb8b85e22fb..ca7f4b545e31 100644 --- a/lldb/include/lldb/Target/Process.h +++ b/lldb/include/lldb/Target/Process.h @@ -2116,7 +2116,7 @@ public: // Queue Queries - void UpdateQueueListIfNeeded(); + virtual void UpdateQueueListIfNeeded(); QueueList &GetQueueList() { UpdateQueueListIfNeeded(); diff --git a/lldb/source/Plugins/Process/scripted/ScriptedProcess.cpp b/lldb/source/Plugins/Process/scripted/ScriptedProcess.cpp index 576e62022098..58629a5406f6 100644 --- a/lldb/source/Plugins/Process/scripted/ScriptedProcess.cpp +++ b/lldb/source/Plugins/Process/scripted/ScriptedProcess.cpp @@ -20,6 +20,7 @@ #include "lldb/Interpreter/ScriptInterpreter.h" #include "lldb/Interpreter/ScriptedMetadata.h" #include "lldb/Target/MemoryRegionInfo.h" +#include "lldb/Target/Queue.h" #include "lldb/Target/RegisterContext.h" #include "lldb/Utility/LLDBLog.h" #include "lldb/Utility/State.h" @@ -497,6 +498,17 @@ lldb_private::StructuredData::DictionarySP ScriptedProcess::GetMetadata() { return metadata_sp; } +void ScriptedProcess::UpdateQueueListIfNeeded() { + CheckInterpreterAndScriptObject(); + for (ThreadSP thread_sp : Threads()) { + if (const char *queue_name = thread_sp->GetQueueName()) { + QueueSP queue_sp = std::make_shared( + m_process->shared_from_this(), thread_sp->GetQueueID(), queue_name); + m_queue_list.AddQueue(queue_sp); + } + } +} + ScriptedProcessInterface &ScriptedProcess::GetInterface() const { return m_interpreter->GetScriptedProcessInterface(); } diff --git a/lldb/source/Plugins/Process/scripted/ScriptedProcess.h b/lldb/source/Plugins/Process/scripted/ScriptedProcess.h index 350c42772476..6e13e68c4828 100644 --- a/lldb/source/Plugins/Process/scripted/ScriptedProcess.h +++ b/lldb/source/Plugins/Process/scripted/ScriptedProcess.h @@ -72,6 +72,8 @@ public: lldb_private::StructuredData::DictionarySP GetMetadata() override; + void UpdateQueueListIfNeeded() override; + protected: ScriptedProcess(lldb::TargetSP target_sp, lldb::ListenerSP listener_sp, const ScriptedMetadata &scripted_metadata, Status &error);