This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
RE: [PATCH v2 1/4] arc: Migrate to new target features
- From: Anton Kolesov <Anton dot Kolesov at synopsys dot com>
- To: "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>
- Cc: Francois Bedard <Francois dot Bedard at synopsys dot com>
- Date: Wed, 8 Nov 2017 11:13:42 +0000
- Subject: RE: [PATCH v2 1/4] arc: Migrate to new target features
- Authentication-results: sourceware.org; auth=none
- Deferred-delivery: Wed, 8 Nov 2017 11:12:27 +0000
- References: <20171012012859.GJ8425@1170ee0b50d5> <20171026114020.10213-1-Anton.Kolesov@synopsys.com>
Ping.
Anton
> -----Original Message-----
> From: Anton Kolesov [mailto:Anton.Kolesov@synopsys.com]
> Sent: Thursday, October 26, 2017 14:40
> To: gdb-patches@sourceware.org
> Cc: Anton Kolesov <Anton.Kolesov@synopsys.com>; Francois Bedard
> <Francois.Bedard@synopsys.com>
> Subject: [PATCH v2 1/4] arc: Migrate to new target features
>
> Changes in V2:
>
> - Removed regformats .dat from this series.
> - Removed selection of Linux-specific target description from arc-tdep.c. It is
> now happens in appropriate locations in arc-linux-tdep.c and arc-linux-nat.c.
> (with migration to new target description those files only specify if target
> is Linux or not).
> - Use new mechanism to manage target description on per feature basis.
>
> --
>
> This patch replaces usage of target descriptions in ARC, where the whole
> description is fixed in XML, with new target descriptions where XML
> describes individual features, and GDB assembles those features into actual
> target description.
>
> gdb/ChangeLog:
> yyyy-mm-dd Anton Kolesov <Anton.Kolesov@synopsys.com>
>
> * Makefile.in: Add arch/arc.o
> * configure.tgt: Likewise.
> * arc-tdep.c (arc_tdesc_init): Use arc_create_target_description.
> (_initialize_arc_tdep): Don't initialize old target descriptions.
> * arch/arc.c: New file.
> * arch/arc.h: Likewise.
> * features/Makefile: Replace old target descriptions with new.
> * features/arc-arcompact.c: Remove.
> * features/arc-arcompact.xml: Likewise.
> * features/arc-v2.c: Likewise
> * features/arc-v2.xml: Likewise
> * features/arc/aux-arcompact.xml: New file.
> * features/arc/aux-v2.xml: Likewise.
> * features/arc/core-arcompact.xml: Likewise.
> * features/arc/core-v2.xml: Likewise.
> * features/arc/aux-arcompact.c: Generate.
> * features/arc/aux-v2.c: Likewise.
> * features/arc/core-arcompact.c: Likewise.
> * features/arc/core-v2.c: Likewise.
> * target-descriptions (maint_print_c_tdesc_cmd): Support ARC
> features.
> ---
> gdb/Makefile.in | 3 ++
> gdb/arc-tdep.c | 23 ++--------
> gdb/arch/arc.c | 71 ++++++++++++++++++++++++++++
> gdb/arch/arc.h | 21 +++++++++
> gdb/configure.tgt | 2 +-
> gdb/features/Makefile | 9 ++--
> gdb/features/arc-arcompact.c | 75 ------------------------------
> gdb/features/arc-arcompact.xml | 85 ----------------------------------
> gdb/features/arc-v2.c | 79 -------------------------------
> gdb/features/arc-v2.xml | 92 -------------------------------------
> gdb/features/arc/aux-arcompact.c | 32 +++++++++++++
> gdb/features/arc/aux-arcompact.xml | 28 +++++++++++
> gdb/features/arc/aux-v2.c | 36 +++++++++++++++
> gdb/features/arc/aux-v2.xml | 32 +++++++++++++
> gdb/features/arc/core-arcompact.c | 47 +++++++++++++++++++
> gdb/features/arc/core-arcompact.xml | 58 +++++++++++++++++++++++
> gdb/features/arc/core-v2.c | 47 +++++++++++++++++++
> gdb/features/arc/core-v2.xml | 61 ++++++++++++++++++++++++
> gdb/target-descriptions.c | 4 +-
> 19 files changed, 450 insertions(+), 355 deletions(-) create mode 100644
> gdb/arch/arc.c create mode 100644 gdb/arch/arc.h delete mode 100644
> gdb/features/arc-arcompact.c delete mode 100644 gdb/features/arc-
> arcompact.xml delete mode 100644 gdb/features/arc-v2.c delete mode
> 100644 gdb/features/arc-v2.xml create mode 100644 gdb/features/arc/aux-
> arcompact.c create mode 100644 gdb/features/arc/aux-arcompact.xml
> create mode 100644 gdb/features/arc/aux-v2.c create mode 100644
> gdb/features/arc/aux-v2.xml create mode 100644 gdb/features/arc/core-
> arcompact.c create mode 100644 gdb/features/arc/core-arcompact.xml
> create mode 100644 gdb/features/arc/core-v2.c create mode 100644
> gdb/features/arc/core-v2.xml
>
> diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 6cb0970..60d049a 100644
> --- a/gdb/Makefile.in
> +++ b/gdb/Makefile.in
> @@ -795,6 +795,7 @@ ALL_64_TARGET_OBS = \ # All other target-
> dependent objects files (used with --enable-targets=all).
> ALL_TARGET_OBS = \
> arc-tdep.o \
> + arch/arc.o \
> arch/arm.o \
> arch/arm-get-next-pcs.o \
> arch/arm-linux.o \
> @@ -1043,6 +1044,7 @@ SFILES = \
> agent.c \
> annotate.c \
> arch-utils.c \
> + arch/arc.c \
> arch/i386.c \
> auto-load.c \
> auxv.c \
> @@ -1515,6 +1517,7 @@ HFILES_NO_SRCDIR = \
> xml-tdesc.h \
> xtensa-tdep.h \
> arch/aarch64-insn.h \
> + arch/arc.h \
> arch/arm.h \
> arch/i386.h \
> cli/cli-cmds.h \
> diff --git a/gdb/arc-tdep.c b/gdb/arc-tdep.c index 09572ac..6ed30da 100644
> --- a/gdb/arc-tdep.c
> +++ b/gdb/arc-tdep.c
> @@ -28,21 +28,20 @@
> #include "gdbcore.h"
> #include "gdbcmd.h"
> #include "objfiles.h"
> +#include "osabi.h"
> #include "prologue-value.h"
> +#include "target-descriptions.h"
> #include "trad-frame.h"
>
> /* ARC header files. */
> #include "opcode/arc.h"
> #include "opcodes/arc-dis.h"
> #include "arc-tdep.h"
> +#include "arch/arc.h"
>
> /* Standard headers. */
> #include <algorithm>
>
> -/* Default target descriptions. */
> -#include "features/arc-v2.c"
> -#include "features/arc-arcompact.c"
> -
> /* The frame unwind cache for ARC. */
>
> struct arc_frame_cache
> @@ -1793,18 +1792,7 @@ arc_tdesc_init (struct gdbarch_info info, const
> struct target_desc **tdesc,
> /* If target doesn't provide a description - use default one. */
> if (!tdesc_has_registers (tdesc_loc))
> {
> - if (is_arcv2)
> - {
> - tdesc_loc = tdesc_arc_v2;
> - if (arc_debug)
> - debug_printf ("arc: Using default register set for ARC v2.\n");
> - }
> - else
> - {
> - tdesc_loc = tdesc_arc_arcompact;
> - if (arc_debug)
> - debug_printf ("arc: Using default register set for ARCompact.\n");
> - }
> + tdesc_loc = arc_create_target_description (arc_debug, is_arcv2);
> }
> else
> {
> @@ -2166,9 +2154,6 @@ _initialize_arc_tdep (void) {
> gdbarch_register (bfd_arch_arc, arc_gdbarch_init, arc_dump_tdep);
>
> - initialize_tdesc_arc_v2 ();
> - initialize_tdesc_arc_arcompact ();
> -
> /* Register ARC-specific commands with gdb. */
>
> /* Add root prefix command for "maintenance print arc" commands. */ diff
> --git a/gdb/arch/arc.c b/gdb/arch/arc.c new file mode 100644 index
> 0000000..8f0d8d6
> --- /dev/null
> +++ b/gdb/arch/arc.c
> @@ -0,0 +1,71 @@
> +/* Copyright (C) 2017 Free Software Foundation, Inc.
> +
> + This file is part of GDB.
> +
> + This program is free software; you can redistribute it and/or modify
> + it under the terms of the GNU General Public License as published by
> + the Free Software Foundation; either version 3 of the License, or
> + (at your option) any later version.
> +
> + This program is distributed in the hope that it will be useful,
> + but WITHOUT ANY WARRANTY; without even the implied warranty of
> + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + GNU General Public License for more details.
> +
> + You should have received a copy of the GNU General Public License
> + along with this program. If not, see
> + <http://www.gnu.org/licenses/>. */
> +
> +
> +#include "common-defs.h"
> +#include <stdlib.h>
> +
> +#include "arc.h"
> +
> +/* Target description features. */
> +#include "features/arc/core-v2.c"
> +#include "features/arc/aux-v2.c"
> +#include "features/arc/core-arcompact.c"
> +#include "features/arc/aux-arcompact.c"
> +
> +/* Create target description for a target with specified parameters.
> + PRINT_DEBUG defines whether to print debug messages to the stderr
> stream.
> + IS_ARCV2 defines if this is an ARCv2 (ARC EM or ARC HS) target or
> ARCompact
> + (ARC600 or ARC700); there is no use for more specific information about
> + target processor. */
> +
> +target_desc *
> +arc_create_target_description (bool print_debug, bool is_arcv2) {
> + target_desc *tdesc = allocate_target_description ();
> +
> + if (print_debug)
> + debug_printf ("arc: Creating target description, "
> + "is_arcv2=%i\n", is_arcv2);
> +
> + long regnum = 0;
> +
> +#ifndef IN_PROCESS_AGENT
> + if (is_arcv2)
> + {
> + set_tdesc_architecture (tdesc, "arc:ARCv2");
> + }
> + else
> + {
> + set_tdesc_architecture (tdesc, "arc:ARC700");
> + }
> +#endif
> +
> + if (is_arcv2)
> + {
> + regnum = create_feature_arc_core_v2 (tdesc, regnum);
> + regnum = create_feature_arc_aux_v2 (tdesc, regnum);
> + }
> + else
> + {
> + regnum = create_feature_arc_core_arcompact (tdesc, regnum);
> + regnum = create_feature_arc_aux_arcompact (tdesc, regnum);
> + }
> +
> + return tdesc;
> +}
> +
> diff --git a/gdb/arch/arc.h b/gdb/arch/arc.h new file mode 100644 index
> 0000000..2d1828e
> --- /dev/null
> +++ b/gdb/arch/arc.h
> @@ -0,0 +1,21 @@
> +/* Copyright (C) 2017 Free Software Foundation, Inc.
> +
> + This file is part of GDB.
> +
> + This program is free software; you can redistribute it and/or modify
> + it under the terms of the GNU General Public License as published by
> + the Free Software Foundation; either version 3 of the License, or
> + (at your option) any later version.
> +
> + This program is distributed in the hope that it will be useful,
> + but WITHOUT ANY WARRANTY; without even the implied warranty of
> + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + GNU General Public License for more details.
> +
> + You should have received a copy of the GNU General Public License
> + along with this program. If not, see
> + <http://www.gnu.org/licenses/>. */
> +
> +#include "tdesc.h"
> +
> +target_desc *arc_create_target_description (bool print_debug, bool
> +is_arcv2);
> +
> diff --git a/gdb/configure.tgt b/gdb/configure.tgt index 1fce079..8d26526
> 100644
> --- a/gdb/configure.tgt
> +++ b/gdb/configure.tgt
> @@ -55,7 +55,7 @@ alpha*-*-*)
>
> arc*-*-*)
> # Target: Unidentified ARC target
> - cpu_obs="arc-tdep.o"
> + cpu_obs="arc-tdep.o arch/arc.o"
> ;;
>
> arm*-*-*)
> diff --git a/gdb/features/Makefile b/gdb/features/Makefile index
> 2d8e3fe..e30a8bd 100644
> --- a/gdb/features/Makefile
> +++ b/gdb/features/Makefile
> @@ -120,8 +120,6 @@ OUTPUTS = $(patsubst %,$(outdir)/%.dat,$(WHICH))
> # to make on the command line.
> XMLTOC = \
> aarch64.xml \
> - arc-v2.xml \
> - arc-arcompact.xml \
> arm/arm-with-iwmmxt.xml \
> arm/arm-with-m-fpa-layout.xml \
> arm/arm-with-m-vfp-d16.xml \
> @@ -207,7 +205,12 @@ $(outdir)/%.dat: %.xml number-regs.xsl sort-regs.xsl
> gdbserver-regs.xsl
> $(XSLTPROC) gdbserver-regs.xsl - >> $(outdir)/$*.tmp
> sh ../../move-if-change $(outdir)/$*.tmp $(outdir)/$*.dat
>
> -FEATURE_XMLFILES = i386/32bit-core.xml \
> +FEATURE_XMLFILES = \
> + arc/core-v2.xml \
> + arc/aux-v2.xml \
> + arc/core-arcompact.xml \
> + arc/aux-arcompact.xml \
> + i386/32bit-core.xml \
> i386/32bit-sse.xml \
> i386/32bit-linux.xml \
> i386/32bit-avx.xml \
> diff --git a/gdb/features/arc-arcompact.c b/gdb/features/arc-arcompact.c
> deleted file mode 100644 index ea84a40..0000000
> --- a/gdb/features/arc-arcompact.c
> +++ /dev/null
> @@ -1,75 +0,0 @@
> -/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
> - Original: arc-arcompact.xml */
> -
> -#include "defs.h"
> -#include "osabi.h"
> -#include "target-descriptions.h"
> -
> -struct target_desc *tdesc_arc_arcompact; -static void -
> initialize_tdesc_arc_arcompact (void) -{
> - struct target_desc *result = allocate_target_description ();
> - set_tdesc_architecture (result, bfd_scan_arch ("ARC700"));
> -
> - struct tdesc_feature *feature;
> -
> - feature = tdesc_create_feature (result,
> "org.gnu.gdb.arc.core.arcompact");
> - tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "gp", 26, 1, NULL, 32, "data_ptr");
> - tdesc_create_reg (feature, "fp", 27, 1, NULL, 32, "data_ptr");
> - tdesc_create_reg (feature, "sp", 28, 1, NULL, 32, "data_ptr");
> - tdesc_create_reg (feature, "ilink1", 29, 1, NULL, 32, "code_ptr");
> - tdesc_create_reg (feature, "ilink2", 30, 1, NULL, 32, "code_ptr");
> - tdesc_create_reg (feature, "blink", 31, 1, NULL, 32, "code_ptr");
> - tdesc_create_reg (feature, "lp_count", 32, 1, NULL, 32, "uint32");
> - tdesc_create_reg (feature, "pcl", 33, 1, "", 32, "code_ptr");
> -
> - feature = tdesc_create_feature (result, "org.gnu.gdb.arc.aux-minimal");
> - struct tdesc_type *field_type;
> - struct tdesc_type *type;
> - type = tdesc_create_flags (feature, "status32_type", 4);
> - tdesc_add_flag (type, 0, "H");
> - tdesc_add_bitfield (type, "E", 1, 2);
> - tdesc_add_bitfield (type, "A", 3, 4);
> - tdesc_add_flag (type, 5, "AE");
> - tdesc_add_flag (type, 6, "DE");
> - tdesc_add_flag (type, 7, "U");
> - tdesc_add_flag (type, 8, "V");
> - tdesc_add_flag (type, 9, "C");
> - tdesc_add_flag (type, 10, "N");
> - tdesc_add_flag (type, 11, "Z");
> - tdesc_add_flag (type, 12, "L");
> - tdesc_add_flag (type, 13, "R");
> - tdesc_add_flag (type, 14, "SE");
> -
> - tdesc_create_reg (feature, "pc", 34, 1, NULL, 32, "code_ptr");
> - tdesc_create_reg (feature, "status32", 35, 1, NULL, 32, "status32_type");
> -
> - tdesc_arc_arcompact = result;
> -}
> diff --git a/gdb/features/arc-arcompact.xml b/gdb/features/arc-
> arcompact.xml deleted file mode 100644 index 295e635..0000000
> --- a/gdb/features/arc-arcompact.xml
> +++ /dev/null
> @@ -1,85 +0,0 @@
> -<?xml version="1.0"?>
> -<!-- Copyright (C) 2015-2017 Free Software Foundation, Inc.
> -
> - Copying and distribution of this file, with or without modification,
> - are permitted in any medium without royalty provided the copyright
> - notice and this notice are preserved. -->
> -
> -<!DOCTYPE target SYSTEM "gdb-target.dtd"> -<target>
> - <architecture>arc:ARC700</architecture>
> - <!-- No OSABI for bare metal. -->
> - <!-- No compatibility for ARC. -->
> -
> - <feature name="org.gnu.gdb.arc.core.arcompact">
> - <reg name="r0" bitsize="32"/>
> - <reg name="r1" bitsize="32"/>
> - <reg name="r2" bitsize="32"/>
> - <reg name="r3" bitsize="32"/>
> - <reg name="r4" bitsize="32"/>
> - <reg name="r5" bitsize="32"/>
> - <reg name="r6" bitsize="32"/>
> - <reg name="r7" bitsize="32"/>
> - <reg name="r8" bitsize="32"/>
> - <reg name="r9" bitsize="32"/>
> - <reg name="r10" bitsize="32"/>
> - <reg name="r11" bitsize="32"/>
> - <reg name="r12" bitsize="32"/>
> - <reg name="r13" bitsize="32"/>
> - <reg name="r14" bitsize="32"/>
> - <reg name="r15" bitsize="32"/>
> - <reg name="r16" bitsize="32"/>
> - <reg name="r17" bitsize="32"/>
> - <reg name="r18" bitsize="32"/>
> - <reg name="r19" bitsize="32"/>
> - <reg name="r20" bitsize="32"/>
> - <reg name="r21" bitsize="32"/>
> - <reg name="r22" bitsize="32"/>
> - <reg name="r23" bitsize="32"/>
> - <reg name="r24" bitsize="32"/>
> - <reg name="r25" bitsize="32"/>
> -
> - <!-- ARC core data pointer registers. -->
> - <reg name="gp" bitsize="32" type="data_ptr"/>
> - <reg name="fp" bitsize="32" type="data_ptr"/>
> - <reg name="sp" bitsize="32" type="data_ptr"/>
> -
> - <!-- Code pointers. -->
> - <reg name="ilink1" bitsize="32" type="code_ptr"/>
> - <reg name="ilink2" bitsize="32" type="code_ptr"/>
> - <reg name="blink" bitsize="32" type="code_ptr"/>
> -
> - <!-- Here goes extension core registers: r32 - r59 -->
> -
> - <!-- Loop counter. -->
> - <reg name="lp_count" bitsize="32" type="uint32"/>
> -
> - <!-- r61 is a reserved register address. -->
> -
> - <!-- r62 is a long immediate value, not a real register. -->
> -
> - <!-- 4-byte aligned read-only program counter. -->
> - <reg name="pcl" bitsize="32" type="code_ptr" group=""/>
> - </feature>
> -
> - <feature name="org.gnu.gdb.arc.aux-minimal">
> - <flags id="status32_type" size="4">
> - <field name="H" start="0" end="0"/>
> - <field name="E" start="1" end="2"/>
> - <field name="A" start="3" end="4"/>
> - <field name="AE" start="5" end="5"/>
> - <field name="DE" start="6" end="6"/>
> - <field name="U" start="7" end="7"/>
> - <field name="V" start="8" end="8"/>
> - <field name="C" start="9" end="9"/>
> - <field name="N" start="10" end="10"/>
> - <field name="Z" start="11" end="11"/>
> - <field name="L" start="12" end="12"/>
> - <field name="R" start="13" end="13"/>
> - <field name="SE" start="14" end="14"/>
> - </flags>
> -
> - <reg name="pc" bitsize="32" type="code_ptr"/>
> - <reg name="status32" bitsize="32" type="status32_type"/>
> - </feature>
> -</target>
> diff --git a/gdb/features/arc-v2.c b/gdb/features/arc-v2.c deleted file mode
> 100644 index 1eefc24..0000000
> --- a/gdb/features/arc-v2.c
> +++ /dev/null
> @@ -1,79 +0,0 @@
> -/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
> - Original: arc-v2.xml */
> -
> -#include "defs.h"
> -#include "osabi.h"
> -#include "target-descriptions.h"
> -
> -struct target_desc *tdesc_arc_v2;
> -static void
> -initialize_tdesc_arc_v2 (void)
> -{
> - struct target_desc *result = allocate_target_description ();
> - set_tdesc_architecture (result, bfd_scan_arch ("ARCv2"));
> -
> - struct tdesc_feature *feature;
> -
> - feature = tdesc_create_feature (result, "org.gnu.gdb.arc.core.v2");
> - tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "int");
> - tdesc_create_reg (feature, "gp", 26, 1, NULL, 32, "data_ptr");
> - tdesc_create_reg (feature, "fp", 27, 1, NULL, 32, "data_ptr");
> - tdesc_create_reg (feature, "sp", 28, 1, NULL, 32, "data_ptr");
> - tdesc_create_reg (feature, "ilink", 29, 1, NULL, 32, "code_ptr");
> - tdesc_create_reg (feature, "r30", 30, 1, "", 32, "int");
> - tdesc_create_reg (feature, "blink", 31, 1, NULL, 32, "code_ptr");
> - tdesc_create_reg (feature, "lp_count", 32, 1, NULL, 32, "uint32");
> - tdesc_create_reg (feature, "pcl", 33, 1, "", 32, "code_ptr");
> -
> - feature = tdesc_create_feature (result, "org.gnu.gdb.arc.aux-minimal");
> - struct tdesc_type *field_type;
> - struct tdesc_type *type;
> - type = tdesc_create_flags (feature, "status32_type", 4);
> - tdesc_add_flag (type, 0, "H");
> - tdesc_add_bitfield (type, "E", 1, 4);
> - tdesc_add_flag (type, 5, "AE");
> - tdesc_add_flag (type, 6, "DE");
> - tdesc_add_flag (type, 7, "U");
> - tdesc_add_flag (type, 8, "V");
> - tdesc_add_flag (type, 9, "C");
> - tdesc_add_flag (type, 10, "N");
> - tdesc_add_flag (type, 11, "Z");
> - tdesc_add_flag (type, 12, "L");
> - tdesc_add_flag (type, 13, "DZ");
> - tdesc_add_flag (type, 14, "SC");
> - tdesc_add_flag (type, 15, "ES");
> - tdesc_add_bitfield (type, "RB", 16, 18);
> - tdesc_add_flag (type, 19, "AD");
> - tdesc_add_flag (type, 20, "US");
> - tdesc_add_flag (type, 31, "IE");
> -
> - tdesc_create_reg (feature, "pc", 34, 1, NULL, 32, "code_ptr");
> - tdesc_create_reg (feature, "status32", 35, 1, NULL, 32, "status32_type");
> -
> - tdesc_arc_v2 = result;
> -}
> diff --git a/gdb/features/arc-v2.xml b/gdb/features/arc-v2.xml deleted file
> mode 100644 index 4f8c9a0..0000000
> --- a/gdb/features/arc-v2.xml
> +++ /dev/null
> @@ -1,92 +0,0 @@
> -<?xml version="1.0"?>
> -<!-- Copyright (C) 2015-2017 Free Software Foundation, Inc.
> -
> - Copying and distribution of this file, with or without modification,
> - are permitted in any medium without royalty provided the copyright
> - notice and this notice are preserved. -->
> -
> -<!DOCTYPE target SYSTEM "gdb-target.dtd"> -<target>
> - <architecture>arc:ARCv2</architecture>
> - <!-- No OSABI for bare metal. -->
> - <!-- No compatibility for ARC. -->
> -
> - <feature name="org.gnu.gdb.arc.core.v2">
> - <reg name="r0" bitsize="32"/>
> - <reg name="r1" bitsize="32"/>
> - <reg name="r2" bitsize="32"/>
> - <reg name="r3" bitsize="32"/>
> - <reg name="r4" bitsize="32"/>
> - <reg name="r5" bitsize="32"/>
> - <reg name="r6" bitsize="32"/>
> - <reg name="r7" bitsize="32"/>
> - <reg name="r8" bitsize="32"/>
> - <reg name="r9" bitsize="32"/>
> - <reg name="r10" bitsize="32"/>
> - <reg name="r11" bitsize="32"/>
> - <reg name="r12" bitsize="32"/>
> - <reg name="r13" bitsize="32"/>
> - <reg name="r14" bitsize="32"/>
> - <reg name="r15" bitsize="32"/>
> - <reg name="r16" bitsize="32"/>
> - <reg name="r17" bitsize="32"/>
> - <reg name="r18" bitsize="32"/>
> - <reg name="r19" bitsize="32"/>
> - <reg name="r20" bitsize="32"/>
> - <reg name="r21" bitsize="32"/>
> - <reg name="r22" bitsize="32"/>
> - <reg name="r23" bitsize="32"/>
> - <reg name="r24" bitsize="32"/>
> - <reg name="r25" bitsize="32"/>
> -
> - <!-- ARC core data pointer registers. -->
> - <reg name="gp" bitsize="32" type="data_ptr"/>
> - <reg name="fp" bitsize="32" type="data_ptr"/>
> - <reg name="sp" bitsize="32" type="data_ptr"/>
> -
> - <!-- Code pointers. R30 is general purpose, but it used to be ILINK2 in
> - ARCompact, thus its odd position in between of special purpose registers.
> - GCC does't use this register, so it isn't a member of a general group. -->
> - <reg name="ilink" bitsize="32" type="code_ptr"/>
> - <reg name="r30" bitsize="32" group=""/>
> - <reg name="blink" bitsize="32" type="code_ptr"/>
> -
> - <!-- Here goes extension core registers: r32 - r57. -->
> - <!-- Here goes ACCL/ACCH registers, r58, r59. -->
> -
> - <!-- Loop counter. -->
> - <reg name="lp_count" bitsize="32" type="uint32"/>
> -
> - <!-- r61 is a reserved register address. -->
> -
> - <!-- r62 is a long immediate value, not a real register. -->
> -
> - <!-- 4-byte aligned read-only program counter. -->
> - <reg name="pcl" bitsize="32" type="code_ptr" group=""/>
> - </feature>
> -
> - <feature name="org.gnu.gdb.arc.aux-minimal">
> - <flags id="status32_type" size="4">
> - <field name="H" start="0" end="0"/>
> - <field name="E" start="1" end="4"/>
> - <field name="AE" start="5" end="5"/>
> - <field name="DE" start="6" end="6"/>
> - <field name="U" start="7" end="7"/>
> - <field name="V" start="8" end="8"/>
> - <field name="C" start="9" end="9"/>
> - <field name="N" start="10" end="10"/>
> - <field name="Z" start="11" end="11"/>
> - <field name="L" start="12" end="12"/>
> - <field name="DZ" start="13" end="13"/>
> - <field name="SC" start="14" end="14"/>
> - <field name="ES" start="15" end="15"/>
> - <field name="RB" start="16" end="18"/>
> - <field name="AD" start="19" end="19"/>
> - <field name="US" start="20" end="20"/>
> - <field name="IE" start="31" end="31"/>
> - </flags>
> -
> - <reg name="pc" bitsize="32" type="code_ptr"/>
> - <reg name="status32" bitsize="32" type="status32_type"/>
> - </feature>
> -</target>
> diff --git a/gdb/features/arc/aux-arcompact.c b/gdb/features/arc/aux-
> arcompact.c
> new file mode 100644
> index 0000000..cf85ea8
> --- /dev/null
> +++ b/gdb/features/arc/aux-arcompact.c
> @@ -0,0 +1,32 @@
> +/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
> + Original: aux-arcompact.xml */
> +
> +#include "arch/tdesc.h"
> +
> +static int
> +create_feature_arc_aux_arcompact (struct target_desc *result, long
> +regnum) {
> + struct tdesc_feature *feature;
> +
> + feature = tdesc_create_feature (result,
> + "org.gnu.gdb.arc.aux-minimal", "aux-arcompact.xml"); struct
> + tdesc_type *field_type; struct tdesc_type *type; type =
> + tdesc_create_flags (feature, "status32_type", 4); tdesc_add_flag
> + (type, 0, "H"); tdesc_add_bitfield (type, "E", 1, 2);
> + tdesc_add_bitfield (type, "A", 3, 4); tdesc_add_flag (type, 5, "AE");
> + tdesc_add_flag (type, 6, "DE"); tdesc_add_flag (type, 7, "U");
> + tdesc_add_flag (type, 8, "V"); tdesc_add_flag (type, 9, "C");
> + tdesc_add_flag (type, 10, "N"); tdesc_add_flag (type, 11, "Z");
> + tdesc_add_flag (type, 12, "L"); tdesc_add_flag (type, 13, "R");
> + tdesc_add_flag (type, 14, "SE");
> +
> + tdesc_create_reg (feature, "pc", regnum++, 1, NULL, 32, "code_ptr");
> + tdesc_create_reg (feature, "status32", regnum++, 1, NULL, 32,
> +"status32_type");
> + return regnum;
> +}
> diff --git a/gdb/features/arc/aux-arcompact.xml b/gdb/features/arc/aux-
> arcompact.xml
> new file mode 100644
> index 0000000..d9c2f74
> --- /dev/null
> +++ b/gdb/features/arc/aux-arcompact.xml
> @@ -0,0 +1,28 @@
> +<?xml version="1.0"?>
> +<!-- Copyright (C) 2015-2017 Free Software Foundation, Inc.
> +
> + Copying and distribution of this file, with or without modification,
> + are permitted in any medium without royalty provided the copyright
> + notice and this notice are preserved. -->
> +
> +<!DOCTYPE target SYSTEM "gdb-target.dtd"> <feature
> +name="org.gnu.gdb.arc.aux-minimal">
> + <flags id="status32_type" size="4">
> + <field name="H" start="0" end="0"/>
> + <field name="E" start="1" end="2"/>
> + <field name="A" start="3" end="4"/>
> + <field name="AE" start="5" end="5"/>
> + <field name="DE" start="6" end="6"/>
> + <field name="U" start="7" end="7"/>
> + <field name="V" start="8" end="8"/>
> + <field name="C" start="9" end="9"/>
> + <field name="N" start="10" end="10"/>
> + <field name="Z" start="11" end="11"/>
> + <field name="L" start="12" end="12"/>
> + <field name="R" start="13" end="13"/>
> + <field name="SE" start="14" end="14"/>
> + </flags>
> +
> + <reg name="pc" bitsize="32" type="code_ptr"/>
> + <reg name="status32" bitsize="32" type="status32_type"/> </feature>
> diff --git a/gdb/features/arc/aux-v2.c b/gdb/features/arc/aux-v2.c new file
> mode 100644 index 0000000..f59d759
> --- /dev/null
> +++ b/gdb/features/arc/aux-v2.c
> @@ -0,0 +1,36 @@
> +/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
> + Original: aux-v2.xml */
> +
> +#include "arch/tdesc.h"
> +
> +static int
> +create_feature_arc_aux_v2 (struct target_desc *result, long regnum) {
> + struct tdesc_feature *feature;
> +
> + feature = tdesc_create_feature (result,
> + "org.gnu.gdb.arc.aux-minimal", "aux-v2.xml"); struct tdesc_type
> + *field_type; struct tdesc_type *type; type = tdesc_create_flags
> + (feature, "status32_type", 4); tdesc_add_flag (type, 0, "H");
> + tdesc_add_bitfield (type, "E", 1, 4); tdesc_add_flag (type, 5, "AE");
> + tdesc_add_flag (type, 6, "DE"); tdesc_add_flag (type, 7, "U");
> + tdesc_add_flag (type, 8, "V"); tdesc_add_flag (type, 9, "C");
> + tdesc_add_flag (type, 10, "N"); tdesc_add_flag (type, 11, "Z");
> + tdesc_add_flag (type, 12, "L"); tdesc_add_flag (type, 13, "DZ");
> + tdesc_add_flag (type, 14, "SC"); tdesc_add_flag (type, 15, "ES");
> + tdesc_add_bitfield (type, "RB", 16, 18); tdesc_add_flag (type, 19,
> + "AD"); tdesc_add_flag (type, 20, "US"); tdesc_add_flag (type, 31,
> + "IE");
> +
> + tdesc_create_reg (feature, "pc", regnum++, 1, NULL, 32, "code_ptr");
> + tdesc_create_reg (feature, "status32", regnum++, 1, NULL, 32,
> +"status32_type");
> + return regnum;
> +}
> diff --git a/gdb/features/arc/aux-v2.xml b/gdb/features/arc/aux-v2.xml new
> file mode 100644 index 0000000..558a171
> --- /dev/null
> +++ b/gdb/features/arc/aux-v2.xml
> @@ -0,0 +1,32 @@
> +<?xml version="1.0"?>
> +<!-- Copyright (C) 2015-2017 Free Software Foundation, Inc.
> +
> + Copying and distribution of this file, with or without modification,
> + are permitted in any medium without royalty provided the copyright
> + notice and this notice are preserved. -->
> +
> +<!DOCTYPE target SYSTEM "gdb-target.dtd"> <feature
> +name="org.gnu.gdb.arc.aux-minimal">
> + <flags id="status32_type" size="4">
> + <field name="H" start="0" end="0"/>
> + <field name="E" start="1" end="4"/>
> + <field name="AE" start="5" end="5"/>
> + <field name="DE" start="6" end="6"/>
> + <field name="U" start="7" end="7"/>
> + <field name="V" start="8" end="8"/>
> + <field name="C" start="9" end="9"/>
> + <field name="N" start="10" end="10"/>
> + <field name="Z" start="11" end="11"/>
> + <field name="L" start="12" end="12"/>
> + <field name="DZ" start="13" end="13"/>
> + <field name="SC" start="14" end="14"/>
> + <field name="ES" start="15" end="15"/>
> + <field name="RB" start="16" end="18"/>
> + <field name="AD" start="19" end="19"/>
> + <field name="US" start="20" end="20"/>
> + <field name="IE" start="31" end="31"/>
> + </flags>
> +
> + <reg name="pc" bitsize="32" type="code_ptr"/>
> + <reg name="status32" bitsize="32" type="status32_type"/> </feature>
> diff --git a/gdb/features/arc/core-arcompact.c b/gdb/features/arc/core-
> arcompact.c
> new file mode 100644
> index 0000000..e08763a
> --- /dev/null
> +++ b/gdb/features/arc/core-arcompact.c
> @@ -0,0 +1,47 @@
> +/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
> + Original: core-arcompact.xml */
> +
> +#include "arch/tdesc.h"
> +
> +static int
> +create_feature_arc_core_arcompact (struct target_desc *result, long
> +regnum) {
> + struct tdesc_feature *feature;
> +
> + feature = tdesc_create_feature (result,
> +"org.gnu.gdb.arc.core.arcompact", "core-arcompact.xml");
> + tdesc_create_reg (feature, "r0", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r1", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r2", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r3", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r4", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r5", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r6", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r7", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r8", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r9", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r10", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r11", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r12", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r13", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r14", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r15", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r16", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r17", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r18", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r19", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r20", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r21", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r22", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r23", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r24", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r25", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "gp", regnum++, 1, NULL, 32, "data_ptr");
> + tdesc_create_reg (feature, "fp", regnum++, 1, NULL, 32, "data_ptr");
> + tdesc_create_reg (feature, "sp", regnum++, 1, NULL, 32, "data_ptr");
> + tdesc_create_reg (feature, "ilink1", regnum++, 1, NULL, 32,
> +"code_ptr");
> + tdesc_create_reg (feature, "ilink2", regnum++, 1, NULL, 32,
> +"code_ptr");
> + tdesc_create_reg (feature, "blink", regnum++, 1, NULL, 32,
> +"code_ptr");
> + tdesc_create_reg (feature, "lp_count", regnum++, 1, NULL, 32,
> +"uint32");
> + tdesc_create_reg (feature, "pcl", regnum++, 1, "", 32, "code_ptr");
> + return regnum;
> +}
> diff --git a/gdb/features/arc/core-arcompact.xml b/gdb/features/arc/core-
> arcompact.xml
> new file mode 100644
> index 0000000..55b566a
> --- /dev/null
> +++ b/gdb/features/arc/core-arcompact.xml
> @@ -0,0 +1,58 @@
> +<?xml version="1.0"?>
> +<!-- Copyright (C) 2015-2017 Free Software Foundation, Inc.
> +
> + Copying and distribution of this file, with or without modification,
> + are permitted in any medium without royalty provided the copyright
> + notice and this notice are preserved. -->
> +
> +<!DOCTYPE target SYSTEM "gdb-target.dtd"> <feature
> +name="org.gnu.gdb.arc.core.arcompact">
> + <reg name="r0" bitsize="32"/>
> + <reg name="r1" bitsize="32"/>
> + <reg name="r2" bitsize="32"/>
> + <reg name="r3" bitsize="32"/>
> + <reg name="r4" bitsize="32"/>
> + <reg name="r5" bitsize="32"/>
> + <reg name="r6" bitsize="32"/>
> + <reg name="r7" bitsize="32"/>
> + <reg name="r8" bitsize="32"/>
> + <reg name="r9" bitsize="32"/>
> + <reg name="r10" bitsize="32"/>
> + <reg name="r11" bitsize="32"/>
> + <reg name="r12" bitsize="32"/>
> + <reg name="r13" bitsize="32"/>
> + <reg name="r14" bitsize="32"/>
> + <reg name="r15" bitsize="32"/>
> + <reg name="r16" bitsize="32"/>
> + <reg name="r17" bitsize="32"/>
> + <reg name="r18" bitsize="32"/>
> + <reg name="r19" bitsize="32"/>
> + <reg name="r20" bitsize="32"/>
> + <reg name="r21" bitsize="32"/>
> + <reg name="r22" bitsize="32"/>
> + <reg name="r23" bitsize="32"/>
> + <reg name="r24" bitsize="32"/>
> + <reg name="r25" bitsize="32"/>
> +
> + <!-- ARC core data pointer registers. --> <reg name="gp"
> + bitsize="32" type="data_ptr"/> <reg name="fp" bitsize="32"
> + type="data_ptr"/> <reg name="sp" bitsize="32" type="data_ptr"/>
> +
> + <!-- Code pointers. -->
> + <reg name="ilink1" bitsize="32" type="code_ptr"/> <reg name="ilink2"
> + bitsize="32" type="code_ptr"/> <reg name="blink" bitsize="32"
> + type="code_ptr"/>
> +
> + <!-- Here goes extension core registers: r32 - r59 -->
> +
> + <!-- Loop counter. -->
> + <reg name="lp_count" bitsize="32" type="uint32"/>
> +
> + <!-- r61 is a reserved register address. -->
> +
> + <!-- r62 is a long immediate value, not a real register. -->
> +
> + <!-- 4-byte aligned read-only program counter. -->
> + <reg name="pcl" bitsize="32" type="code_ptr" group=""/> </feature>
> diff --git a/gdb/features/arc/core-v2.c b/gdb/features/arc/core-v2.c new file
> mode 100644 index 0000000..ebe33be
> --- /dev/null
> +++ b/gdb/features/arc/core-v2.c
> @@ -0,0 +1,47 @@
> +/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
> + Original: core-v2.xml */
> +
> +#include "arch/tdesc.h"
> +
> +static int
> +create_feature_arc_core_v2 (struct target_desc *result, long regnum) {
> + struct tdesc_feature *feature;
> +
> + feature = tdesc_create_feature (result, "org.gnu.gdb.arc.core.v2",
> +"core-v2.xml");
> + tdesc_create_reg (feature, "r0", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r1", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r2", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r3", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r4", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r5", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r6", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r7", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r8", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r9", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r10", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r11", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r12", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r13", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r14", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r15", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r16", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r17", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r18", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r19", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r20", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r21", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r22", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r23", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r24", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "r25", regnum++, 1, NULL, 32, "int");
> + tdesc_create_reg (feature, "gp", regnum++, 1, NULL, 32, "data_ptr");
> + tdesc_create_reg (feature, "fp", regnum++, 1, NULL, 32, "data_ptr");
> + tdesc_create_reg (feature, "sp", regnum++, 1, NULL, 32, "data_ptr");
> + tdesc_create_reg (feature, "ilink", regnum++, 1, NULL, 32,
> +"code_ptr");
> + tdesc_create_reg (feature, "r30", regnum++, 1, "", 32, "int");
> + tdesc_create_reg (feature, "blink", regnum++, 1, NULL, 32,
> +"code_ptr");
> + tdesc_create_reg (feature, "lp_count", regnum++, 1, NULL, 32,
> +"uint32");
> + tdesc_create_reg (feature, "pcl", regnum++, 1, "", 32, "code_ptr");
> + return regnum;
> +}
> diff --git a/gdb/features/arc/core-v2.xml b/gdb/features/arc/core-v2.xml
> new file mode 100644 index 0000000..8c8ad39
> --- /dev/null
> +++ b/gdb/features/arc/core-v2.xml
> @@ -0,0 +1,61 @@
> +<?xml version="1.0"?>
> +<!-- Copyright (C) 2015-2017 Free Software Foundation, Inc.
> +
> + Copying and distribution of this file, with or without modification,
> + are permitted in any medium without royalty provided the copyright
> + notice and this notice are preserved. -->
> +
> +<!DOCTYPE target SYSTEM "gdb-target.dtd"> <feature
> +name="org.gnu.gdb.arc.core.v2">
> + <reg name="r0" bitsize="32"/>
> + <reg name="r1" bitsize="32"/>
> + <reg name="r2" bitsize="32"/>
> + <reg name="r3" bitsize="32"/>
> + <reg name="r4" bitsize="32"/>
> + <reg name="r5" bitsize="32"/>
> + <reg name="r6" bitsize="32"/>
> + <reg name="r7" bitsize="32"/>
> + <reg name="r8" bitsize="32"/>
> + <reg name="r9" bitsize="32"/>
> + <reg name="r10" bitsize="32"/>
> + <reg name="r11" bitsize="32"/>
> + <reg name="r12" bitsize="32"/>
> + <reg name="r13" bitsize="32"/>
> + <reg name="r14" bitsize="32"/>
> + <reg name="r15" bitsize="32"/>
> + <reg name="r16" bitsize="32"/>
> + <reg name="r17" bitsize="32"/>
> + <reg name="r18" bitsize="32"/>
> + <reg name="r19" bitsize="32"/>
> + <reg name="r20" bitsize="32"/>
> + <reg name="r21" bitsize="32"/>
> + <reg name="r22" bitsize="32"/>
> + <reg name="r23" bitsize="32"/>
> + <reg name="r24" bitsize="32"/>
> + <reg name="r25" bitsize="32"/>
> +
> + <!-- ARC core data pointer registers. --> <reg name="gp"
> + bitsize="32" type="data_ptr"/> <reg name="fp" bitsize="32"
> + type="data_ptr"/> <reg name="sp" bitsize="32" type="data_ptr"/>
> +
> + <!-- Code pointers. R30 is general purpose, but it used to be ILINK2
> + in ARCompact, thus its odd position in between of special purpose
> registers.
> + GCC does't use this register, so it isn't a member of a general
> + group. --> <reg name="ilink" bitsize="32" type="code_ptr"/>
> + <reg name="r30" bitsize="32" group=""/>
> + <reg name="blink" bitsize="32" type="code_ptr"/>
> +
> + <!-- Here goes extension core registers: r32 - r57. -->
> + <!-- Here goes ACCL/ACCH registers, r58, r59. -->
> +
> + <!-- Loop counter. -->
> + <reg name="lp_count" bitsize="32" type="uint32"/>
> +
> + <!-- r61 is a reserved register address. -->
> +
> + <!-- r62 is a long immediate value, not a real register. -->
> +
> + <!-- 4-byte aligned read-only program counter. -->
> + <reg name="pcl" bitsize="32" type="code_ptr" group=""/> </feature>
> diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c index
> 4f5e9d6..414c8b1 100644
> --- a/gdb/target-descriptions.c
> +++ b/gdb/target-descriptions.c
> @@ -2327,7 +2327,9 @@ maint_print_c_tdesc_cmd (const char *args, int
> from_tty)
> counterparts. */
> if (startswith (filename_after_features.c_str (), "i386/32bit-")
> || startswith (filename_after_features.c_str (), "i386/64bit-")
> - || startswith (filename_after_features.c_str (), "i386/x32-core.xml"))
> + || startswith (filename_after_features.c_str (), "i386/x32-core.xml")
> + || startswith (filename_after_features.c_str (), "arc/core-")
> + || startswith (filename_after_features.c_str (), "arc/aux-"))
> {
> print_c_feature v (filename_after_features);
>
> --
> 2.8.3