aboutsummaryrefslogtreecommitdiff
path: root/gdb/arch
diff options
context:
space:
mode:
authorYao Qi <yao.qi@linaro.org>2017-11-24 09:29:43 +0000
committerYao Qi <yao.qi@linaro.org>2017-11-24 09:29:43 +0000
commit506fe5f4996738f25b7c26f126a84b231429ba95 (patch)
treef2fac3f4ca6c8ced4d56577f75022d6c0cba0b03 /gdb/arch
parent6d2cd6b2084d980a4baf5b4bdce8499c2295a672 (diff)
downloadgdb-506fe5f4996738f25b7c26f126a84b231429ba95.zip
gdb-506fe5f4996738f25b7c26f126a84b231429ba95.tar.gz
gdb-506fe5f4996738f25b7c26f126a84b231429ba95.tar.bz2
Change tic6x target descriptions
This patch changes tic6x target descriptions to be more flexible. Rebuild tic6x-uclinux GDBserver with my x86 g++, and the unit test passes. gdb: 2017-11-24 Yao Qi <yao.qi@linaro.org> * arch/tic6x.c: New file. * arch/tic6x.h: New file. * features/Makefile (FEATURE_XMLFILES): Add tic6x-c6xp.xml, tic6x-core.xml and tic6x-gp.xml. * features/tic6x-c6xp.c: Generated. * features/tic6x-core.c: Generated. * features/tic6x-gp.c: Generated. * target-descriptions.c (maint_print_c_tdesc_cmd): Match "tic6x-". gdb/gdbserver: 2017-11-24 Yao Qi <yao.qi@linaro.org> * configure.srv: Set $srv_regobj for tic6x-linux. * linux-tic6x-low.c: Include "arch/tic6x.h" and "tdesc.h". (tic6x_read_description): Move some code to tic6x_arch_setup. (tic6x_tdesc_test): New function. (initialize_low_arch): Call selftests::register_test.
Diffstat (limited to 'gdb/arch')
-rw-r--r--gdb/arch/tic6x.c47
-rw-r--r--gdb/arch/tic6x.h26
2 files changed, 73 insertions, 0 deletions
diff --git a/gdb/arch/tic6x.c b/gdb/arch/tic6x.c
new file mode 100644
index 0000000..5355b88
--- /dev/null
+++ b/gdb/arch/tic6x.c
@@ -0,0 +1,47 @@
+/* Copyright (C) 2017 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include "tdesc.h"
+#include "tic6x.h"
+#include "common/common-defs.h"
+
+#include "../features/tic6x-core.c"
+#include "../features/tic6x-gp.c"
+#include "../features/tic6x-c6xp.c"
+
+/* Create tic6x target descriptions according to FEATURE. */
+
+target_desc *
+tic6x_create_target_description (enum c6x_feature feature)
+{
+ target_desc *tdesc = allocate_target_description ();
+
+ set_tdesc_architecture (tdesc, "tic6x");
+ set_tdesc_osabi (tdesc, "GNU/Linux");
+
+ long regnum = 0;
+
+ regnum = create_feature_tic6x_core (tdesc, regnum);
+
+ if (feature == C6X_GP || feature == C6X_C6XP)
+ regnum = create_feature_tic6x_gp (tdesc, regnum);
+
+ if (feature == C6X_C6XP)
+ regnum = create_feature_tic6x_c6xp (tdesc, regnum);
+
+ return tdesc;
+}
diff --git a/gdb/arch/tic6x.h b/gdb/arch/tic6x.h
new file mode 100644
index 0000000..1575af0
--- /dev/null
+++ b/gdb/arch/tic6x.h
@@ -0,0 +1,26 @@
+/* Copyright (C) 2017 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+enum c6x_feature
+{
+ C6X_CORE,
+ C6X_GP,
+ C6X_C6XP,
+ C6X_LAST,
+};
+
+target_desc *tic6x_create_target_description (enum c6x_feature feature);