2011-09-13 Pedro Alves <pedro@codesourcery.com>
* inferior.h (ALL_INFERIORS): New. * linux-thread-db.c (thread_db_find_new_threads_2): Remove check for a stopped thread. (thread_db_find_new_threads): Look for threads in all inferiors.
This commit is contained in:
parent
a1398e0c56
commit
c65b3e0d43
3 changed files with 28 additions and 18 deletions
|
@ -1552,20 +1552,6 @@ thread_db_find_new_threads_2 (ptid_t ptid, int until_no_new)
|
|||
int pid = ptid_get_pid (ptid);
|
||||
int i, loop;
|
||||
|
||||
if (target_has_execution)
|
||||
{
|
||||
struct lwp_info *lp;
|
||||
|
||||
/* In linux, we can only read memory through a stopped lwp. */
|
||||
ALL_LWPS (lp, ptid)
|
||||
if (lp->stopped && ptid_get_pid (lp->ptid) == pid)
|
||||
break;
|
||||
|
||||
if (!lp)
|
||||
/* There is no stopped thread. Bail out. */
|
||||
return;
|
||||
}
|
||||
|
||||
info = get_thread_db_info (GET_PID (ptid));
|
||||
|
||||
/* Access an lwp we know is stopped. */
|
||||
|
@ -1607,13 +1593,25 @@ static void
|
|||
thread_db_find_new_threads (struct target_ops *ops)
|
||||
{
|
||||
struct thread_db_info *info;
|
||||
struct inferior *inf;
|
||||
|
||||
info = get_thread_db_info (GET_PID (inferior_ptid));
|
||||
ALL_INFERIORS (inf)
|
||||
{
|
||||
struct thread_info *thread;
|
||||
|
||||
if (info == NULL)
|
||||
return;
|
||||
if (inf->pid == 0)
|
||||
continue;
|
||||
|
||||
thread_db_find_new_threads_1 (inferior_ptid);
|
||||
info = get_thread_db_info (inf->pid);
|
||||
if (info == NULL)
|
||||
continue;
|
||||
|
||||
thread = any_live_thread_of_process (inf->pid);
|
||||
if (thread == NULL || thread->executing)
|
||||
continue;
|
||||
|
||||
thread_db_find_new_threads_1 (thread->ptid);
|
||||
}
|
||||
|
||||
if (target_has_execution)
|
||||
iterate_over_lwps (minus_one_ptid /* iterate over all */,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue