diff options
author | Yao Qi <yao.qi@linaro.org> | 2017-11-24 09:29:43 +0000 |
---|---|---|
committer | Yao Qi <yao.qi@linaro.org> | 2017-11-24 09:29:43 +0000 |
commit | 506fe5f4996738f25b7c26f126a84b231429ba95 (patch) | |
tree | f2fac3f4ca6c8ced4d56577f75022d6c0cba0b03 /gdb/arch | |
parent | 6d2cd6b2084d980a4baf5b4bdce8499c2295a672 (diff) | |
download | gdb-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.c | 47 | ||||
-rw-r--r-- | gdb/arch/tic6x.h | 26 |
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); |