binutils-gdb/gdb/features/arm-with-neon.c
Yao Qi 82c40d4b1d Set architecture to arm in arm-*.xml files
This patch is to add the following line to various arm target description
xml files,

<architecture>arm</architecture>

in order to fix problems I've seen on aarch64 multi-arch debugging,

 detach^M
 Detaching from program: build-gdb/gdb/testsuite/gdb.base/attach, process 17145^M
 (gdb) PASS: gdb.base/attach.exp: attach1 detach file^M
 No executable file now.^M
 Architecture of file not recognized.^M
 (gdb) FAIL: gdb.base/attach.exp: attach1, purging symbols after detach

Without this patch, struct target_desc *tdesc_* are not initialised
properly, that is, fields arch and osabi in 'struct target_desc' are
not set properly.  This doesn't cause any problems on single arch
debugging, because arch-utils.c:gdbarch_info_fill will guess correctly.
However, in multi-arch debugging, gdbarch_info_fill gets the aarch64
arch, but the target description is for arm (because the current
inferior is 32-bit arm).

It is a surprise to me we didn't set architecture to "arm" before in *.xml
files, and I didn't find out why didn't do so.  AFAICS,
gdb/features/arm-with-iwmmxt.xml was added firstly (in patch
https://sourceware.org/ml/gdb-patches/2007-01/msg00593.html)
which had <architecture>iwmmxt</architecture>, however, afterwards,
architecture isn't set anymore in features/arm-*.xml files (in patches
https://sourceware.org/ml/gdb-patches/2009-07/msg00689.html and
https://sourceware.org/ml/gdb-patches/2010-08/msg00225.html).

gdb:

2015-07-07  Yao Qi  <yao.qi@linaro.org>

	* features/arm-with-m-fpa-layout.xml: Set architecture to arm.
	* features/arm-with-m-fpa-layout.c: Regenerated.
	* features/arm-with-m-vfp-d16.xml: Likewise.
	* features/arm-with-m-vfp-d16.c: Regenerated.
	* features/arm-with-m.xml: Likewise.
	* features/arm-with-m.c: Regenerated.
	* features/arm-with-neon.xml: Likewise.
	* features/arm-with-neon.c: Regenerated.
	* features/arm-with-vfpv2.xml: Likewise.
	* features/arm-with-vfpv2.c: Regenerated.
	* features/arm-with-vfpv3.xml: Likewise.
	* features/arm-with-vfpv3.c: Regenerated.
2015-07-07 16:58:19 +01:00

75 lines
3.9 KiB
C

/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
Original: arm-with-neon.xml */
#include "defs.h"
#include "osabi.h"
#include "target-descriptions.h"
struct target_desc *tdesc_arm_with_neon;
static void
initialize_tdesc_arm_with_neon (void)
{
struct target_desc *result = allocate_target_description ();
struct tdesc_feature *feature;
set_tdesc_architecture (result, bfd_scan_arch ("arm"));
feature = tdesc_create_feature (result, "org.gnu.gdb.arm.core");
tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "sp", 13, 1, NULL, 32, "data_ptr");
tdesc_create_reg (feature, "lr", 14, 1, NULL, 32, "int");
tdesc_create_reg (feature, "pc", 15, 1, NULL, 32, "code_ptr");
tdesc_create_reg (feature, "cpsr", 25, 1, NULL, 32, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.arm.vfp");
tdesc_create_reg (feature, "d0", 26, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d1", 27, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d2", 28, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d3", 29, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d4", 30, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d5", 31, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d6", 32, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d7", 33, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d8", 34, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d9", 35, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d10", 36, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d11", 37, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d12", 38, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d13", 39, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d14", 40, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d15", 41, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d16", 42, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d17", 43, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d18", 44, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d19", 45, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d20", 46, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d21", 47, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d22", 48, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d23", 49, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d24", 50, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d25", 51, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d26", 52, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d27", 53, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d28", 54, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d29", 55, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d30", 56, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d31", 57, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "fpscr", 58, 1, "float", 32, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.arm.neon");
tdesc_arm_with_neon = result;
}