* config/arm/embed.mt (DEPRECATED_TM_FILE): Set to tm-arm.h.

* config/arm/tm-embed.h: Delete file.

	* arm-tdep.h (arm_software_single_step): Declare.
	* arm-tdep.c (arm_software_single_step): Make global.
	(arm_gdbarch_init): Move set_gdbarch_software_single_step call
	from here to ...
	* arm-linux-tdep.c (arm_linux_init_abi): ... here ...
	* armnbsd-tdep.c (arm_netbsd_init_abi_common): ... here ...
	* armobsd-tdep.c (armobsd_init_abi): ... here ...
	* arm-wince-tdep.c (arm_wince_init_abi): ... and here.

	* arm-tdep.c (ARM_LE_BREAKPOINT, ARM_BE_BREAKPOINT): No longer
	allow defines to be overriden by TM file.
	(THUMB_LE_BREAKPOINT, THUMB_BE_BREAKPOINT): Likewise.  Also,
	change default to {0xbe,0xbe}.
	* armobsd-tdep.c (arm_obsd_thumb_le_breakpoint,
	arm_obsd_thumb_be_breakpoint): New global variables.
	(armobsd_init_abi): Override tdep->thumb_breakpoint and
	tdep->thumb_breakpoint_size.
	* arm-wince-tdep.c (arm_wince_thumb_le_breakpoint): New variable.
	(arm_wince_init_abi): Override tdep->thumb_breakpoint and
	tdep->thumb_breakpoint_size.

	* arm-tdep.c (arm_gdbarch_init): Add set_gdbarch_skip_trampoline_code.
This commit is contained in:
Ulrich Weigand 2007-05-16 15:31:12 +00:00
parent bb63802a4f
commit 190dce0965
9 changed files with 70 additions and 67 deletions

View file

@ -1,3 +1,31 @@
2007-05-16 Ulrich Weigand <uweigand@de.ibm.com>
* config/arm/embed.mt (DEPRECATED_TM_FILE): Set to tm-arm.h.
* config/arm/tm-embed.h: Delete file.
* arm-tdep.h (arm_software_single_step): Declare.
* arm-tdep.c (arm_software_single_step): Make global.
(arm_gdbarch_init): Move set_gdbarch_software_single_step call
from here to ...
* arm-linux-tdep.c (arm_linux_init_abi): ... here ...
* armnbsd-tdep.c (arm_netbsd_init_abi_common): ... here ...
* armobsd-tdep.c (armobsd_init_abi): ... here ...
* arm-wince-tdep.c (arm_wince_init_abi): ... and here.
* arm-tdep.c (ARM_LE_BREAKPOINT, ARM_BE_BREAKPOINT): No longer
allow defines to be overriden by TM file.
(THUMB_LE_BREAKPOINT, THUMB_BE_BREAKPOINT): Likewise. Also,
change default to {0xbe,0xbe}.
* armobsd-tdep.c (arm_obsd_thumb_le_breakpoint,
arm_obsd_thumb_be_breakpoint): New global variables.
(armobsd_init_abi): Override tdep->thumb_breakpoint and
tdep->thumb_breakpoint_size.
* arm-wince-tdep.c (arm_wince_thumb_le_breakpoint): New variable.
(arm_wince_init_abi): Override tdep->thumb_breakpoint and
tdep->thumb_breakpoint_size.
* arm-tdep.c (arm_gdbarch_init): Add set_gdbarch_skip_trampoline_code.
2007-05-16 Daniel Jacobowitz <dan@codesourcery.com>
* NEWS: Mention removed "set mips stack-arg-size" and "set mips

View file

@ -605,6 +605,9 @@ arm_linux_init_abi (struct gdbarch_info info,
set_solib_svr4_fetch_link_map_offsets
(gdbarch, svr4_ilp32_fetch_link_map_offsets);
/* Single stepping. */
set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
/* Shared library handling. */
set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
set_gdbarch_skip_solib_resolver (gdbarch, glibc_skip_solib_resolver);

View file

@ -1904,7 +1904,7 @@ arm_get_next_pc (CORE_ADDR pc)
single-step support. We find the target of the coming instruction
and breakpoint it. */
static int
int
arm_software_single_step (struct regcache *regcache)
{
/* NOTE: This may insert the wrong breakpoint instruction when
@ -1989,21 +1989,10 @@ gdb_print_insn_arm (bfd_vma memaddr, disassemble_info *info)
instruction to force a trap. This can be handled by by the
abi-specific code during establishment of the gdbarch vector. */
/* NOTE rearnsha 2002-02-18: for now we allow a non-multi-arch gdb to
override these definitions. */
#ifndef ARM_LE_BREAKPOINT
#define ARM_LE_BREAKPOINT {0xFE,0xDE,0xFF,0xE7}
#endif
#ifndef ARM_BE_BREAKPOINT
#define ARM_BE_BREAKPOINT {0xE7,0xFF,0xDE,0xFE}
#endif
#ifndef THUMB_LE_BREAKPOINT
#define THUMB_LE_BREAKPOINT {0xfe,0xdf}
#endif
#ifndef THUMB_BE_BREAKPOINT
#define THUMB_BE_BREAKPOINT {0xdf,0xfe}
#endif
#define THUMB_LE_BREAKPOINT {0xbe,0xbe}
#define THUMB_BE_BREAKPOINT {0xbe,0xbe}
static const char arm_default_arm_le_breakpoint[] = ARM_LE_BREAKPOINT;
static const char arm_default_arm_be_breakpoint[] = ARM_BE_BREAKPOINT;
@ -2939,6 +2928,9 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
/* Advance PC across function entry code. */
set_gdbarch_skip_prologue (gdbarch, arm_skip_prologue);
/* Skip trampolines. */
set_gdbarch_skip_trampoline_code (gdbarch, arm_skip_stub);
/* The stack grows downward. */
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
@ -2969,10 +2961,6 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
/* Returning results. */
set_gdbarch_return_value (gdbarch, arm_return_value);
/* Single stepping. */
/* XXX For an RDI target we should ask the target if it can single-step. */
set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
/* Disassembly. */
set_gdbarch_print_insn (gdbarch, gdb_print_insn_arm);

View file

@ -182,6 +182,8 @@ struct gdbarch_tdep
#define LOWEST_PC (gdbarch_tdep (current_gdbarch)->lowest_pc)
#endif
int arm_software_single_step (struct regcache *);
/* Functions exported from armbsd-tdep.h. */
/* Return the appropriate register set for the core section identified

View file

@ -30,6 +30,7 @@
#include "arm-tdep.h"
static const char arm_wince_le_breakpoint[] = { 0x10, 0x00, 0x00, 0xe6 };
static const char arm_wince_thumb_le_breakpoint[] = { 0xfe, 0xdf };
/* Description of the longjmp buffer. */
#define ARM_WINCE_JB_ELEMENT_SIZE INT_REGISTER_SIZE
@ -42,6 +43,8 @@ arm_wince_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
tdep->arm_breakpoint = arm_wince_le_breakpoint;
tdep->arm_breakpoint_size = sizeof (arm_wince_le_breakpoint);
tdep->thumb_breakpoint = arm_wince_thumb_le_breakpoint;
tdep->thumb_breakpoint_size = sizeof (arm_wince_thumb_le_breakpoint);
tdep->struct_return = pcc_struct_return;
tdep->fp_model = ARM_FLOAT_SOFT_VFP;
@ -57,6 +60,9 @@ arm_wince_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
/* Shared library handling. */
set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
/* Single stepping. */
set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
}
static enum gdb_osabi

View file

@ -68,6 +68,9 @@ arm_netbsd_init_abi_common (struct gdbarch_info info,
tdep->jb_pc = ARM_NBSD_JB_PC;
tdep->jb_elt_size = ARM_NBSD_JB_ELEMENT_SIZE;
/* Single stepping. */
set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
}
static void

View file

@ -72,6 +72,10 @@ static const struct tramp_frame armobsd_sigframe =
};
/* Override default thumb breakpoints. */
static const char arm_obsd_thumb_le_breakpoint[] = {0xfe, 0xdf};
static const char arm_obsd_thumb_be_breakpoint[] = {0xdf, 0xfe};
static void
armobsd_init_abi (struct gdbarch_info info,
struct gdbarch *gdbarch)
@ -96,6 +100,23 @@ armobsd_init_abi (struct gdbarch_info info,
/* OpenBSD/arm uses -fpcc-struct-return by default. */
tdep->struct_return = pcc_struct_return;
/* Single stepping. */
set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
/* Breakpoints. */
switch (info.byte_order)
{
case BFD_ENDIAN_BIG:
tdep->thumb_breakpoint = arm_obsd_thumb_be_breakpoint;
tdep->thumb_breakpoint_size = sizeof (arm_obsd_thumb_be_breakpoint);
break;
case BFD_ENDIAN_LITTLE:
tdep->thumb_breakpoint = arm_obsd_thumb_le_breakpoint;
tdep->thumb_breakpoint_size = sizeof (arm_obsd_thumb_le_breakpoint);
break;
}
}

View file

@ -1,6 +1,6 @@
# Target: ARM embedded system
TDEPFILES= arm-tdep.o
DEPRECATED_TM_FILE= tm-embed.h
DEPRECATED_TM_FILE= tm-arm.h
SIM_OBS = remote-sim.o
SIM = ../sim/arm/libsim.a

View file

@ -1,48 +0,0 @@
/* Definitions to target GDB to ARM embedded systems.
Copyright 1986, 1987, 1988, 1989, 1991, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2007 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 2 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, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef TM_ARMEMBED_H
#define TM_ARMEMBED_H
/* Include the common ARM definitions. */
#include "arm/tm-arm.h"
/* The remote stub should be able to single-step. */
#undef SOFTWARE_SINGLE_STEP_P
#define SOFTWARE_SINGLE_STEP_P() 0
/* The first 0x20 bytes are the trap vectors. */
#undef LOWEST_PC
#define LOWEST_PC 0x20
/* Override defaults. */
#undef THUMB_LE_BREAKPOINT
#define THUMB_LE_BREAKPOINT {0xbe,0xbe}
#undef THUMB_BE_BREAKPOINT
#define THUMB_BE_BREAKPOINT {0xbe,0xbe}
/* Functions for dealing with Thumb call thunks. */
#define SKIP_TRAMPOLINE_CODE(pc) arm_skip_stub (pc)
extern int arm_in_call_stub (CORE_ADDR pc, char *name);
extern CORE_ADDR arm_skip_stub (CORE_ADDR pc);
#endif /* TM_ARMEMBED_H */