Go to file
Andrew Burgess fbf42f4e6d gdb: Print compatible information within print_xml_feature
The gdbsupport directory contains a helper class print_xml_feature
that is shared between gdb and gdbserver.  This class is used for
printing an XML representation of a target_desc object.

Currently this class doesn't have the ability to print the
<compatible> entities that can appear within a target description, I
guess no targets have needed that functionality yet.

The print_xml_feature classes API is based around operating on the
target_desc class, however, the sharing between gdb and gdbserver is
purely textural, we rely on their being a class called target_desc in
both gdb and gdbserver, but there is no shared implementation.  We
then have a set of functions declared that operate on an object of
type target_desc, and again these functions have completely separate
implementations.

Currently then the gdb version of target_desc contains a vector of
bfd_arch_info pointers which represents the compatible entries from a
target description.  The gdbserver version of target_desc has no such
information.  Further, the gdbserver code doesn't seem to include the
bfd headers, and so doesn't know about the bfd types.

I was reluctant to include the bfd headers into gdbserver just so I
can reference the compatible information, which isn't (currently) even
needed in gdbserver.

So, the approach I take in this patch is to wrap the compatible
information into a new helper class.  This class is declared in the
gdbsupport library, but implemented separately in both gdb and
gdbserver.

In gdbserver the class is empty.  The compatible information within
the gdbserver is an empty list, of empty classes.

In gdb the class contains a pointer to the bfd_arch_info object.

With this in place we can now add support to print_xml_feature for
printing the compatible information if it is present.  In the
gdbserver code this will never happen, as the gdbserver never has any
compatible information.  But in gdb, this code will trigger when
appropriate.

gdb/ChangeLog:

	* target-descriptions.c (class tdesc_compatible_info): New class.
	(struct target_desc): Change type of compatible vector.
	(tdesc_compatible_p): Update for change in type of
	target_desc::compatible.
	(tdesc_compatible_info_list): New function.
	(tdesc_compatible_info_arch_name): New function.
	(tdesc_add_compatible): Update for change in type of
	target_desc::compatible.
	(print_c_tdesc::visit_pre): Likewise.

gdbserver/ChangeLog:

	* tdesc.cc (struct tdesc_compatible_info): New struct.
	(tdesc_compatible_info_list): New function.
	(tdesc_compatible_info_arch_name): New function.

gdbsupport/ChangeLog:

	* tdesc.cc (print_xml_feature::visit_pre): Print compatible
	information.
	* tdesc.h (struct tdesc_compatible_info): Declare new struct.
	(tdesc_compatible_info_up): New typedef.
	(tdesc_compatible_info_list): Declare new function.
	(tdesc_compatible_info_arch_name): Declare new function.
2020-06-23 22:17:19 +01:00
bfd ELF: Add _bfd_elf_add_dynamic_tags 2020-06-23 05:07:45 -07:00
binutils Add a testcase for PR binutils/26160 2020-06-23 09:20:28 -07:00
config Sync config with GCC 2020-05-16 06:07:12 -07:00
contrib contrib: Update dg-extract-results.* from gcc 2020-05-15 11:41:22 +01:00
cpu cpu,gas,opcodes: remove no longer needed workaround from the BPF port 2020-06-04 16:17:42 +02:00
elfcpp [PATCH] gold: Set DF_1_PIE for -pie 2020-06-18 10:46:18 +01:00
etc texi2pod.pl: import support for @t{...} from gcc 2020-01-15 12:58:09 -05:00
gas RISC-V: Generate ELF priv attributes if priv instruction are explicited used. 2020-06-23 09:38:12 +08:00
gdb gdb: Print compatible information within print_xml_feature 2020-06-23 22:17:19 +01:00
gdbserver gdb: Print compatible information within print_xml_feature 2020-06-23 22:17:19 +01:00
gdbsupport gdb: Print compatible information within print_xml_feature 2020-06-23 22:17:19 +01:00
gnulib gdb: update gnulib import 2020-02-22 20:37:18 -05:00
gold PR 22843: ld, gold: Add --dependency-file option. 2020-06-23 12:01:24 -07:00
gprof Replace "if (x) free (x)" with "free (x)", gprof 2020-05-21 10:45:33 +09:30
include aarch64: Normalize and sort feature bit macros 2020-06-22 14:51:04 +01:00
intl Regen with blessed automake-1.15.1 2020-02-20 13:02:24 +10:30
ld PR 22843: ld, gold: Add --dependency-file option. 2020-06-23 12:01:24 -07:00
libctf libctf: Mark bswap_identity_64 inline function as static. 2020-03-11 17:48:49 +10:30
libdecnumber Merge config/ changes from GCC. 2018-10-31 17:16:41 +00:00
libiberty Sync config and libiberty with GCC 2020-05-12 18:37:03 -07:00
opcodes RISC-V: Report warning when linking the objects with different priv specs. 2020-06-22 10:01:14 +08:00
readline Fix compilation of Readline on mingw.org's MinGW 2019-12-23 16:28:32 +02:00
sim sim: ppc: netbsd: Sync signal names with NetBSD 9.99.49 2020-03-12 16:07:37 +01:00
texinfo
zlib Merge changes from GCC for the config/ directory 2020-02-19 17:51:24 +00:00
.cvsignore
.gitattributes
.gitignore Add profiling outputs to .gitignore 2019-12-26 06:54:58 +01:00
ar-lib Bump to autoconf 2.69 and automake 1.15.1 2018-06-19 16:55:06 -04:00
ChangeLog Since the pdp11-aout target does not support gdb, gdbserver or gprof these should be excluded in configure. 2020-04-21 10:27:50 +01:00
compile
config-ml.in
config.guess Update top level config files with copies from the official repository. 2020-01-18 13:43:19 +00:00
config.rpath
config.sub Update top level config files with copies from the official repository. 2020-01-18 13:43:19 +00:00
configure Since the pdp11-aout target does not support gdb, gdbserver or gprof these should be excluded in configure. 2020-04-21 10:27:50 +01:00
configure.ac Since the pdp11-aout target does not support gdb, gdbserver or gprof these should be excluded in configure. 2020-04-21 10:27:50 +01:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.LIBGLOSS
COPYING.NEWLIB
depcomp
djunpack.bat
install-sh
libtool.m4 Bump to autoconf 2.69 and automake 1.15.1 2018-06-19 16:55:06 -04:00
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS Move gdbserver to top level 2020-02-07 08:42:25 -07:00
Makefile.def Change gdbserver to use existing gdbsupport 2020-03-12 13:32:16 -06:00
Makefile.in Change gdbserver to use existing gdbsupport 2020-03-12 13:32:16 -06:00
Makefile.tpl Revert "Sync top level files with versions from gcc." 2019-05-30 11:17:19 +01:00
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
multilib.am Merge autoconf / automake update changes from GCC. 2018-10-31 17:10:56 +00:00
README
README-maintainer-mode Bump to autoconf 2.69 and automake 1.15.1 2018-06-19 16:55:06 -04:00
setup.com
src-release.sh Move gdbserver to top level 2020-02-07 08:42:25 -07:00
symlink-tree
test-driver Bump to autoconf 2.69 and automake 1.15.1 2018-06-19 16:55:06 -04:00
ylwrap

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.

If you are receiving this as part of a GDB release, see the file gdb/README.
If with a binutils release, see binutils/README;  if with a libg++ release,
see libg++/README, etc.  That'll give you info about this
package -- supported targets, how to use it, how to report bugs, etc.

It is now possible to automatically configure and build a variety of
tools with one command.  To build all of the tools contained herein,
run the ``configure'' script here, e.g.:

	./configure 
	make

To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
	make install

(If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''.  You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)

If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make.  For example (assuming sh/bash/ksh):

	CC=gcc ./configure
	make

A similar example using csh:

	setenv CC gcc
	./configure
	make

Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.