aboutsummaryrefslogtreecommitdiff
path: root/gdb/arch
diff options
context:
space:
mode:
authorAnton Kolesov <Anton.Kolesov@synopsys.com>2017-10-25 21:51:54 +0300
committerShahab Vahedi <shahab@synopsys.com>2020-03-16 22:53:10 +0100
commit817a7585764366397879cbbedfd7e9c1454b656c (patch)
treeee49e58f1c4723d8b45afa836425b748b428911a /gdb/arch
parent67430cd00afcc270a27e44b10f9ef4249d554e66 (diff)
downloadgdb-817a7585764366397879cbbedfd7e9c1454b656c.zip
gdb-817a7585764366397879cbbedfd7e9c1454b656c.tar.gz
gdb-817a7585764366397879cbbedfd7e9c1454b656c.tar.bz2
arc: Migrate to new target features
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. Changed pattern checking for ARC features from "arc/{aux,core}" to "arc/". v3: Added include gaurds to arc.h. Added arc_read_description to _create_ target descriptions less. v4: Got rid of ARC_SYS_TYPE_NONE. Renamed ARC_SYS_TYPE_INVALID to ARC_SYS_TYPE_NUM. Fixed a few indentations/curly braces. Converted arc_sys_type_to_str from a macro to an inline function. gdb/ChangeLog: 2020-03-16 Anton Kolesov <anton.kolesov@synopsys.com> Shahab Vahedi <shahab@synopsys.com> * 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.
Diffstat (limited to 'gdb/arch')
-rw-r--r--gdb/arch/arc.c58
-rw-r--r--gdb/arch/arc.h48
2 files changed, 106 insertions, 0 deletions
diff --git a/gdb/arch/arc.c b/gdb/arch/arc.c
new file mode 100644
index 0000000..9552b4a
--- /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 <http://www.gnu.org/licenses/>. */
+
+
+#include "gdbsupport/common-defs.h"
+#include <stdlib.h>
+
+#include "arc.h"
+
+/* Target description features. */
+#include "features/arc/core-v2.c"
+#include "features/arc/aux-v2.c"
+#include "features/arc/core-arcompact.c"
+#include "features/arc/aux-arcompact.c"
+
+/* 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 0000000..fd806ae
--- /dev/null
+++ b/gdb/arch/arc.h
@@ -0,0 +1,48 @@
+/* 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 <http://www.gnu.org/licenses/>. */
+
+#ifndef ARCH_ARC_H
+#define ARCH_ARC_H
+
+#include "gdbsupport/tdesc.h"
+
+/* Supported ARC system hardware types. */
+enum arc_sys_type
+{
+ ARC_SYS_TYPE_ARCOMPACT = 0, /* ARC600 or ARC700 */
+ ARC_SYS_TYPE_ARCV2, /* ARC EM or ARC HS */
+ ARC_SYS_TYPE_NUM
+};
+
+static inline const char *
+arc_sys_type_to_str (const arc_sys_type type)
+{
+ switch (type)
+ {
+ case ARC_SYS_TYPE_ARCOMPACT:
+ return "ARC_SYS_TYPE_ARCOMPACT";
+ case ARC_SYS_TYPE_ARCV2:
+ return "ARC_SYS_TYPE_ARCV2";
+ default:
+ return "Invalid";
+ }
+}
+
+/* Create target description for the specified system type. */
+target_desc *arc_create_target_description (arc_sys_type sys_type);
+
+#endif /* ARCH_ARC_H */