X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fprocess-stratum-target.c;h=9eff5ab56eaafe8c3963c914c83f67939e997421;hb=f2e1c129f8f0985ec80e6cf775cf3e4afbced6fa;hp=d6bc6abc4bb02724e02ec02ab4472ca775970333;hpb=b811d2c2920ddcb1adcd438da38e90912b31f45f;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/process-stratum-target.c b/gdb/process-stratum-target.c index d6bc6abc4b..9eff5ab56e 100644 --- a/gdb/process-stratum-target.c +++ b/gdb/process-stratum-target.c @@ -29,7 +29,7 @@ struct address_space * process_stratum_target::thread_address_space (ptid_t ptid) { /* Fall-back to the "main" address space of the inferior. */ - inferior *inf = find_inferior_ptid (ptid); + inferior *inf = find_inferior_ptid (this, ptid); if (inf == NULL || inf->aspace == NULL) internal_error (__FILE__, __LINE__, @@ -43,7 +43,7 @@ process_stratum_target::thread_address_space (ptid_t ptid) struct gdbarch * process_stratum_target::thread_architecture (ptid_t ptid) { - inferior *inf = find_inferior_ptid (ptid); + inferior *inf = find_inferior_ptid (this, ptid); gdb_assert (inf != NULL); return inf->gdbarch; } @@ -77,9 +77,34 @@ process_stratum_target::has_registers () } bool -process_stratum_target::has_execution (ptid_t the_ptid) +process_stratum_target::has_execution (inferior *inf) { - /* If there's no thread selected, then we can't make it run through - hoops. */ - return the_ptid != null_ptid; + /* If there's a process running already, we can't make it run + through hoops. */ + return inf->pid != 0; +} + +/* See process-stratum-target.h. */ + +std::set +all_non_exited_process_targets () +{ + /* Inferiors may share targets. To eliminate duplicates, use a set. */ + std::set targets; + for (inferior *inf : all_non_exited_inferiors ()) + targets.insert (inf->process_target ()); + + return targets; +} + +/* See process-stratum-target.h. */ + +void +switch_to_target_no_thread (process_stratum_target *target) +{ + for (inferior *inf : all_inferiors (target)) + { + switch_to_inferior_no_thread (inf); + break; + } }