[rfc] [0/9] Multi-target support

Ulrich Weigand
2007-10-26T01:15:01Z

Hello,

as promised, here's a set of patches to provide the --enable-targets=
configure option, allowing to support multiple (remote) targets within
a single GDB executable.

The basic implementation idea is simple: now that DEPRECATED_TM_FILE
is no longer in use, the only remaining settings provided by target-
specific makefile fragments *.mt are TDEPFILES, SIM, and SIM_OBS.

The patch series moves this information from the makefile fragments
into configure.tgt itself (removing the then-obsolete concept of
per-target makefile fragments in the process).

Once we have the list of target-dependent object files available in
configure.tgt, we can simply execute that script multiple times,
once for every desired target configuration, and simply accumulate
the total set of needed object files to support all of them.

Note that other target-specific information, in particular whether
to build a simulator or the gdbserver, remains determined by the
"master" target (specified via --target), not --enable-targets.
Also, only the master target can be used as native configuration
(if applicable). All other targets are supported as remote or
core file targets only.

I'm aware of one bug that still needs to be fixed: "info set"
crashes as show_mipsfpu_command unconditionally refers to
gdbarch_tdep (current_gdbarch), and assumes it to be formatted
as defined in mips-tdep.c. This is of course no longer guaranteed
to be the case ... It is certainly possible that other problems
of that sort still lurk.

I'd appreciate any feedback on the approach, and testers of
various combinations of host vs. --enable-targets=... settings
would certainly be welcome.

I've tested the full patch set with no regressions (except for
the mips issue above) with both a regular build and an
--enable-targets=all build on each of powerpc64-linux,
s390-ibm-linux, s390x-ibm-linux, and amd64-linux.