aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog13
-rw-r--r--gdb/Makefile.in2
-rw-r--r--gdb/configure.tgt2
-rw-r--r--gdb/cris-linux-tdep.c57
-rw-r--r--gdb/cris-tdep.c22
-rw-r--r--gdb/cris-tdep.h34
6 files changed, 112 insertions, 18 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 73032e2..2dddbf3 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,16 @@
+2013-09-06 Ricard Wanderlof <ricardw@axis.com>
+
+ * Makefile.in (ALL_TARGET_OBS): Add cris-linux-tdep.o.
+ * configure.tgt: Add cris-linux-tdep.o and linux-tdep.o to
+ gdb_target_obs for cris target.
+ * cris-tdep.c (struct gdbarch_tdep): Move to cris-tdep.h.
+ (cris_gdbarch_init): Move calls to
+ set_gdbarch_fetch_tls_load_module_address and
+ set_solib_svr4_fetch_link_map_offsets to cris-linux-tdep.c.
+ Add call to gdbarch_init_osabi.
+ * cris-linux-tdep.c: New file.
+ * cris-tdep.h: New file.
+
2013-09-06 Andrew Burgess <aburgess@broadcom.com>
* tui/tui-io.c (tui_initialize_io): Remove legacy comment referring
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index c75ec38..93a3d6a 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -550,7 +550,7 @@ ALL_TARGET_OBS = \
arm-tdep.o arm-wince-tdep.o \
avr-tdep.o \
bfin-linux-tdep.o bfin-tdep.o \
- cris-tdep.o \
+ cris-linux-tdep.o cris-tdep.o \
dicos-tdep.o \
frv-linux-tdep.o frv-tdep.o \
h8300-tdep.o \
diff --git a/gdb/configure.tgt b/gdb/configure.tgt
index 0ac4e33..95c7217 100644
--- a/gdb/configure.tgt
+++ b/gdb/configure.tgt
@@ -131,7 +131,7 @@ bfin-*-*)
cris*)
# Target: CRIS
- gdb_target_obs="cris-tdep.o solib-svr4.o"
+ gdb_target_obs="cris-tdep.o cris-linux-tdep.o linux-tdep.o solib-svr4.o"
;;
frv-*-*)
diff --git a/gdb/cris-linux-tdep.c b/gdb/cris-linux-tdep.c
new file mode 100644
index 0000000..ea6e2f0
--- /dev/null
+++ b/gdb/cris-linux-tdep.c
@@ -0,0 +1,57 @@
+/* Target-dependent code for GNU/Linux on CRIS processors, for GDB.
+
+ Copyright (C) 2001-2013 Free Software Foundation, Inc.
+
+ Contributed by Axis Communications AB.
+ Written by Hendrik Ruijter, Stefan Andersson, Orjan Friberg,
+ Edgar Iglesias and Ricard Wanderlof.
+
+ 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 "defs.h"
+#include "osabi.h"
+#include "linux-tdep.h"
+#include "solib-svr4.h"
+#include "symtab.h"
+
+#include "cris-tdep.h"
+
+static void
+cris_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+
+ linux_init_abi (info, gdbarch);
+
+ if (tdep->cris_version == 32)
+ /* Threaded debugging is only supported on CRISv32 for now. */
+ set_gdbarch_fetch_tls_load_module_address (gdbarch,
+ svr4_fetch_objfile_link_map);
+
+ set_solib_svr4_fetch_link_map_offsets (gdbarch,
+ svr4_ilp32_fetch_link_map_offsets);
+
+}
+
+/* Provide a prototype to silence -Wmissing-prototypes. */
+extern initialize_file_ftype _initialize_cris_linux_tdep;
+
+void
+_initialize_cris_linux_tdep (void)
+{
+ gdbarch_register_osabi (bfd_arch_cris, 0, GDB_OSABI_LINUX,
+ cris_linux_init_abi);
+}
diff --git a/gdb/cris-tdep.c b/gdb/cris-tdep.c
index ef2746d..8ba1677 100644
--- a/gdb/cris-tdep.c
+++ b/gdb/cris-tdep.c
@@ -34,6 +34,7 @@
#include "target.h"
#include "value.h"
#include "opcode/cris.h"
+#include "osabi.h"
#include "arch-utils.h"
#include "regcache.h"
#include "gdb_assert.h"
@@ -45,6 +46,8 @@
#include "gdb_string.h"
#include "dis-asm.h"
+#include "cris-tdep.h"
+
enum cris_num_regs
{
/* There are no floating point registers. Used in gdbserver low-linux.c. */
@@ -164,14 +167,6 @@ static const char *usr_cmd_cris_mode = cris_mode_normal;
/* Whether to make use of Dwarf-2 CFI (default on). */
static int usr_cmd_cris_dwarf2_cfi = 1;
-/* CRIS architecture specific information. */
-struct gdbarch_tdep
-{
- unsigned int cris_version;
- const char *cris_mode;
- int cris_dwarf2_cfi;
-};
-
/* Sigtramp identification code copied from i386-linux-tdep.c. */
#define SIGTRAMP_INSN0 0x9c5f /* movu.w 0xXX, $r9 */
@@ -4137,11 +4132,6 @@ cris_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_single_step_through_delay
(gdbarch, crisv32_single_step_through_delay);
- /* FIXME: Ricard W/2013-09-03: Linux-specific stuff like this
- should really go in (a new) cris-linux-tdep.c. */
- set_gdbarch_fetch_tls_load_module_address (gdbarch,
- svr4_fetch_objfile_link_map);
-
break;
default:
@@ -4181,9 +4171,9 @@ cris_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
frame_unwind_append_unwinder (gdbarch, &cris_frame_unwind);
frame_base_set_default (gdbarch, &cris_frame_base);
- set_solib_svr4_fetch_link_map_offsets
- (gdbarch, svr4_ilp32_fetch_link_map_offsets);
-
+ /* Hook in ABI-specific overrides, if they have been registered. */
+ gdbarch_init_osabi (info, gdbarch);
+
/* FIXME: cagney/2003-08-27: It should be possible to select a CRIS
disassembler, even when there is no BFD. Does something like
"gdb; target remote; disassmeble *0x123" work? */
diff --git a/gdb/cris-tdep.h b/gdb/cris-tdep.h
new file mode 100644
index 0000000..247f91f
--- /dev/null
+++ b/gdb/cris-tdep.h
@@ -0,0 +1,34 @@
+/* Target dependent code for CRIS, for GDB, the GNU debugger.
+
+ Copyright (C) 2001-2013 Free Software Foundation, Inc.
+
+ Contributed by Axis Communications AB.
+ Written by Hendrik Ruijter, Stefan Andersson, and Orjan Friberg.
+
+ 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 CRIS_TDEP_H
+#define CRIS_TDEP_H
+
+/* CRIS architecture specific information. */
+struct gdbarch_tdep
+{
+ unsigned int cris_version;
+ const char *cris_mode;
+ int cris_dwarf2_cfi;
+};
+
+#endif /* CRIS_TDEP_H */