+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
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 \
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-*-*)
--- /dev/null
+/* 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);
+}
#include "target.h"
#include "value.h"
#include "opcode/cris.h"
+#include "osabi.h"
#include "arch-utils.h"
#include "regcache.h"
#include "gdb_assert.h"
#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. */
/* 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 */
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:
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? */
--- /dev/null
+/* 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 */