diff options
Diffstat (limited to 'gdb/thread-iter.c')
-rw-r--r-- | gdb/thread-iter.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/gdb/thread-iter.c b/gdb/thread-iter.c index 636d889..a6bbc50 100644 --- a/gdb/thread-iter.c +++ b/gdb/thread-iter.c @@ -58,16 +58,22 @@ all_threads_iterator::advance () bool all_matching_threads_iterator::m_inf_matches () { - return (m_filter_ptid == minus_one_ptid - || m_filter_ptid.pid () == m_inf->pid); + return ((m_filter_target == nullptr + || m_filter_target == m_inf->process_target ()) + && (m_filter_ptid == minus_one_ptid + || m_filter_ptid.pid () == m_inf->pid)); } /* See thread-iter.h. */ all_matching_threads_iterator::all_matching_threads_iterator - (ptid_t filter_ptid) - : m_filter_ptid (filter_ptid) + (process_stratum_target *filter_target, ptid_t filter_ptid) + : m_filter_target (filter_target), + m_filter_ptid (filter_ptid) { + gdb_assert ((filter_target == nullptr && filter_ptid == minus_one_ptid) + || filter_target->stratum () == process_stratum); + m_thr = nullptr; for (m_inf = inferior_list; m_inf != NULL; m_inf = m_inf->next) if (m_inf_matches ()) |