Differences between revisions 7 and 8
Revision 7 as of 2013-10-23 16:30:17
Size: 1758
Editor: TomTromey
Comment: mention target dcache
Revision 8 as of 2013-10-29 18:00:06
Size: 2146
Editor: TomTromey
Comment: update to show which things have been completed on the branch
Deletions are marked like this. Additions are marked like this.
Line 12: Line 12:
 * Parameterize global state for {{{corelow.c}}} (this is done on the branch)  * --(Parameterize global state for {{{corelow.c}}} (this is done on the branch))--
Line 14: Line 14:
 * ... and ideally, likewise for all the targets. However, this is hard, particularly for sim. I expect to do just the subset commonly used by distro users.  * ... and ideally, likewise for all the targets. However, this is hard, particularly for sim. I expect to do just the subset commonly used by distro users.  (Partly done: remote and core are handled; but I think ctf, tfile, and perhaps record are not)
Line 16: Line 16:
 * Get rid of {{{target_ops::beneath}}}. This lets us reuse a {{{target_ops}}} in multiple target stacks.  * --(Get rid of {{{target_ops::beneath}}}. This lets us reuse a {{{target_ops}}} in multiple target stacks.)--
Line 18: Line 18:
 * Make the target stack be reference counted; and attach it to the program space.  * --(Make the target stack be reference counted; and attach it to the program space.)--
Line 20: Line 20:
 * Give the user a way to request a new target. Currently I have {{{add-inferior -new-target}}}, but it isn't clear this is the best way.  * --(Give the user a way to request a new target. Currently I have {{{add-inferior -new-target}}}, but it isn't clear this is the best way.)--
Line 22: Line 22:
 * The branch also has a big patch to split {{{target_ops}}} into state and vtable components. This isn't strictly needed but it makes gdb cleaner.  * --(The branch also has a big patch to split {{{target_ops}}} into state and vtable components. This isn't strictly needed but it makes gdb cleaner.)--
Line 24: Line 24:
 * Fix up the target dcache to be per-target-stack  * --(Fix up the target dcache to be per-target-stack. (Fixed by Yao's patch which will go into master.))--
Line 26: Line 26:
 * Change gdb to handle the same PID coming from multiple targets  * Change gdb to handle the same PID coming from multiple targets. The basic change to ptid is done here, more may be required.
Line 30: Line 30:
 * Maybe this requires a fix for Sourceware:PR7251, making it possible for {{{target}}} commands to be interrupted. At the very least it seems like a nice-to-have.  * Maybe this requires a fix for Sourceware:PR7251, making it possible for {{{target}}} commands to be interrupted. At the very least it seems like a nice-to-have.  We possibly want to allow the "&" suffix for target commands to make them connect asynchronously.
Line 32: Line 32:
 * Also see Sourceware:PR15712 - making {{{target-async}}} enabled by default. Async is needed for multi-target to work nicely.  * --(Also see Sourceware:PR15712 - making {{{target-async}}} enabled by default. Async is needed for multi-target to work nicely.)--

 * Write tests and documentation

Multiple Targets

This page describes the multi-target project, aka PR7250. This is in the ProjectArcher repository, on the tromey/multi-target branch.

Goal

This project aims to make it possible for users to connect to multiple targets at once. For example, a user could connect to multiple gdbservers at the same time; or freely mix native, remote, and core-file debugging.

Plan

  • Parameterize global state for corelow.c (this is done on the branch)

  • ... and ideally, likewise for all the targets. However, this is hard, particularly for sim. I expect to do just the subset commonly used by distro users. (Partly done: remote and core are handled; but I think ctf, tfile, and perhaps record are not)
  • Get rid of target_ops::beneath. This lets us reuse a target_ops in multiple target stacks.

  • Make the target stack be reference counted; and attach it to the program space.

  • Give the user a way to request a new target. Currently I have add-inferior -new-target, but it isn't clear this is the best way.

  • The branch also has a big patch to split target_ops into state and vtable components. This isn't strictly needed but it makes gdb cleaner.

  • Fix up the target dcache to be per-target-stack. (Fixed by Yao's patch which will go into master.)

  • Change gdb to handle the same PID coming from multiple targets. The basic change to ptid is done here, more may be required.
  • Need to iterate across targets in various cases: stop processes on all targets when one stops (in all-stop); resuming; maybe C-c handling; quit
  • Maybe this requires a fix for PR7251, making it possible for target commands to be interrupted. At the very least it seems like a nice-to-have. We possibly want to allow the "&" suffix for target commands to make them connect asynchronously.

  • Also see PR15712 - making target-async enabled by default. Async is needed for multi-target to work nicely.

  • Write tests and documentation


OngoingWork

None: MultiTarget (last edited 2014-02-19 19:44:42 by TomTromey)

All content (C) 2008 Free Software Foundation. For terms of use, redistribution, and modification, please see the WikiLicense page.