From patchwork Thu Mar 5 16:05:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shahab Vahedi X-Patchwork-Id: 38432 Received: (qmail 42302 invoked by alias); 5 Mar 2020 16:06:07 -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 42294 invoked by uid 89); 5 Mar 2020 16:06:06 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-24.9 required=5.0 tests=BAYES_00, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_ASCII_DIVIDERS, KAM_MANYCOMMENTS, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.1 spammy=WHICH, unidentified X-HELO: mail-wm1-f65.google.com Received: from mail-wm1-f65.google.com (HELO mail-wm1-f65.google.com) (209.85.128.65) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 05 Mar 2020 16:06:01 +0000 Received: by mail-wm1-f65.google.com with SMTP id a132so6956940wme.1 for ; Thu, 05 Mar 2020 08:06:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=cEAvpRkNFm6AjpBia8xLSgQeuFBqBDq2hH0XEikIChw=; b=XQuM1FzG94wfE7kFQVOw3BcZJPErZmS8plDeGC0yqHBA0HeiLUyLQAac3vs8Z0jkUy sGFzBWqy2rnaAJlTteR9nLOM7HLKpDxVTaqxbza+sSgqZAbHpHllJS+ZAja3CxEfBYGJ B/d1zW8MCIpjojdxLlCPfLlu7mwU2ccgnbOKJdvXNHcjQ7y4KkRajfwOYfpepLY0IZEC eRyo5ZYnYKNyY1Po00gyaZIHe1DWoiO8YfrzHcjRpYvpZAOVMmw3Ejlc2NoAAPxVzR5R zeWrnJ5BtooPJNEu4gKlAy7K1kV3u08WlZCoymeN5FU72Uwa3qFuTjOw1+WbJ6SlEhKB X1zA== Return-Path: Received: from atlantis.home ([2a03:1b20:3:f011::6d]) by smtp.gmail.com with ESMTPSA id g201sm9657649wme.23.2020.03.05.08.05.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 05 Mar 2020 08:05:56 -0800 (PST) From: Shahab Vahedi To: gdb-patches@sourceware.org Cc: Shahab Vahedi , Shahab Vahedi , Anton Kolesov , Francois Bedard , Anton Kolesov Subject: [PATCH] arc: Migrate to new target features Date: Thu, 5 Mar 2020 17:05:52 +0100 Message-Id: <20200305160552.29193-1-shahab.vahedi@gmail.com> MIME-Version: 1.0 From: Anton Kolesov 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: 2017-10-25 Anton Kolesov Shahab Vahedi * Makefile.in: Add arch/arc.o * configure.tgt: Likewise. * arc-tdep.h: Change type of "jb_pc" to CORE_ADDR. * arc-tdep.c (arc_tdesc_init): Use arc_create_target_description. (_initialize_arc_tdep): Don't initialize old target descriptions. (arc_dump_tdep): Use "%li" to print "jb_pc". * 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 | 27 +++------ gdb/arc-tdep.h | 2 +- gdb/arch/arc.c | 70 ++++++++++++++++++++++ gdb/arch/arc.h | 20 +++++++ gdb/configure.tgt | 2 +- gdb/features/Makefile | 25 ++++---- gdb/features/arc-arcompact.c | 74 ----------------------- gdb/features/arc-arcompact.xml | 85 -------------------------- gdb/features/arc-v2.c | 78 ------------------------ gdb/features/arc-v2.xml | 92 ----------------------------- gdb/features/arc/aux-arcompact.c | 31 ++++++++++ gdb/features/arc/aux-arcompact.xml | 28 +++++++++ gdb/features/arc/aux-v2.c | 35 +++++++++++ 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 +- 20 files changed, 457 insertions(+), 364 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 7c0a0aefbc2..7dbadd4e119 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -694,6 +694,7 @@ ALL_TARGET_OBS = \ aarch32-tdep.o \ arc-tdep.o \ arch/aarch32.o \ + arch/arc.o \ arch/arm.o \ arch/arm-get-next-pcs.o \ arch/arm-linux.o \ @@ -1438,6 +1439,7 @@ HFILES_NO_SRCDIR = \ arch/aarch32.h \ arch/aarch64.h \ arch/aarch64-insn.h \ + arch/arc.h \ arch/arm.h \ arch/i386.h \ arch/ppc-linux-common.h \ @@ -2119,6 +2121,7 @@ ALLDEPFILES = \ amd64-obsd-tdep.c \ amd64-sol2-tdep.c \ amd64-tdep.c \ + arc.c \ arc-tdep.c \ arm.c \ arm-bsd-tdep.c \ diff --git a/gdb/arc-tdep.c b/gdb/arc-tdep.c index ac98f03efc1..4d840aa9342 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 @@ -1753,18 +1752,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 { @@ -2114,7 +2102,7 @@ arc_dump_tdep (struct gdbarch *gdbarch, struct ui_file *file) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - fprintf_unfiltered (file, "arc_dump_tdep: jb_pc = %i\n", tdep->jb_pc); + fprintf_unfiltered (file, "arc_dump_tdep: jb_pc = %li\n", tdep->jb_pc); } /* Wrapper for "maintenance print arc" list of commands. */ @@ -2151,9 +2139,6 @@ _initialize_arc_tdep () { 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. */ @@ -2176,3 +2161,5 @@ _initialize_arc_tdep () _("Non-zero enables ARC specific debugging."), NULL, NULL, &setdebuglist, &showdebuglist); } + +/* vim: set sts=2 shiftwidth=2 ts=8: */ diff --git a/gdb/arc-tdep.h b/gdb/arc-tdep.h index bd0096741ff..3f2f5449722 100644 --- a/gdb/arc-tdep.h +++ b/gdb/arc-tdep.h @@ -99,7 +99,7 @@ struct gdbarch_tdep { /* Offset to PC value in jump buffer. If this is negative, longjmp support will be disabled. */ - int jb_pc; + CORE_ADDR jb_pc; }; /* Utility functions used by other ARC-specific modules. */ diff --git a/gdb/arch/arc.c b/gdb/arch/arc.c new file mode 100644 index 00000000000..effa6ec3d6f --- /dev/null +++ b/gdb/arch/arc.c @@ -0,0 +1,70 @@ +/* Copyright (C) 2017-2020 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 "gdbsupport/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 00000000000..dc7871c3103 --- /dev/null +++ b/gdb/arch/arc.h @@ -0,0 +1,20 @@ +/* Copyright (C) 2017-2020 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 "gdbsupport/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 755187dca65..9b77a2872ca 100644 --- a/gdb/configure.tgt +++ b/gdb/configure.tgt @@ -59,7 +59,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 9a98b0542c4..60be548780d 100644 --- a/gdb/features/Makefile +++ b/gdb/features/Makefile @@ -108,8 +108,14 @@ OUTPUTS = $(patsubst %,$(outdir)/%.dat,$(WHICH)) # --enable-targets=all GDB. You can override this by passing XMLTOC # to make on the command line. XMLTOC = \ - arc-v2.xml \ - arc-arcompact.xml \ + aarch64.xml \ + arm/arm-with-iwmmxt.xml \ + arm/arm-with-m-fpa-layout.xml \ + arm/arm-with-m-vfp-d16.xml \ + arm/arm-with-m.xml \ + arm/arm-with-neon.xml \ + arm/arm-with-vfpv2.xml \ + arm/arm-with-vfpv3.xml \ microblaze-with-stack-protect.xml \ microblaze.xml \ mips-dsp-linux.xml \ @@ -203,16 +209,11 @@ $(outdir)/%.dat: %.xml number-regs.xsl sort-regs.xsl gdbserver-regs.xsl # For targets with feature based target descriptions, # the set of xml files we'll generate .c files for GDB from. -FEATURE_XMLFILES = aarch64-core.xml \ - aarch64-fpu.xml \ - aarch64-pauth.xml \ - arm/arm-core.xml \ - arm/arm-fpa.xml \ - arm/arm-m-profile.xml \ - arm/arm-m-profile-with-fpa.xml \ - arm/arm-vfpv2.xml \ - arm/arm-vfpv3.xml \ - arm/xscale-iwmmxt.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 \ diff --git a/gdb/features/arc-arcompact.c b/gdb/features/arc-arcompact.c deleted file mode 100644 index f81f0a26ba2..00000000000 --- a/gdb/features/arc-arcompact.c +++ /dev/null @@ -1,74 +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, NULL, 32, "code_ptr"); - - feature = tdesc_create_feature (result, "org.gnu.gdb.arc.aux-minimal"); - tdesc_type_with_fields *type_with_fields; - type_with_fields = tdesc_create_flags (feature, "status32_type", 4); - tdesc_add_flag (type_with_fields, 0, "H"); - tdesc_add_bitfield (type_with_fields, "E", 1, 2); - tdesc_add_bitfield (type_with_fields, "A", 3, 4); - tdesc_add_flag (type_with_fields, 5, "AE"); - tdesc_add_flag (type_with_fields, 6, "DE"); - tdesc_add_flag (type_with_fields, 7, "U"); - tdesc_add_flag (type_with_fields, 8, "V"); - tdesc_add_flag (type_with_fields, 9, "C"); - tdesc_add_flag (type_with_fields, 10, "N"); - tdesc_add_flag (type_with_fields, 11, "Z"); - tdesc_add_flag (type_with_fields, 12, "L"); - tdesc_add_flag (type_with_fields, 13, "R"); - tdesc_add_flag (type_with_fields, 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 31acbaf9398..00000000000 --- 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 b2254b293cf..00000000000 --- a/gdb/features/arc-v2.c +++ /dev/null @@ -1,78 +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, NULL, 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, NULL, 32, "code_ptr"); - - feature = tdesc_create_feature (result, "org.gnu.gdb.arc.aux-minimal"); - tdesc_type_with_fields *type_with_fields; - type_with_fields = tdesc_create_flags (feature, "status32_type", 4); - tdesc_add_flag (type_with_fields, 0, "H"); - tdesc_add_bitfield (type_with_fields, "E", 1, 4); - tdesc_add_flag (type_with_fields, 5, "AE"); - tdesc_add_flag (type_with_fields, 6, "DE"); - tdesc_add_flag (type_with_fields, 7, "U"); - tdesc_add_flag (type_with_fields, 8, "V"); - tdesc_add_flag (type_with_fields, 9, "C"); - tdesc_add_flag (type_with_fields, 10, "N"); - tdesc_add_flag (type_with_fields, 11, "Z"); - tdesc_add_flag (type_with_fields, 12, "L"); - tdesc_add_flag (type_with_fields, 13, "DZ"); - tdesc_add_flag (type_with_fields, 14, "SC"); - tdesc_add_flag (type_with_fields, 15, "ES"); - tdesc_add_bitfield (type_with_fields, "RB", 16, 18); - tdesc_add_flag (type_with_fields, 19, "AD"); - tdesc_add_flag (type_with_fields, 20, "US"); - tdesc_add_flag (type_with_fields, 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 2dae670158c..00000000000 --- 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 00000000000..d8e8c74e639 --- /dev/null +++ b/gdb/features/arc/aux-arcompact.c @@ -0,0 +1,31 @@ +/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: + Original: aux-arcompact.xml */ + +#include "gdbsupport/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"); + tdesc_type_with_fields *type_with_fields; + type_with_fields = tdesc_create_flags (feature, "status32_type", 4); + tdesc_add_flag (type_with_fields, 0, "H"); + tdesc_add_bitfield (type_with_fields, "E", 1, 2); + tdesc_add_bitfield (type_with_fields, "A", 3, 4); + tdesc_add_flag (type_with_fields, 5, "AE"); + tdesc_add_flag (type_with_fields, 6, "DE"); + tdesc_add_flag (type_with_fields, 7, "U"); + tdesc_add_flag (type_with_fields, 8, "V"); + tdesc_add_flag (type_with_fields, 9, "C"); + tdesc_add_flag (type_with_fields, 10, "N"); + tdesc_add_flag (type_with_fields, 11, "Z"); + tdesc_add_flag (type_with_fields, 12, "L"); + tdesc_add_flag (type_with_fields, 13, "R"); + tdesc_add_flag (type_with_fields, 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 00000000000..bf68112f5db --- /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 00000000000..6290b9b1a7f --- /dev/null +++ b/gdb/features/arc/aux-v2.c @@ -0,0 +1,35 @@ +/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro: + Original: aux-v2.xml */ + +#include "gdbsupport/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"); + tdesc_type_with_fields *type_with_fields; + type_with_fields = tdesc_create_flags (feature, "status32_type", 4); + tdesc_add_flag (type_with_fields, 0, "H"); + tdesc_add_bitfield (type_with_fields, "E", 1, 4); + tdesc_add_flag (type_with_fields, 5, "AE"); + tdesc_add_flag (type_with_fields, 6, "DE"); + tdesc_add_flag (type_with_fields, 7, "U"); + tdesc_add_flag (type_with_fields, 8, "V"); + tdesc_add_flag (type_with_fields, 9, "C"); + tdesc_add_flag (type_with_fields, 10, "N"); + tdesc_add_flag (type_with_fields, 11, "Z"); + tdesc_add_flag (type_with_fields, 12, "L"); + tdesc_add_flag (type_with_fields, 13, "DZ"); + tdesc_add_flag (type_with_fields, 14, "SC"); + tdesc_add_flag (type_with_fields, 15, "ES"); + tdesc_add_bitfield (type_with_fields, "RB", 16, 18); + tdesc_add_flag (type_with_fields, 19, "AD"); + tdesc_add_flag (type_with_fields, 20, "US"); + tdesc_add_flag (type_with_fields, 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 00000000000..2701fad72dc --- /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 00000000000..7d9a4b23c21 --- /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 "gdbsupport/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"); + 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, NULL, 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 00000000000..9209891b41a --- /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 00000000000..d37da990457 --- /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 "gdbsupport/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"); + 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, NULL, 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, NULL, 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 00000000000..1b17968fb2e --- /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 04711ba2fa5..7909fee7d5c 100644 --- a/gdb/target-descriptions.c +++ b/gdb/target-descriptions.c @@ -1715,7 +1715,9 @@ maint_print_c_tdesc_cmd (const char *args, int from_tty) || startswith (filename_after_features.c_str (), "riscv/") || startswith (filename_after_features.c_str (), "tic6x-") || startswith (filename_after_features.c_str (), "aarch64") - || startswith (filename_after_features.c_str (), "arm/")) + || startswith (filename_after_features.c_str (), "arm/") + || startswith (filename_after_features.c_str (), "arc/core-") + || startswith (filename_after_features.c_str (), "arc/aux-")) { print_c_feature v (filename_after_features);