Extract Linux-specific portitions of cris-tdep.c to a new file.
This brings in some standard functionality hitherdo missing from the CRIS/CRISv32 port thanks to the new call to gdbarch_init_osabi, as well as clearly showing that there is Linux support for this platform by virtue of the existence of a cris-linux-tdep.c file. 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.
This commit is contained in:
parent
43df09d937
commit
749c8b38fa
@ -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
|
||||
|
@ -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 \
|
||||
|
@ -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-*-*)
|
||||
|
57
gdb/cris-linux-tdep.c
Normal file
57
gdb/cris-linux-tdep.c
Normal file
@ -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);
|
||||
}
|
@ -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? */
|
||||
|
34
gdb/cris-tdep.h
Normal file
34
gdb/cris-tdep.h
Normal file
@ -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 */
|
Loading…
Reference in New Issue
Block a user