From 81adfcedc899da6e7641d2c2d6aad68f60d97735 Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Mon, 15 Oct 2007 19:19:18 +0000 Subject: * target-descriptions.c (tdesc_predefined_types): New. (tdesc_named_type): Use it. (tdesc_type_id, maint_print_c_tdesc_cmd): New functions. (_intialize_target_descriptions): Register "maint print c-tdesc". * features/Makefile (XMLTOC, CFILES, GDB): New macros. (cfiles, %.c): New rules. * features/arm-with-iwmmxt.c, features/mips-linux.c, features/mips64-linux.c: New generated files. * arm-linux-nat.c: Include preparsed description instead of "xml-support.h". (super_xfer_partial, arm_linux_xfer_partial): Remove. (arm_linux_read_description): New function. (_initialize_arm_linux_nat): Set to_read_description instead of to_xfer_partial. Initialize preparsed description. * config/arm/linux.mh (TDEP_XML): Delete. * mips-linux-nat.c: Include preparsed descriptions instead of "xml-support.h". (super_xfer_partial, mips_linux_xfer_partial): Remove. (mips_linux_read_description): New function. (_initialize_mips_linux_nat): Set to_read_description instead of to_xfer_partial. Initialize preparsed description. * config/mips/linux.mh (TDEP_XML): Delete. * Makefile.in (XMLFILES): Remove $(TDEP_XML). (features_headers, arm_with_iwmmxt_c, mips_linux_c) (mips64_linux_c): New macros. (arm-linux-nat.o, mips-linux-nat.o): Update. * gdb.texinfo (Maintenance Commands): Document "maint print c-tdesc". --- gdb/arm-linux-nat.c | 59 +++++++++++++++++++---------------------------------- 1 file changed, 21 insertions(+), 38 deletions(-) (limited to 'gdb/arm-linux-nat.c') diff --git a/gdb/arm-linux-nat.c b/gdb/arm-linux-nat.c index 6f1056872a4..bc005934a9b 100644 --- a/gdb/arm-linux-nat.c +++ b/gdb/arm-linux-nat.c @@ -25,7 +25,6 @@ #include "target.h" #include "linux-nat.h" #include "target-descriptions.h" -#include "xml-support.h" #include "arm-tdep.h" #include "arm-linux-tdep.h" @@ -41,6 +40,8 @@ /* Defines ps_err_e, struct ps_prochandle. */ #include "gdb_proc_service.h" +#include "features/arm-with-iwmmxt.c" + #ifndef PTRACE_GET_THREAD_AREA #define PTRACE_GET_THREAD_AREA 22 #endif @@ -571,42 +572,23 @@ get_linux_version (unsigned int *vmajor, return ((*vmajor << 16) | (*vminor << 8) | *vrelease); } -static LONGEST (*super_xfer_partial) (struct target_ops *, enum target_object, - const char *, gdb_byte *, const gdb_byte *, - ULONGEST, LONGEST); - -static LONGEST -arm_linux_xfer_partial (struct target_ops *ops, - enum target_object object, - const char *annex, - gdb_byte *readbuf, const gdb_byte *writebuf, - ULONGEST offset, LONGEST len) +static const struct target_desc * +arm_linux_read_description (struct target_ops *ops) { - if (object == TARGET_OBJECT_AVAILABLE_FEATURES) - { - if (annex != NULL && strcmp (annex, "target.xml") == 0) - { - int ret; - char regbuf[IWMMXT_REGS_SIZE]; - - ret = ptrace (PTRACE_GETWMMXREGS, GET_THREAD_ID (inferior_ptid), - 0, regbuf); - if (ret < 0) - arm_linux_has_wmmx_registers = 0; - else - arm_linux_has_wmmx_registers = 1; - - if (arm_linux_has_wmmx_registers) - annex = "arm-with-iwmmxt.xml"; - else - return -1; - } - - return xml_builtin_xfer_partial (annex, readbuf, writebuf, offset, len); - } + int ret; + char regbuf[IWMMXT_REGS_SIZE]; - return super_xfer_partial (ops, object, annex, readbuf, writebuf, - offset, len); + ret = ptrace (PTRACE_GETWMMXREGS, GET_THREAD_ID (inferior_ptid), + 0, regbuf); + if (ret < 0) + arm_linux_has_wmmx_registers = 0; + else + arm_linux_has_wmmx_registers = 1; + + if (arm_linux_has_wmmx_registers) + return tdesc_arm_with_iwmmxt; + else + return NULL; } void _initialize_arm_linux_nat (void); @@ -625,10 +607,11 @@ _initialize_arm_linux_nat (void) t->to_fetch_registers = arm_linux_fetch_inferior_registers; t->to_store_registers = arm_linux_store_inferior_registers; - /* Override the default to_xfer_partial. */ - super_xfer_partial = t->to_xfer_partial; - t->to_xfer_partial = arm_linux_xfer_partial; + t->to_read_description = arm_linux_read_description; /* Register the target. */ linux_nat_add_target (t); + + /* Initialize the standard target descriptions. */ + initialize_tdesc_arm_with_iwmmxt (); } -- cgit v1.2.1