mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-12-14 15:50:34 +00:00
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
@ -1,3 +1,10 @@
|
||||
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.
|
||||
|
||||
2011-09-13 Pedro Alves <pedro@codesourcery.com>
|
||||
|
||||
* breakpoint.c (update_watchpoint): Handle the case of the
|
||||
|
@ -615,6 +615,11 @@ extern void set_current_inferior (struct inferior *);
|
||||
|
||||
extern struct cleanup *save_current_inferior (void);
|
||||
|
||||
/* Traverse all inferiors. */
|
||||
|
||||
#define ALL_INFERIORS(I) \
|
||||
for ((I) = inferior_list; (I); (I) = (I)->next)
|
||||
|
||||
extern struct inferior *inferior_list;
|
||||
|
||||
/* Prune away automatically added inferiors that aren't required
|
||||
|
@ -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…
Reference in New Issue
Block a user