From patchwork Thu Oct 26 11:40:17 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Kolesov X-Patchwork-Id: 23845 Received: (qmail 21383 invoked by alias); 26 Oct 2017 11:40:41 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 21300 invoked by uid 89); 26 Oct 2017 11:40:40 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-22.1 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_ASCII_DIVIDERS, KAM_LAZY_DOMAIN_SECURITY, KAM_MANYCOMMENTS, RCVD_IN_DNSWL_NONE, RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=doctype, !doctype, DOCTYPE, !DOCTYPE X-HELO: smtprelay.synopsys.com Received: from us01smtprelay-2.synopsys.com (HELO smtprelay.synopsys.com) (198.182.60.111) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 26 Oct 2017 11:40:34 +0000 Received: from mailhost.synopsys.com (mailhost2.synopsys.com [10.13.184.66]) by smtprelay.synopsys.com (Postfix) with ESMTP id D53D410C1388 for ; Thu, 26 Oct 2017 04:40:32 -0700 (PDT) Received: from mailhost.synopsys.com (localhost [127.0.0.1]) by mailhost.synopsys.com (Postfix) with ESMTP id B899A601; Thu, 26 Oct 2017 04:40:32 -0700 (PDT) Received: from akolesov-lab.internal.synopsys.com (akolesov-lab.internal.synopsys.com [10.121.14.106]) by mailhost.synopsys.com (Postfix) with ESMTP id 62E9E5F3; Thu, 26 Oct 2017 04:40:31 -0700 (PDT) From: Anton Kolesov To: gdb-patches@sourceware.org Cc: Anton Kolesov , Francois Bedard Subject: [PATCH v2 1/4] arc: Migrate to new target features Date: Thu, 26 Oct 2017 14:40:17 +0300 Message-Id: <20171026114020.10213-1-Anton.Kolesov@synopsys.com> In-Reply-To: <20171012012859.GJ8425@1170ee0b50d5> References: <20171012012859.GJ8425@1170ee0b50d5> 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 * 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 -/* 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 . */ + + +#include "common-defs.h" +#include + +#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 . */ + +#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 @@ - - - - - - arc:ARC700 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 @@ - - - - - - arc:ARCv2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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);