From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by sourceware.org (Postfix) with ESMTPS id 94A8E393742C for ; Fri, 13 Mar 2020 10:37:18 +0000 (GMT) Received: by mail-wr1-x442.google.com with SMTP id s5so11455834wrg.3 for ; Fri, 13 Mar 2020 03:37:18 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=AYM4FWwEW/18v5PdRzcBowfj1CkfHKPjOjk2dUGwG9M=; b=opj8oIE9HGxsUIkACCyLkH6x8S/lYOtpyDHOYcdqDry9H+KiPChOWihrPBkgpWzTha iLn0TpQ8uPOGySK7S6zjLKCKt+Y9eRMh4xHMQbWvU1uoMZNA5ugP0ofNT0bcdEJtgiaN Y/U7aA5sDJEAtcczr9kj0SsOyBbdB8bYaNo0LaHI4sgAfx0ThEMyP9nOE7rTLAtiMqqS BP+lD5iaHS0O2YXZM8vJyO0eEm5aaJQ/QZfp9mEldVP5JNVXuS6MTPj257hlic+S9kXz j0HMP5fGUvR12EEy3+idV/4ctaR26KEjE6x3u4Sz+JD0kOEmi6tnUEu0TCiCJsYhN0uw heqA== X-Gm-Message-State: ANhLgQ1SKfusIJyDPWZ117mhIq1/G2r9N9G9wWHBzwHAM80yruLnOo+Q R2OiXPRSHZhzeorsSiRl7fLBN2lT X-Google-Smtp-Source: ADFU+vvkyhkPKBkDRuPsWVeL47kyhPd82VksbvmEDt1kSZydz0KJ30Udx3RSkAFjb+JBA00YDzr+8g== X-Received: by 2002:a05:6000:1107:: with SMTP id z7mr18335346wrw.340.1584095836354; Fri, 13 Mar 2020 03:37:16 -0700 (PDT) Received: from atlantis.home ([2a03:1b20:3:f011::6d]) by smtp.gmail.com with ESMTPSA id n11sm7415045wrt.74.2020.03.13.03.37.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 13 Mar 2020 03:37:15 -0700 (PDT) From: Shahab Vahedi To: gdb-patches@sourceware.org Cc: Shahab Vahedi , Shahab Vahedi , Anton Kolesov , Simon Marchi , Francois Bedard , Anton Kolesov Subject: [PATCH v3] arc: Migrate to new target features Date: Fri, 13 Mar 2020 11:37:12 +0100 Message-Id: <20200313103712.5458-1-shahab.vahedi@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200305160552.29193-1-shahab.vahedi@gmail.com> References: <20200305160552.29193-1-shahab.vahedi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-27.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Mar 2020 10:37:21 -0000 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. v2: Removed arc.c from ALLDEPFILES in gdb/Makefile.in. Removed vim modeline from arc-tdep.c to have it in a separate patch. Removed braces from one line "if/else". Undid the type change for "jb_pc" (kept it as "int"). Joined the unnecessary line breaks into one line. No more moving around arm targets in gdb/features/Makefile. v3: Added include gaurds to arc.h. Added arc_read_description to _create_ target descriptions less. gdb/ChangeLog: 2017-10-25 Anton Kolesov Shahab Vahedi * Makefile.in: Add arch/arc.o * configure.tgt: Likewise. * arc-tdep.c (arc_tdesc_init): Use arc_read_description. (_initialize_arc_tdep): Don't initialize old target descriptions. (arc_read_description): New function to cache target descriptions. * arc-tdep.h (arc_read_description): Add proto type. * 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 | 2 + gdb/arc-tdep.c | 59 ++++++++++++------ gdb/arc-tdep.h | 4 ++ gdb/arch/arc.c | 58 ++++++++++++++++++ gdb/arch/arc.h | 41 +++++++++++++ gdb/configure.tgt | 2 +- gdb/features/Makefile | 6 +- 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 | 3 +- 20 files changed, 492 insertions(+), 351 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..532b17c6310 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 \ diff --git a/gdb/arc-tdep.c b/gdb/arc-tdep.c index ac98f03efc1..2f865f3fcaf 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 @@ -147,6 +146,9 @@ static const char *const core_arcompact_register_names[] = { static char *arc_disassembler_options = NULL; +/* Possible arc target descriptors. */ +static struct target_desc *tdesc_arc_list[ARC_SYS_TYPE_INVALID]; + /* Functions are sorted in the order as they are used in the _initialize_arc_tdep (), which uses the same order as gdbarch.h. Static functions are defined before the first invocation. */ @@ -1750,21 +1752,13 @@ arc_tdesc_init (struct gdbarch_info info, const struct target_desc **tdesc, const char *const *core_regs; const char *core_feature_name; - /* If target doesn't provide a description - use default one. */ + /* If target doesn't provide a description, use the default ones. */ 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"); - } + tdesc_loc = arc_read_description (ARC_SYS_TYPE_ARCV2); else - { - tdesc_loc = tdesc_arc_arcompact; - if (arc_debug) - debug_printf ("arc: Using default register set for ARCompact.\n"); - } + tdesc_loc = arc_read_description (ARC_SYS_TYPE_ARCOMPACT); } else { @@ -2145,15 +2139,44 @@ dump_arc_instruction_command (const char *args, int from_tty) arc_insn_dump (insn); } +/* See arc-tdep.h. */ + +const target_desc * +arc_read_description (arc_sys_type sys_type) +{ + if (arc_debug) + debug_printf ("arc: Reading target description for \"%s\".\n", + arc_sys_type_to_str (sys_type)); + + gdb_assert ((sys_type > 0) && (sys_type < ARC_SYS_TYPE_INVALID)); + struct target_desc *tdesc = tdesc_arc_list[sys_type]; + + if (tdesc == nullptr) + { + tdesc = arc_create_target_description (sys_type); + tdesc_arc_list[sys_type] = tdesc; + + if (arc_debug) + { + const char *arch = tdesc_architecture_name (tdesc); + const char *abi = tdesc_osabi_name (tdesc); + arch = arch ? arch : ""; + abi = abi ? abi : ""; + debug_printf ("arc: Created target description for " + "\"%s\": arch=\"%s\", ABI=\"%s\"\n", + arc_sys_type_to_str (sys_type), arch, abi); + } + } + + return tdesc; +} + void _initialize_arc_tdep (); void _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. */ diff --git a/gdb/arc-tdep.h b/gdb/arc-tdep.h index bd0096741ff..d72332c7638 100644 --- a/gdb/arc-tdep.h +++ b/gdb/arc-tdep.h @@ -23,6 +23,7 @@ /* Need disassemble_info. */ #include "dis-asm.h" +#include "arch/arc.h" /* To simplify GDB code this enum assumes that internal regnums should be same as architectural register numbers, i.e. PCL regnum is 63. This allows to @@ -163,4 +164,7 @@ CORE_ADDR arc_insn_get_branch_target (const struct arc_instruction &insn); CORE_ADDR arc_insn_get_linear_next_pc (const struct arc_instruction &insn); +/* Get the correct ARC target description for the given system type. */ +const target_desc *arc_read_description (arc_sys_type sys_type); + #endif /* ARC_TDEP_H */ diff --git a/gdb/arch/arc.c b/gdb/arch/arc.c new file mode 100644 index 00000000000..9552b4aff97 --- /dev/null +++ b/gdb/arch/arc.c @@ -0,0 +1,58 @@ +/* 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" + +/* See arc.h. */ + +target_desc * +arc_create_target_description (arc_sys_type sys_type) +{ + target_desc *tdesc = allocate_target_description (); + + long regnum = 0; + +#ifndef IN_PROCESS_AGENT + if (sys_type == ARC_SYS_TYPE_ARCV2) + set_tdesc_architecture (tdesc, "arc:ARCv2"); + else + set_tdesc_architecture (tdesc, "arc:ARC700"); +#endif + + if (sys_type == ARC_SYS_TYPE_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..0cb5a845ac1 --- /dev/null +++ b/gdb/arch/arc.h @@ -0,0 +1,41 @@ +/* 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 . */ + +#ifndef ARCH_ARC_H +#define ARCH_ARC_H + +#include "gdbsupport/tdesc.h" + +/* Supported ARC system hardware types. */ +enum arc_sys_type { + ARC_SYS_TYPE_NONE = 0, + ARC_SYS_TYPE_ARCOMPACT, /* ARC600 or ARC700 */ + ARC_SYS_TYPE_ARCV2, /* ARC EM or ARC HS */ + ARC_SYS_TYPE_INVALID +}; + +#define arc_sys_type_to_str(x) \ + (x == ARC_SYS_TYPE_NONE ? "ARC_SYS_TYPE_NONE" : \ + (x == ARC_SYS_TYPE_ARCOMPACT ? "ARC_SYS_TYPE_ARCOMPACT" : \ + (x == ARC_SYS_TYPE_ARCV2 ? "ARC_SYS_TYPE_ARCV2" : \ + (x == ARC_SYS_TYPE_INVALID ? "ARC_SYS_TYPE_INVALID" : \ + "Unknown")))) + +/* Create target description for a target with specified parameters. */ +target_desc *arc_create_target_description (arc_sys_type sys_type); + +#endif /* ARCH_ARC_H */ 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..cc65baa6eda 100644 --- a/gdb/features/Makefile +++ b/gdb/features/Makefile @@ -108,8 +108,6 @@ 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 \ microblaze-with-stack-protect.xml \ microblaze.xml \ mips-dsp-linux.xml \ @@ -206,6 +204,10 @@ $(outdir)/%.dat: %.xml number-regs.xsl sort-regs.xsl gdbserver-regs.xsl FEATURE_XMLFILES = aarch64-core.xml \ aarch64-fpu.xml \ aarch64-pauth.xml \ + arc/core-v2.xml \ + arc/aux-v2.xml \ + arc/core-arcompact.xml \ + arc/aux-arcompact.xml \ arm/arm-core.xml \ arm/arm-fpa.xml \ arm/arm-m-profile.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..4194819d9ab 100644 --- a/gdb/target-descriptions.c +++ b/gdb/target-descriptions.c @@ -1715,7 +1715,8 @@ 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/")) { print_c_feature v (filename_after_features); -- 2.25.1