This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: [PATCH v2 1/4] arc: Migrate to new target features


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]